2021 | NEWSCTF | Misc
NEWSCTF - !了反都,了反
解题思路¶
- 下载
piz.galf
,解压后里面是flag1.pcapng
(嗯,看来除了文件名是反过来的以外好像还挺正常的…) - 查看流量包,发现几个可疑的 HTTP 流量,获取
piz
(即 ZIP)文件
- 导出
piz
HTTP 对象,共三个,其中有一个 HTML 文件(网页中包含提示信息:You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.),另外两个文件类型不明但内容一致
- 使用 010 Editor 查看类型不明的文件,发现是按字节逆序的 RAR 文件
- 按字节逆序后获得一个加密的 RAR 文件,其中包含一个
flag.txt
文件 - 再回到流量包,大量的 POST 请求非常可疑,查看任意一个 POST 请求,其中包含用户名和密码的表单数据,推测与压缩包密码有关
- 注意到有一个
/logout
请求,说明在此之前一定有一次成功的登入,缩小检索范围
- 如果用户名或密码错误,将返回
403 FORBIDDEN
,以此为依据查找正确的用户名和密码。最终获得正确用户名test123
和密码passwd123
- 使用
passwd123
可解压加密的 RAR 文件并获得flag.txt
,内容显然是经过 Base64 编码后倒序的文本 - 将文本各行按字符逆序再 Base64 解码,可获得《傲慢与偏见》一大段节选,没有直接的 Flag 信息,只有一些与原文有差异的字符以及看着像解码失败的字符 (ŏωŏ) 有点奇怪,难道 Flag 是由与原文有差异的字符组成的么?【可能性不大…
- 其实是 Base64 隐写 XD 提取的内容为:
flag{md5(0)}
- 计算
0
的 MD5 哈希值即可获得 Flag
Base64 隐写¶
-
Base64 编码即将文本字符对应成二进制后,再每 6 个比特为一组转换为可打印字符。若编码的字节数不是 3 的倍数,则先使用 0 字节在末尾补足,再进行编码,并在编码的文本后添加一个(待编码字节数模 3 余 2)或两个(待编码字节数模 3 余 1)等号
文本(1 Byte) A 二进制位 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 二进制位(补0) 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Base64编码 Q Q = = 文本(2 Byte) B C 二进制位 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 二进制位(补0) 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 Base64编码 Q k M = -
Base64 解码则首先丢弃填充的等号,而后将编码字符对应的二进制数每 8 个一组转化为 ASCII 码,直到剩余的二进制数不足 8 位。上表标红的二进制位不会影响解码,可用于隐写
extract.py
最后更新:
2021年11月17日 17:13:22
Contributors: