HGame 2019 week1 Writeup

HGame 2019 week1 Writeup

随便写写 CTF 3457 字 / 7 分钟

终于来了!

一直盼望着的 HGame 来了!!好开心啊! 本来是计划 25 号回老家的,跟爸爸说协会 25 号有 HGame 后,便推迟到了 26 号回去。 之前也是一直肝到了 4 点,学了超多东西。 不过开始半小时后 ak web 确实让我十分激动啊!!一开心又下单买了个手办,只怕到时候补款又得哭死。

嘛,下面来聊聊这次的题吧。感觉还是有点难度的,这还只是 week 1 啊!!

Web

谁吃了我的flag

这个作为 web 第一题确实有点吓人。 直接上来是一个 html 文件,给了一半的 flag。因为是 html,又没有 JavaScript,所以搞不了什么小动作。 试了下.git.DS_Store都不行。 那么问题来了,剩下的 flag 在哪呢? 根据题干是因为昨天没有好好关机吗T_T,自己原来剪视频时,总是会遇到 Premiere 崩掉的情况,此时会产生一个临时文件。 百度了一下ctf 临时文件,发现 vim 编辑器是会生成临时文件的,文件名为.文件名.swp, 尝试访问.index.html.swp,下载下来后打开即可得到完整的 flag:

hgame{3eek_diScl0Sure_fRom+wEbsit@}

换头大作战

头就是请求头咯~ 显示POST一个want,之后根据提示来一步步加请求头。 还是推荐使用 Chrome 插件 Restlet Client。 X-Forwarded-For127.0.0.1Refererwww.bilibili.comCookieadmin。 但是,这里的User-Agent好像有点问题,当时就是卡在这里了,不知道是题目的问题还是我太菜了。 直接设置User-AgentWaterfox/50.0是不行的,最后是改为use Waterfox/50.0才可以,就很懵逼。

hgame{hTTp_HeaDeR_iS_Ez}

very easy web

简单的代码审计。 代码中把GET参数id进行了urldecode,而浏览器同样也会帮我们先做一遍urldecode,因此我们要传urlencode两遍的vidar。 那么问题来了,PHP里面echo(urlencode('vidar'));出来的还是 vidar。 好像英文字母这些urldecode都是本身啊;这里就需要我们手动自己对照 URL 编码的表格得出来。 可以参考这个http://www.w3school.com.cn/tags/html_ref_urlencode.html 两遍 URL 编码后得出%2576%2569%2564%2561%2572,访问http://120.78.184.111:8080/week1/very_ez/index.php?id=%2576%2569%2564%2561%2572拿到 flag:

hgame{urlDecode_Is_GoOd}

can u find me?

进入后日常 F12,转到f12.php。 说是要POST password,日常瞄一眼响应头,找到password: woyaoflag, 然后POST过去就行。 转到http://47.107.252.171:8080/toofast.php,说我们速度 too fast,那就是要抓包咯。 Charles 走一波,得到 flag:

hgame{f12_1s_aMazIng111}

至此,web 题就 ak 了!花了半个小时,如果中途键盘没有因为虚拟机而崩掉搞不好还能更快23333

RE

一点都不会的菜鸡,只能挑简单的做。

brainfxxker

挺硬核的一道题。 brainfucker 看起来虽然比较扯,但是正如 wiki 上所说,“Brainfuck程序很难读懂。尽管如此,Brainfuck图灵机一样可以完成任何计算任务。”所以……这就十分底层了。 菜鸡的我只能大概搞得懂一点,但是,这并不妨碍我们自己先随便试试。 第一个字母输入个a,不对,再猜b,诶!对了! 然后就是脑洞了:总共有要输入 9 个字符,题目是 brainfuck 也是 9 个字符,那 flag 会不会就是这个? 结果还真是,只是稍微换了下字母混淆了一下,比如改下大小写啊,i换成!,都是些常见的套路。 然后,我们就可以很轻松的猜出flag,笑死。

hgame{bR4!NfUcK}

HelloRe

下载下来直接拖进 IDA,然后一个个翻找到 hgame 的 flag 就行。

hgame{Welc0m3_t0_R3_World!}

Pro的Python教室(一)

跟 Python 无关,直接把enc2 = 'SGVyZV8xc18zYXN5Xw==' base64_decode一下,然后拼成最后的 flag 就行。 这题只是给个示例而已,传达一种思想。要来真的肯定是那种复杂的一匹的加密算法。

hgame{Here_1s_3asy_Pyth0n}

PWN

还是一点都不会,只会最简单的。

aaaaaaaaaa

nc连上后,疯狂输入a,然后就会反弹出 Shell,然后cat flag即可。 感觉背后的原理就是接受输入的函数不安全,然后就溢出了吧。

hgame{Aa4_4aA_4a4aAAA}

MISC

Hidden Image in LSB

唔……这个是花了四五个小时,真的是难受。 首先是疯狂在 GitHub 上 LSB 的项目,clone 下来后又直接在本地装了一堆依赖,把本地的 Python 环境搞得乱七八糟。 然后发现还是不行。 也在网上找到了 stegsolve 这个软件,奈何网上的使用教程是错的,我一直在 Data Extract 里面疯狂尝试,结果什么也出不来。 最后发现…… 只要多点击几下下方的箭头就可以了,被自己蠢死QAQ

hgame{LSB_is_easy_for_u}

打字机

死宅真恶心!死宅真恶心!死宅真恶心! 明显就是欺负我看番看得少23333

