type
status
date
slug
summary
tags
category
icon
password
实际上直接确定溢出位置在 exp 里写 payload 发送就好了 #### 检查下保护情况
notion image

放进 ida 分析,搜索字符串,定位到主要函数的位置

notion image
可以看到当 v2 等于 11.28125 时就会输出 flag,而且 v2 为 float 类型。 - 只有一个输入点 gets(v1),没对输入进行限制,存在溢出点 [[python]] 可以判断出本题是通过输入 v1 溢出覆盖 v2 的值为 11.28125 获取 flag。

v1 位置为 rbp-30h,v2 为 rbp-4h,距离为

notion image
与 char v1[44]中的 44 相等,所以 v1 填充完 44 后溢出就直接会覆盖到 v2 的位置,只需要在 44 字节后填充浮点数 11.28125 即可 (可以先打断点在 if 处,然后在 ida 中动态调试 Hex-view 中按 F2 对溢出位置进行修改为对应数值看下是否可行)

python 中的 pwntool 打开 gdb 调试(方便发送不可输入的字符和查看 stack 变化)

notion image
notion image

发送 payload 后

notion image

可以看到指定位置已经被覆盖为我们需要的字节,然后在 gdb 中继续执行

notion image
执行完后可以看到 pwntool 中的交互模式出现了 cat 指令的执行。
基于以上本地实验,可以写出如下 exp:
正则表达式记录工具和资料
纸鸢
纸鸢
一个普通人🍚
统计
文章数:
6
公告
type
status
date
slug
summary
tags
category
icon
password
🎉NotionNext 4.0即将到来🎉
-- 感谢您的支持 ---
👏欢迎更新体验👏