题目存档:https://hack2018.lug.ustc.edu.cn/
官方 write-up 已发布:https://github.com/ustclug/hackergame2018-writeups
我的一些解题过程的源文件https://github.com/XTXTMTXTX/Hackergame2018
一度17名最后20名发现奖项居然是中科大校内的 我哭了 你呢.jpg
¶签到题
f12把字数限制去了
¶猫咪问答
善用百度
¶游园会的集章卡片
拼拼图
我用的AE
¶猫咪和键盘
字符拼接 见cat.cpp
然后发现怎么都编译不通过
猜测程序意图
先定义输出格式再输出
ok直接复制粘贴出flag
注意其中一个}和_输出的是十进制ascii值
¶WORD文档
改后缀为zip解压
¶猫咪银行
先兑换一次TDSU
然后购买理财 时长555555555555555555 份额1000 然后取回
恭喜你获得5442144815179344334TDSU 兑换回CTB买flag
#不要买碎片 貌似没用?
¶黑曜石浏览器
HEICORE 联想到红芯(redcore)
马上搜索相关新闻 红芯 user agent 找到红芯用的是Chrome/49.1.2623.213
接下来把浏览器的user agent改为HEICORE/49.1.2623.213再访问页面即可
¶回到过去
百度ed编辑器
注意接受下来的按键记录文件藏了个ESC字符 所以后面那个c是假的
事实上我去OpenBSD里试了下 显示ESCc
就很怪 卡了好久
¶我是谁
¶哲学思考
搜索HTTP 418协议
得到下一题链接
¶Can I help me?
思考 方式 把请求头get改成post一下 得到线索 CRF 7168 https://www.rfc-editor.org/rfc/rfc7168.txt
好的 自定义请求头BREW 注意附上Content-Type: message/teapot\r\n\
因为不会使用telnet 专门打了个程序 teapot.cpp
¶猫咪遥控器
按着UDRL移动坐标画图
个人是画在了二维布尔数组上
最后输出方块到txt 改一下字号得flag
详见lazercat.cpp
¶她的诗
uuencode
将helper出来的东西再encode回去发现不一样
查询uuencode格式 第一位表示有几个字符
全改成最大的_再跑一遍helper
把多出来的拼起来就好了
¶猫咪克星
单纯的nc操作题
一开始各种文件生成读取特判输出
(甚至硬核模拟键盘)
等我做完别人告诉我有eval()???
流下了不会python的眼泪
我的代码详见\pythoncat
¶C语言作业
源程序用ida f5反编译
注意init函数与_err函数
以及main中的强制转换
可以得出2147483648(2^31)/-1在强转后可以满足跳转_err条件
_err中可以让你执行没有传入参数的程序
一开始思考cat 显然无法
后来想起来可以打开编辑器
ed没有vi没有
vim蹦出来了
:open flag发现flag在-文件中
重来一遍
:open -得到flag
顺便windows下vim界面会十分鬼畜 建议linux下进行操作
¶加密算法和解密算法
先是bf语言
其实还好看懂
层层剖析之后发现了算法
发现解密就是解一个模64条件下的10元一次方程组
克拉默法则
求出D=5 乘法逆元13
接下来依次求D1~10
det计算程序来源http://www.voidcn.com/article/p-rvomqytj-bb.html
源代码见\bf
¶她的礼物
“用你朋友的脚本解密之后的第 10 行”输入./gift "However, someday, someone will find it."
跑了几秒就挂掉了
进ida反编译
发现循环233333次
把sleep alarm signal循环内printf全弄没
(怎么弄? ida隐藏patch二进制功能)
然后再跑一次 最好 ./gift “However, someday, someone will find it.” > output.txt
等它跑完就完了
直接循环1次?输出结果不对
最好本机linux跑 我虚拟机跑了一小时才出来结果
(流下了不用linux的眼泪)
(最后发现是没弄掉io)
patched file见\gift
¶一些宇宙真理
snark.hpp内的
verify_proof()
调用即可
魔改代码使程序读入指定vk proof
见lightning_circuit_solve