shellcode生成和测试

step1 测试shellcode的代码

[PWN][知识小节]shellcode生成和测试_linux

step2 shellcode-32.asm源码

[PWN][知识小节]shellcode生成和测试_linux_02

step3

使用汇编器nasm把shellcode编译成.o文件

[PWN][知识小节]shellcode生成和测试_linux_03

step4 链接生成可执行文件

[PWN][知识小节]shellcode生成和测试_linux_04

step5 提取code段

[PWN][知识小节]shellcode生成和测试_可执行文件_05

[PWN][知识小节]shellcode生成和测试_可执行文件_06

[PWN][知识小节]shellcode生成和测试_python_07

①这里所谓的“二进制”,英文称为raw binary。这种程序只包含机器码。而ELF程序还包含有其它额外的信息,如段的加载地址,运行地址,重定位表,符号表。

②执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行;

FILE *fp = fopen("vmlinux.bin", "rb");

fread(VMLINUX_START, 1, VMLINUX_SIZE, fp);

((void (*)(void))VMLINUX_START)();

但是执行ELF程序则需要一个ELF Loader。

Linux内核启动的时候往往是没有ELF Loader的,所以,只能采用raw binary格式。

step6 用python来给shell测试程序发送shellcode

[PWN][知识小节]shellcode生成和测试_可执行文件_08

step7 测试

[PWN][知识小节]shellcode生成和测试_可执行文件_09

整体思路:

1、写好shellcode

2、用一个程序进行测试(提前编译好一份64的和32的)

3、启动我们的脚本来执行,提取编译好的c程序的有用代码code段

[PWN][知识小节]shellcode生成和测试_可执行文件_10

4、python读code段执行shell

希望大家有所收获!!!