Gaaising's Blog

GDOUCTF 2023 Writeup

Category: Tech Publish: Update: Words: 684 (2 min read)

第一次参加CTF,虽然跟我所学专业八竿子打不着,但还是很感谢在Hor1zon战队的朋友的邀请,就厚着脸皮来凑个热闹了

作为门外汉也有幸借此机会了解一些CTF概念和规则,就比如“Writeup”要赛后提交作为解题证明

纯玩玩,没拉人组队,个人能力有限,只做了几道题,有些是误打误撞的解法,不是最优解,所以这个Writeup就随便水水啦🫠

Writeup#

校内赛道

队伍名:柑蕉桔梨蘿柚

解题数量:MISC类3道、WEB类4道(共7道)

队伍成员:

(共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的构造函数可知其可接受参数widthheight以定义游戏地图大小,故可在控制台执行如下代码:

new Snake('eatSnake', 10, false, 1000, 1000)

以获得一个能保证贪吃蛇在60秒内不会撞墙的地图,得到flag。

受不了一点#

观察源码可知思路,

首先使用数组绕过PHP的md5检查,可POST发送如下内容:

KeyValue
gdou[]1
ctf[]2

紧接着绕过PHP的弱等于判断,可GET发送如下内容:

KeyValue
aaa114514a
bbb114514

再然后在请求头中设置如下Cookie:

cookie=j0k3r

最后GET发送任意值的flag参数,如:

KeyValue
flaga

即可获得flag。

泄露的伪装#

经合理猜测和不断试错可得,/www.rar路径为网站www目录的备份压缩包,在压缩包内容提示下前往/orzorz.php得到flag。

后记#

校内赛道勉强排在第10名,但在校外赛道就已经排在395名了(大佬还是太多了😨

混了个校内的优胜奖😋,作为业余参赛,已经很满足了,也算是为人生首次参加CTF画上圆满句号了(

隔行如隔山,问我怎么评价这次比赛我也不懂,写到这里不知道怎么结尾,那最后就说点漂亮话吧)))

希望明年还能来🥰,祝愿Hor1zon战队越来越好🫡

This article is licensed under CC BY-NC-SA 4.0.