GaylGame - 第一次出题的尝试

# Gaylgame - 第一次出题的尝试

# 题目连接

附件下载:

靶机链接:
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)

# 题目特色

序号特色内容恶心 / 威胁程度评价
1chunk 大小随机化(3 种 fastbin size 范围内 chunk 随机选择生成)(命运由天,不由你)⨂⨂⨂⨂⨂
2获取 libc 基址会把 top chunk 破坏掉⨂⨂⨂⨂〇
3一堆输出函数打乱思路⨂⨂〇〇〇
4某些函数使用了内联,略微增大逆向难度⨂⨂〇〇〇
5针对使用伪造 IO_FILE 结构体的 UU,只能申请较小的 chunksize 会导致 fake IO struct 没法一次构造成功,对于一直使用 IO_FILE 结构体板子的人可能要修改结构体内部偏移。除此之外,两个 chunk 之间的结构体 payload 不能被某些内容覆盖,比如 chunk 的 size 部分。⨂⨂⨂〇〇
6strcpy 会截断 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 之后紫菜~~~