Pwn Lab 2:ROP / FSB¶
本节 Lab 由以下部分组成:
- Task 1: 平台赛题 easyrop
- Task 2: 平台赛题 stackpivot
- Task 3: 思考题 ret2plt revenge
- Task 4: 校巴赛题 Format String Bug_easy
- Bonus: 非栈上格式化字符串 / fsb_heap
Note: 如果你最终没能获取到题目 flag,也请在报告中附上你的 exp 以及你所获取到的地址泄露等对漏洞利用有帮助的信息,评分时会酌情给分
Task 1 (20%)¶
题目名:[lab2]easyrop
提交的报告中至少需要包含以下内容:
- canary, 程序基地址和 libc 基地址泄露的思路
- 构造 rop 链的思路
- 成功拿到 flag 的截图,以及在本次攻击中你所泄露出的内容
- 完整的 exp 代码
Task 2 (30%)¶
题目名:[lab2]stackpivot
利用课上讲到的栈迁移技巧完成本题
提交的报告中至少需要包含以下内容:
- 构造栈迁移的思路
- 构造攻击 rop 链的思路
- 成功拿到 flag 的截图
- 完整的 exp 代码
Task 3 (20%)¶
如果要使用 ret2libc 的技巧来解决课上的 ret2plt 一题,应该怎么做?请给出你的思路
提交的报告中至少需要包含以下内容:
- 完整的思路,包括泄露 libc 基地址,构造 rop 链,劫持控制流
- 攻击可以只通过一次 rop 完成吗?如果不能,如何在只有一次溢出的情况下多次进行 rop?
Task 4 (30%)¶
本题使用的是 32 位环境,32 位下函数参数全部通过栈传递,和课上讲到的略有不同。32 位下地址为 4 字节。
本题要求手动构造格式化字符串的 payload,如果使用 pwntools 的 fmtstr_payload 函数只能得到 15 分
提交的报告中至少需要包含以下内容:
- 完整的利用思路,包括如何构造格式化字符串,如何劫持控制流
- 成功拿到 flag 的截图
- 完整的 exp 代码
Bonus (+15%)¶
在以下两个任务中任选一个完成
- 对于格式化字符串不在栈上的情况,应该如何进行利用 ( 任意地址读写 ),请给出思路
- 完成校巴赛题 fsb_heap,给出思路,成功拿到 flag 的截图及 exp 代码