缓冲区溢出实验
0x00 实验要求
1.请对stackoverflow.exe和CCProxy.rar的溢出点(即输入数据长度为多少时,程序会发生溢出)进行定位。
说明:stackoverflow的用法为:stackoverflow.exe+参数
CCProxy的用法为:设CCProxy的IP地址为ip,则在(远程主机)命令行下用:ping ip +参数;
2.根据你定位的溢出点,思考:如果你的Shellcode长度为500字节,那么在两种情况下,Shellcode放在参数的什么位置比较有利用执行?
3.在以上基础上完成一次shellcode的植入与运行。
要求(1):Shellcode功能不限,可以是开端口、运行计算器(记事本)、添加帐号等 均可。
(2)Shellcode要求能够以参数的方式植入并覆盖栈空间。
(3)返回地址的EIP处只能填写jmp esp指令地址,不得填写shellcode的地址硬编码。
0x01 stackoverflow
溢出点的分析
首先打开是一个需要输入字符的界面,为了简便分析,使用OllyDbg进行分析,尝试输入一些字符
进行单步调试,查看一下输入的字符在什么地方显示作用
因此,在刚刚的地方0x401130
设置一个断点,然后进去仔细查看
发现刚刚输入的字符11111111
,之后调试时发现被压入地址中,并且在后面会压一个结束00
并且发现下面有一个return在0x401135
这正好是第一次调试时显示完字符后的地址,通过分析,如果将输入的字符覆盖此时的0x401135
,那样的话,返回地址将会被改变
先尝试一下16个1的情况1111111111111111
,发现地址被改变成原本进入函数的先前地方