newstar2023 week4 - game
文件分析
下载pwn
, NX on, PIE on, Canary off, RELRO full
ghidra分析为64位程序
解题思路
观察程序,发现 原神 函数末尾运行了(*(puts + (-(long)cnt - (long)offset)))(bytes);
那么只要控制cnt和offset,就可以运行system;控制bytes可以打开shell
cnt在完成委托每次+0x10000,而offset通过输入%hd获得;
bytes在对肯德基爷爷的话中可以输入;
现在唯一的问题是:怎样既选择派蒙又选择三月七以满足if ((flag_paimon != 1) || (flag_march7 != 1)) break;
的条件?
发现myread函数存在off-by-null溢出,动调发现溢出的刚好是选择的伙伴变量, 那么只要先选三月七,然后溢出修改伙伴为派蒙即可
虽然题目中完成4次委托给了system地址,但是libc给了...直接在libc中找偏移,
得出system - puts
=0x38592
EXPLOIT
1 | > ncat node4.buuoj.cn 29415 |
Done.
- 标题: newstar2023 week4 - game
- 作者: RocketDev
- 创建于 : 2023-10-19 12:00:00
- 更新于 : 2024-07-25 12:34:56
- 链接: https://rocketmadev.github.io/2023/10/19/W4_game/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论