看板娘加载中
189 字
1 分钟
ctfshow 前置基础 pwn31

题目先泄露了 main 的地址,可以据此反推出其他函数地址。

截图 1 截图 2 截图 3

起初尝试 ret2libc 失败,泄露值不是有效 libc 地址(不像 0xf7xxxxxx / 0xf6xxxxxx)。

截图 4 截图 5

关键点是 ebx 参与了 GOT 泄露流程。由于溢出覆盖导致 ebx 异常,需要手动恢复。 根据题目泄露的程序基址和偏移关系,可构造正确的 ebx

ebx = base + 0x1FC0

截图 6 截图 7 截图 8 截图 9

在第一次 payload 中伪造 ebx 后,泄露流程恢复正常。

截图 10 截图 11 截图 12

最终答案:

ctfshow{c8748e3b-0cf1-4689-9640-6b7d18019f79}

另一个可行思路是利用 write 而不是 read 完成泄露与利用:

截图 13 截图 14

ctfshow 前置基础 pwn31
https://alf-ovo.cn/posts/ctfshow-prerequisite-pwn31/
作者
AlF
发布于
2026-05-10
许可协议
CC BY-NC-SA 4.0