什么是整数溢出
就比如一个unsigned char类型的存储区长度区间为[0,256],当长度为256+1时就会回溯为0;若长度0-1时会回溯为256。
例题:
ida分析
输入1进去login函数
发现最后会将buf传参进去check_passwd函数
可以看到if判断里是只有大于3字节和小于8字节长度的v3才能Sucess,
但我们需要构造的payload长度就超过8了。
看下汇编确实unsigned int V3规定的长度
那么我们输入的数若超过256就会发生回溯,比如257会回溯到0,依次类推,261是4,262是5,262是6,263是7,可以绕过if判断,那么构造payload
p=flat(b'a'*(0x14+4),bin)
p=p.ljust(263,b'0')
将payload用0补充刀263位。即可绕过。
Comments | NOTHING