文档详情

软件安全教学课件(鲁宏伟)缓冲区溢出溢出试验指导.pdf

发布:2017-07-05约3.93千字共8页下载文档
文本预览下载声明
《 软件安全核心技术与实践》 实验指导 实验 1 Win32 漏洞攻防工具使用与实例分析 实验目的  掌握 Win32 进程的原理;  掌握 PE 格式文件以及载入原理;  掌握反汇编代码分析工具分析原理与使用方法。 实验要求  需独立使用进程分析工具分析 Win32 进程空间信息;  以小组为单位完成反汇编分析以获得演示程序的序列号。  测试与掌握函数反汇编执行流程 实验环境  操作系统:Microsoft windows XP SP3  目标软件:DemoD.exe  分析工具:OllyDbg,Visual C++ 6.0 实验内容  学习 LordPE.EXE ,通过该工具了解PE 格式结构;  ProcessExplorer 工具,了解在 win32 进程空间的各个执行程序的分布;  练习使用 OllyDbg, 按照课堂讲解掌握该工具各个模块的功能;  使用 OllyDbg 打开 DemoD.exe,分析序列号。  分析各类函数的调用方法,指出其调用区别。 实验 2 缓冲区溢出漏洞分析与利用 实验目的  掌握缓冲区溢出的原理;  掌握缓冲区溢出漏洞的利用技巧;  理解缓冲区溢出漏洞的防范措施。 实验要求  找到并定位溢出点;  利用缓冲区溢出执行 shellcode 。 实验环境  操作系统:Microsoft windows XP SP3  溢出软件:CCPROXY  溢出工具:OllyDbg,Visual C++ 6.0 实验内容  寻找溢出点: CCPROXY 是一款代理服务器软件,通过主机机向代理端发送命令,然后代理 端向网络发送命令并且将结果返回给主机。本机与代理端的连接是通过 TCP 连 接的。 寻找溢出点的方法如下:首先用 telent 登陆 CCPROXY : 然后通过发送 ping 命令,主机名用超长的字符串进行填充。 如果没有发生溢出,代理端会返回 Host not found ,在命令行里输入比较长的字符 串比较麻烦,可以先使用在记事本里输入好字符串然后粘入命令行,测试当字 符串有 2000 个 a 时: 发现发生了溢出,这时需要对溢出点进行准确的定位,通过填充不同的字符串 的方法可以找到ping 后面跟的主机名的 1013 到 1016 这 4 个字节就应当是覆盖 到的 EIP 的地址。 这时便可以构造 shellcode 了。 首先,打开 Ollydbg 对代码进行跟踪,首先判断出应当是在回显 Host not found 的时候发生溢出,因此在WSAsend(004124F2)处下断点,然后单步执行。首先 将 ShellCode 填充的比较短时在运行了 call后发现在从 011366FE 时开 始 BUF 区中存放的是 Proxy TelnetCCProxy Telnet Service Ready. Telnet Host not found:后面是填充的字符串 这时可以考虑不需要在 JMP ESP 后往回跳,而是直接执行 ShellCode。加长 ShellCode 后,在 004303DC 处的返回时,此时的 EIP 便是填充的 JMP ESP 然后执行 7FFA4512 即JMP ESP ,而此时的代码为retn 0c 由于此时程序会返回 并且堆栈弹出 C 个字节即,JMP ESP 后会跳转到 011366F0+4+C处执 行。因此在字符串的前 4 个字节应当为无用的字节,从第五个字节开始便可以 用来写 ShellCode,构造的ping 主机名应当如下: 4 个字节的无用指令+ShellCode (最多可以从第5 个字节到 1012 个字节)+jmp esp(第 1013 个字节到第 1016 个)+最后的填充字节 (主要是为了将回显的字符串
显示全部
相似文档