20145331魏澍琛 《网络对抗技术》 PC平台逆向破解

学习任务

1、shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode 的地址。

2、Return-to-libc 攻击实验:即使栈有不可执行的能力,无法将shellcode放入堆栈中运行,但我们却可以直接让漏洞程序调转到现存的代码来实现我们的攻击。

注入Shellcode并执行

1、设置环境

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

2、以 anything+retaddr+nops+shellcode 的结构来构造,先估计返回地址所在位置,并且找到 shellcode 所在地址

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

3、验证返回地址所在位置以及找到 shellcode 地址,切记先别着急按回车,先另外打开一个终端!

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

4、找到正在执行的20145331pwn1的进程号

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

5、进入GDB,联上刚刚找到的进程号

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

6、在 ret 处设置断点,接着运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,并由此分析出返回地址位置的正确性以及shellcode的地址

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

7、继续运行,再次检测是否跳到覆盖的返回地址所表示的地方

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

8、将作为输入的 input_shellcode 处的 “\x10\x20\x30\x40” 换为上面所找到的 shellcode 地址 “\x31\xd3\xff\xff”,接着执行 20145331pwn1 ,shellcode成功注入!

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

Return-to-libc 攻击实验

1、进入 32 位 linux 环境。输入“/bin/bash”使用 bash

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

2、把漏洞程序代码保存为“retlib.c”,在 /tmp 目录下

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

3、编译

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

4、环境变量的程序“getenvaddr.c”,代码如下

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

5、攻击程序代码保存为“exploit.c”,在/tmp 目录下

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

6、用getenvaddr程序获得 BIN_SH 地址

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

7、用gdb获得system和exit地址

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

8、用得到的值去覆盖原exploit.c 文件的对应数据(BIN_SH+system+exit)

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

9、先运行攻击程序 exploit,再运行漏洞程序 retlib,可见攻击成功,获得了 root 权限,实验成功!

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解-LMLPHP

/.

个人痕迹好像不太明显。。。。

不过BIN_SH、system、exit的值每个人都应该不一样

./

04-17 07:59