PWN入门第二课(Integer Overflow)

详细的请见大神的博客:https://sploitfun.wordpress.com/2015/06/23/integer-overflow/,我这里只介绍我的实操。

PWN入门第二课(Integer Overflow)_第1张图片
gdb调试函数

用gdb调试函数知道,passwd_len存放在离ebp-9的字节处,由于存放的是字节,那么当字符串长度大于255的时候,会发生溢出,绕过了比较,然后进行字符串的拷贝,字符串拷贝发生缓冲区溢出。因为这里主要要计算,缓冲区离返回地址的值。从拷贝字符串函数前可以看出,ebp-0x14,知道缓冲区离ebp有20字节,加上ebp自身4字节。因此要覆盖eip的值,要填充24字节。
我们使用 "A"24+"B"4来测试下:

PWN入门第二课(Integer Overflow)_第2张图片
gdb调试程序

可以看到B覆盖了返回地址,然后记录esp的值。编码exp.py。
返回地址为ESP+一定NOP长度,我这里加上0x40。即:0xbffff040
(照理说不用NOP值的,直接ESP,但是不行)。


PWN入门第二课(Integer Overflow)_第3张图片
shellcode利用程序

直接执行此程序,获取shell。


PWN入门第二课(Integer Overflow)_第4张图片
获取shell

你可能感兴趣的:(PWN入门第二课(Integer Overflow))