整数溢出

发布于 2023-04-05  309 次阅读


什么是整数溢出

就比如一个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位。即可绕过。

整数溢出 - CTF Wiki (ctf-wiki.org)


穿过云层我试着努力向你奔跑