20145219《网络对抗》PC平台逆向破解

20145219《网络对抗》PC平台逆向破解

shellcode注入

1、shellcode

shellcode是一段代码,溢出后,执行这段代码能开启系统shell。

2、构造方法

(1)nop+shellcode+retaddr(适用于缓冲区大的情况)

(2)retaddr+nop+shellcode(适用于缓冲区小的情况)

3、nop+shellcode+retaddr方法

用vim编写一段代码shellcode

安装execstack

设置堆栈可执行

查询地址随机化状态(2表示开启,0表示关闭),若是开启状态,则关闭地址随机化

采用nop+shellcode+retaddr方式构造payload,其中x4x3x2x1处是将来要填的shellcode起始地址,最后一个字符不能是x0a

打开一个新终端,将payload注入到pwn1中(此处pwn1复制了一份,并命名为20145219pwn)

在第一个终端中查询20145219pwn进程的UID

保持第二个终端如上图状态,再打开一个新终端,开启GDB,对20145219pwn进行调试

先用attach命令进入对应UID端口,进行追踪

设置断点

在GDB调试出现continue的时候,在第二个终端中敲一下回车,此时,第二个终端如下图,GDB调试也暂停在断点处

查看内存地址,最终找到shellcode起始地址为0xffffd300

将用nop+shellcode+retaddr方式构造的payload中的x4x3x2x1改为x00xd3xffxff,并在再次注入到20145219pwn中,观察结果看到注入失败……

4、retaddr+nop+shellcode方法

nop+shellcode+retaddr方式的基础上,在构造的payload的最前面,加上x00xd3xffxff,重新注入到20145219pwn中,观察结果看到注入成功_

参考文献

原文地址:https://www.cnblogs.com/20145219songge/p/6641825.html