网络对抗技术

逆向及Bof基础实践

本次实践的对象是一个名为pwn1的linux可执行文件。

该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。

我们将学习两种方法:

  • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。

  • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

基础知识

  • objdump命令反汇编目标文件;

  • bp:基址寄存器(stack pointer),一般在函数中用来保存进入函数时的sp的栈顶基址,SP用以指示栈顶的偏移地址,而BP可 作为堆栈区中的一个基地址;

  • eip是存放当前代码段的偏移地址。

posted on 2017-05-05 12:20  20145309李昊  阅读(99)  评论(0编辑  收藏  举报