# Gaylgame - 第一次出题的尝试
# 题目连接
附件下载:
- site: PwnBase-Click2Download #站点名称
owner: AkyOI #管理员名字
url: https://platform.akyuu.space/MineProbs/Gaylgame.zip #站点网址
desc: Download-Attachments #简短描述
image: images/avatar.jpg #一张图片
color: "#d0ccf7" #颜色代码
靶机链接:
nc platform.akyuu.space 6666
也可以直接去这里看看:
- site: PwnBase-By-AkyOI #站点名称
owner: AkyOI #管理员名字
url: https://platform.akyuu.space/ #站点网址
desc: CTF-Database of PWN #简短描述
image: images/avatar.jpg #一张图片
color: "#d0ccf7" #颜色代码
# 出题想法
其实是 3 月出的题目。
有点类似剧情 heap 题目小南梁~
自从见到堆题目开启随机化之后被恶心到之后就想着恶心出题人去(手动滑稽,我就不信出题人不做题)
而且出题的时候刚好学了高版本 IO 攻击,于是就整了个题玩。(本来是为了放在校内月赛的 build 环节,但是一直没有办下一次月赛,于是直接放出来了。)
除此之外,这个题目有很多奇怪的地方,那里就是我为了出题而不断做的妥协。
题目背景是一个充满 gay 的学校,你的室友想要 520 找对象但是学校中的许多女生会是男生假扮的 Gay,你需要找到正确人,确保你的室友不会孤独终老。
当然,看到漂亮的 小南梁 也可以自己留着(手动滑稽 * 2)
# 题目特色
序号 | 特色内容 | 恶心 / 威胁程度评价 |
---|---|---|
1 | chunk 大小随机化(3 种 fastbin size 范围内 chunk 随机选择生成)(命运由天,不由你) | ⨂⨂⨂⨂⨂ |
2 | 获取 libc 基址会把 top chunk 破坏掉 | ⨂⨂⨂⨂〇 |
3 | 一堆输出函数打乱思路 | ⨂⨂〇〇〇 |
4 | 某些函数使用了内联,略微增大逆向难度 | ⨂⨂〇〇〇 |
5 | 针对使用伪造 IO_FILE 结构体的 UU,只能申请较小的 chunksize 会导致 fake IO struct 没法一次构造成功,对于一直使用 IO_FILE 结构体板子的人可能要修改结构体内部偏移。除此之外,两个 chunk 之间的结构体 payload 不能被某些内容覆盖,比如 chunk 的 size 部分。 | ⨂⨂⨂〇〇 |
6 | strcpy 会截断 payload | 〇〇〇〇〇 |
还没放个 ORW,快说谢谢出题人!!!
# 考察知识
1. 一种基于后时代高版本 glibc 版本输入输出结构体的攻击利用手法(IO_FILE 攻击)
2. 一种基于随机数生成算法漏洞的随机数底层攻击方法 (伪随机数漏洞)
3. 一种基于栈的跨函数帧指针越界读写攻击技术 (栈上指针越界读写)
4. 一种处于超大内存时代背景下新版本 glibc 特色保护机制的小型 chunk 攻击手法 (Tcache chunk 取出检查与保护绕过)
# 漏洞存在点
1. 栈上指针越界读写更改 heap 指针引起 double free
2. 堆溢出,只能使用一次,但是 strcpy 截断(只要是正常打应该不会被截断)
虽然有明显的栈溢出漏洞,但是在利用那个函数之前你应该是拿不到 libc 的,而且也没有后门、开了 pie,那个函数只能使用一次。(CTFAK 日服务器专业户的✌当我没说)
# Exp
对,你的 Exp 跑了。
为了惩罚 520 有对象的人,就不给你 Exp
4 小时做不出来的建议甩掉 npy 之后紫菜~~~