BUUCTF刷题之路-ciscn_2019_n_11

23 篇文章 1 订阅

检查了这题开启的保护:

 题目只开启了堆栈不可执行。无非就是不能在栈上执行shellcode无伤大雅。接着拖到IDA分析:

主函数很简单就调用了一个func函数,我们找到这个func函数看一看:

 非常简单的逻辑,类似于一个猜数字游戏,猜对了弹出flag,失败了还贴心的告诉你可能值。我们要做的就是修改v2变量的内容,让他等于11.28125。看到gets我们就能想到栈溢出,用户输入的值会存在v1这个字符型数组中,在内存布局中是这样的:

这次我们不需要覆盖返回地址只需要改v2的值就好了。接着我们算一下偏移【rbp-30h-rbp+4h】得到偏移为44个字节。意思就是说我们在44个字节之后填入11.28125覆盖v2的值就能使if语句成立。利用如下:

from pwn import *
sh=remote('node4.buuoj.cn',27426)
num=0x41348000
sh.sendline(b'A'*44 + p64(num))
sh.interactive()

这个00x41348000就是11.28125只不过我换算完转成16进制了,接着得到我们的flag:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值