[CTF]USTC Hackergame 2018 划水记

最近无事,见USTC有CTF比赛,便去玩了玩。

题目存档可在此查看https://hack2018.lug.ustc.edu.cn

看了别人的题解后感觉自己非常傻逼 好几道题都是只差一步就做出来了。

后面也没有时间打了。本来是周二中午结束,结果从上周五凌晨开始就没看过题了。

就这样还能拿41名(

简述一下自己做出来的题和快做出来的题的题解

由于有些题是在学校傻逼机子上做的,也没有存具体题解,代码等。

0x01 签到题

input里面输key就行了,只不过限制了输入框长度。改HTML或者手动curl或用浏览器Dev Tool都可以。

0x02 猫咪问答

谷歌题。第二题好像需要推理一下?

0x03 游园会的集章卡片

拼图题。随手开了个An拼了一下就行。

0x04 猫咪和键盘

这个题目就是把一个cpp 有几列交换了一下。

因为之前见过可纵向选择的editor,于是查了一下,然后用npp手动交换了几列就完成了任务。

运行下这个cpp就行了。

0x05 Word 文档

这题先给了你一个Word文档,告诉你docx本质是zip,那我们就用压缩文件打开,发现里面有flag,复制进去即可。

0x06 猫咪银行

这题肉眼看上来只有两种赚钱的方法。一个是大力投理财,另外一个是利用币种汇率差赚钱。

然而这题限制每2s交易一次。

于是我们观察题目中唯一有输入框的地方,看如何构造卡掉。

我和同学试了负数,截断卡intval等,卡了半天才想起来用正数overflow。

这个时间是无上限的,显然当你输入$x$的时候,时间戳会加$60x$,如果只投资一元,钱会加$0.043x$,显然这个随手构造让时间戳爆成负数,钱不会爆的$x$。

然后我们构造就行,之后大力购买flag。

0x07 黑曜石浏览器

这站的robots好像只放了Google?我当时百度和必应都没搜到(sb学校上Google有点麻烦)。最后看某个地方,都说是卡到开不开Dev Tool,我就很懵。后来才发现是需要Google搜黑曜石浏览器。开源代码什么的,大力Ctrl+U就行了。之后能看到有一段js,是拿来鉴黑曜石浏览器的。是个UA判定。之后我们复制下UA,大力curl就0行了。

0x08 回到过去

给你一堆ed操作,输出结果。

这里面有个小坑,就是有一个指令是退出ed,我们只需要大力删除这条和这条上面的指令就行。

连上vps,打开ed,粘贴内容,大力cat。

0x09 我是谁

习惯性打开Dev Tool,看Network。

HTTP ERROR 418。

输入teapot,第一关完事。

第二关去翻RFC,最开始没看懂(

第二天又看了一遍,照着RFC的说明过了。

0x0A 家里有矿

第一题做不出来真的是能力不足..没研究过hash碰撞。

不过我看到这一题后,第一想到了BTC(实际上第三关SHA256就是用BTC的链解的)。

第二关是个md5,王小云曾经做过相关研究,不过好像并无卵用。

实际上碰102/128概率并不小,暴力碰就行了,也跑不了几小时(扔vps美滋滋),然而还是没去实践。

第三关就是爬BTC的blockchain,因为BTC的区块hash本来就要求有开头不少0,所以两个异或0,0也不少,大力算就行了(还是人菜)。

0x0B 秘籍残篇

第一关只需要把它转为normal format就行了。。

https://zb3.me/malbolge-tools/

之后发现这是个Art(实力眼瞎选手当然是转了之后看不出是Art),缩小下就行了。

第二关不会

0x0C 猫咪遥控器

这一题给你了一个操作序列,按照这个序列胡乱写个cpp,移动下cur,并染色,然后发现也是个Art,缩小下,就能看到flag。

0x0D 她的诗

这题给了你一个使用uuencode编码的文件,要求找出flag。

(这题我也是实力傻逼)

仔细研究uuencode格式发现第一位是表示的字节长度。

我们大力观察,感觉每一行的字节长度可能都少了点。

我们大力+3,然后decode,发现最后几列竖着读就能找到flag。

0x0E 猫咪克星

这题是给你一个socket服务器,让你计算它给定的python表达式。算够一定数量后才会给你flag。

用手随便试了几下,发现只能写py,然后就大力exec(和eval有一定区别)。

结果发现后面有几个点有time.sleep(100) os.system(“find ~”) exit()。

不慌,大力替换下就行了。

然后拿到flag

0x0F 猫咪电路

给你一个mc红石电路,构造制定输入使之输出1。

观察一下这个地图,发现整个电路构造很有层次,而且最高的几层输入都是唯一的。

慢慢递推下去,最后会推到10个四元组。这几个四元组有些推起来很方便。对于推起来不方便的,我们大力试一试就行了。

最后把原始输入序列转成flag就行

0x10 FLXG的秘密

第一关0分。

第一关按照六十四卦表decode后,我大力file了一下,发现是个tar.gz

然后就解压了,虽说看到了文件结尾错误,不过我并没有管他。

之后发现解压下来的文件里面似乎还有个可执行文件,然后就大力IDA,感觉不可做,就跑路了。

实际上,大力 cat file | hexdump -C | tail 就能看到flag。

以明文写在文件的末尾。

(我明明开过plain,然而没看末尾,实力眼瞎++)

0x11 C语言作业

下载exe,拉进IDA,第一眼以为是要卡栈然后随机执行。

之后发现init里面有东西,其实只要把程序卡崩就可以找flag了。

之后试了半天,没发现怎么卡崩。最后暴力瞎跑,跑出来了-2147483648/-1。

找文件,先试了各种方法开sh,之后又试了各种方法绕strstr等。

后来想到可以开编辑器。然后我试了vi emacs nano ed(忘了有没有试vim了),但是由于我是手动开的socket(当时电脑不是Linux+有py+懒得连vps),并没有发现什么,最后跑路了。

后来发现,其实就是editor开,只不过是用的vim。

后面有Linux的时候大力nc过去,开vim,瞎找一番,找到了flag。

0x12 加密算法和解密算法

土球出的题(雾)

拿到手,找了半天bf format工具,最后只找到一个jar。

然后大力装JRE,下好后突然想起本机是有JRE的。

大力format,发现了这个bf是有规律的。

具体来说,这10个变量均是关于原10个输入的多元一次函数。

我们大力跑高斯消元就行了。

就是逆元处理得注意下。

(因为当时人懒,直接用的行列式求值,结果因为少加个等号调了半天)

后面的题就没做了

(跑路跑路)

后面没时间打是真的伤

还有什么好玩的CTF求推荐(雾)