目录
apt-get install gcc-multilib//安装gcc-multilib(生成多平台代码)
apt-get install wxhexeditor//安装wxhexeditor(16进制文本编辑器)
在开始前学习并实践Shellcode基础
gcc -o shellcode_generator shellcode_generator.c
./shellcode_generator /bin/bash```
1、使用vim
编写shellcode.c
2、编译生成可执行文件,执行查看效果
3、objdump -d shellcode | more //反汇编查看代码
找到main函数:
vim
编写newshellcode.asm
nasm -f newshellcode.nasm -o newshellcode.o //编译
ld -melf_i386 newshellcode.o -o newshellcode.bin //汇编与链接
./newshellcode.bin //运行
gcc -o getshellcode getshellcode.c
./getshellcode /bin/bash```
6、在C语言程序中进行调试
7、测试成功
8、使用实验一的第三个步骤的方法进行注入,结果如下
nasm:fatal:unable to open output file
解决方案:路径中包含_/+/-
等符号,重新设置路径即可编译通过
段错误
解决方案:GDB调试看main
函数的调用,Shellcode是以全局字符数组变量的形式存储在进程堆栈中的数据段中,数据段是没有可执行权限的,所以一旦PC寄存器进入到这里面,那么程序就会报错。用命令将要运行的程序用execstack
解除可执行栈的保护
原文:https://www.cnblogs.com/SANFENs/p/12452195.html