把打字机的图放 Google 搜了一下,发现居然是《紫罗兰永恒花园》里面的。 瞬间气死,我还以为是什么上古文字。 因为打字机图上的字母都是大写的字母,小写的字母并没有。 在 Google 上我找到了网友对动画中一封信的翻译,其中的大小写字母对照的挺多的。 根据这张图,然后连蒙带猜出 flag:

hgame{My_vi0let_tyPewRiter}

Broken Chest

这个文件下载下来后,丢进 binwalk 看了下,发现有点东西。 但是却一直解压不出来,提示我的 Python 缺少库,然而 macOS 上的 brew 好像并不能装这个库。 便开始忙着用 Docker 开 Ubuntu 虚拟机,配环境。 最后居然。。。 因为这是个 zip 文件,然后文件头那里缺了一点点,因此就损坏了。 自己做一个 zip 文件,比对一下文件头,把缺少的部分用 WinHex 加上去即可解压,密码在压缩包简介那里给出,得到 flag:

hgame{Cra2y_D1aM0nd}

Try

这个题做了很久也是自己太菜了。 首先把下载下来的 try-it.pcapng 拖进 Wireshark 分析。 只看 HTTP 请求,我们可以看到有一个 dec.zip 的文件。然后我便傻乎乎的把整个请求给保存下来然后用 WinHex 删掉前面的请求头,发现并不能打开。 正确的方法应该是:File -> Export Objects -> HTTP

然后选择我们的文件就好了!

解压后发现得到了一个 password.txt 文件和一个带密码的 open-it.zip 文件。 用 WinHex 或 HexFriend 打开 open-it.zip 检查一下是否是伪加密,

可以看到开头结尾都有这个0001,说明这是用 7z 压缩的真的带密码加密的压缩包。 通过 password.txt 的提示我们可以知道,压缩包的密码是hgame后面接 8 位字符,用 ARCHPR 进行暴力破解。 选择“掩码”,然后输入hgame????????,首先只跑一遍所有数字尝试一下。

不到一秒钟就出来啦!

输入密码解压后,可以看到一张石原里美老婆的照片。 用 binwalk 看一下,发现里面藏着个 1.docx 的 Word 文档。

提取出来后用 Word 打开,发现是空白的,但是上面很明显有内容。 直接全选复制,然后粘贴到随便一个文本编辑器,便得到了 flag:

hgame{59d28413e36019861498e823f3f41406}

好耶!misc 也 ak 了!

CRYPTO

Mix

这道是 AC 学长出的题。因为一些原因,这道题很容易得到假 flag 。 当时我疯狂怀疑人生。在群里 o 爷爷给了提示后才发现不对劲2333 描述里面一下就是摩斯密码,随便在网上找个在线解码,得到:

744B735F6D6F7944716B7B6251663430657D

然后 base 编码全部试一下,发现是 base16:

tKs_moyDqk{bQf40e}

看过去年 HGame 的 Writeup,了解到这是栅栏密码。根据 flag 的格式,最后解出来的应该为xxxxx{xxxxxxxxxxx}。 推荐这个网站https://www.qqxiuzi.cn/bianma/zhalanmima.php 当每组字数为 9 时,解出来为:

tsmyq{Q4eK_oDkbf0}

符合题意。这一看就是凯撒密码,然后我就一脚踩进坑里面了2333 我是用 CTF 在线工具 这个站http://ctf.ssleye.com/里面的凯撒密码来解密的。 这个站的问题就在于,凯撒编码后所有字母全部都变成了小写:

hgame{e4sy_crypt0}

然而我们的密码原文中是有大写字母的。所以我需要手动对比一下,把小写换成大写才是最终的 flag:

hgame{E4sY_cRypt0}

狡猾狡猾~

Base全家

很有意思的一道题,正规解法应该是用 Python 写脚本的。 但是因为我是个菜鸡,所以用 Python 手动解决。期间总共做了四遍! 我们知道,题目里给的那一串就是疯狂各种 Base 编码搞出来的。 我们可以用 Python base64库中的base64.b16decode``base64.b32decode``base64.b64decode,来对其分别进行相应的解码。 如果用错的解码的方式,Python 会报错并抛出一个异常。 然后我可以try语句或者用你的眼睛捕获到异常然后再换一种解码方式就行。 我只有菜鸡的做法,也就是我的方法。用我的眼睛捕获异常2333,再手动更换解码方式。

print(base64.b32decode(base64.b64decode(base64.b64decode(base64.b64decode(base64.b32decode(base64.b16decode(base64.b16decode(base64.b16decode(base64.b16decode(base64.b64decode(base64.b16decode(base64.b64decode(base64.b32decode(base64.b16decode(base64.b32decode(base64.b16decode(base64.b16decode(base64.b16decode(base64.b64decode(base64.b64decode(a)))))))))))))))))))))

还是太菜了…… 最后得到字符串

base58 : 2BAja2VqXoHi9Lo5kfQZBPjq1EmZHGEudM5JyDPREPmS3CxrpB8BnC

在网上找到了一个 base58 解码的 JavaScript 实现:https://blog.csdn.net/github_39132847/article/details/83624463 解码后得到 flag:

hgame{40ca78cde14458da697066eb4cc7daf6}

嗯,然后其实还有些题感觉可以做的。只是回到老家后事挺多的,便咕咕咕了。 ak 了 web 和 misc,也算是及格了23333