第一次参加CTF,虽然跟我所学专业八竿子打不着,但还是很感谢在Hor1zon战队的朋友的邀请,就厚着脸皮来凑个热闹了
作为门外汉也有幸借此机会了解一些CTF概念和规则,就比如“Writeup”要赛后提交作为解题证明
纯玩玩,没拉人组队,个人能力有限,只做了几道题,有些是误打误撞的解法,不是最优解,所以这个Writeup就随便水水啦🫠
Writeup#
校内赛道
队伍名:柑蕉桔梨蘿柚
解题数量:MISC类3道、WEB类4道(共7道)
队伍成员:
- Gaaising Tam
(共1人)
MISC#
签到#
无他,唯公众号引流尔。已关注,莫辜负。
misc_or_crypto?#
文本编辑器打开flag.png(如图)
可见一个RSA私钥和一串Base64内容,使用任意在线RSA解密工具解密即可得flag。
Hidden In Plain Sight#
文本编辑器随便打开前几张图片,可注意到图片元数据的<cc:attributionName>
标签内容有连贯性。
可用NodeJS实现如下:
const fs = require('fs');
let result = '';
for(let i = 0; i <= 126; i++) {
const data = fs.readFileSync(`${i}.png`, 'utf8');
const match = data.match(/<cc:attributionName>(\w)/);
if (match) {
result += match[1];
}
}
console.log(result);
在图片所在文件夹运行即可得flag。
WEB#
EZ WEB#
查看网页源代码,根据第13行提示进入/src
路径得到python源码,从第15行获知向/super-secret-route-nobody-will-guess
路径发送任意PUT即可得到flag。
hate eat snake#
在snake.js中注意到,在页面onload后创建了Snake实例,观察Snake的构造函数可知其可接受参数width
和height
以定义游戏地图大小,故可在控制台执行如下代码:
new Snake('eatSnake', 10, false, 1000, 1000)
以获得一个能保证贪吃蛇在60秒内不会撞墙的地图,得到flag。
受不了一点#
观察源码可知思路,
首先使用数组绕过PHP的md5检查,可POST发送如下内容:
Key | Value |
---|---|
gdou[] | 1 |
ctf[] | 2 |
紧接着绕过PHP的弱等于判断,可GET发送如下内容:
Key | Value |
---|---|
aaa | 114514a |
bbb | 114514 |
再然后在请求头中设置如下Cookie:
cookie=j0k3r
最后GET发送任意值的flag参数,如:
Key | Value |
---|---|
flag | a |
即可获得flag。
泄露的伪装#
经合理猜测和不断试错可得,/www.rar
路径为网站www目录的备份压缩包,在压缩包内容提示下前往/orzorz.php
得到flag。
后记#
校内赛道勉强排在第10名,但在校外赛道就已经排在395名了(大佬还是太多了😨
混了个校内的优胜奖😋,作为业余参赛,已经很满足了,也算是为人生首次参加CTF画上圆满句号了(
隔行如隔山,问我怎么评价这次比赛我也不懂,写到这里不知道怎么结尾,那最后就说点漂亮话吧)))
希望明年还能来🥰,祝愿Hor1zon战队越来越好🫡