昨天下午摸鱼刷微博看到这个活动,就凑热闹打开玩了玩,说是 CTF,但是感觉更像是个解谜游戏,和 CTF 关系不大...虽然现在网上已经一抓一大把题解了,但是反正好久没水博客了,就顺手水一篇我的做题过程。
第一题
打开第一题,页面上写着「需要使用bilibili Security Browser浏览器访问~」,第一反应就是需要改 UA,F12 看看,一个 「admin」和「2」。
刚开始我还不知道「admin」里这个「data」是什么玩意,而另一个请求 403 了,也没什么结果,就打开网页源码看看。
好家伙,那个「data」直接就是第一题的 flag,没见过这么草率的。
顺便吐槽一下提交答案,还要手动输题目 ID,我试了半天「flag1」都不行,结果就是填个 1...
第二题
前两道题是在一个页面,刚才网页源码也都把第二题都接口写清楚了,把 UA 改成「bilibili Security Browser」,第二题的 flag 就 get 到了,不过记得所有题都要在 cookie 里把自己的 session 带上,不然会提示需要登录。
第三题
这题绝对是槽点最多的一道题,打开之后一个登录框,第一反应就是 SQL 注入,试了半天没办法,那就猜密码。管理员账号就 admin 呗,密码试了一堆弱密码没用,感觉不对,填了个 bilibili,过了...我 TM...
第四题
页面提示需要「超级管理员」,页面 URL 也是 superadmin,F12 发现 cookie 里多了一项 role=ee11cbb19052e40b07aac0ca060c23ee;
,扔到 md5 解码里出来结果是「user」,那就把「superadmin」md5 扔进去替换,但是结果不对??又试了「admin」,也不行,「administrator」,还不对,我就纳了闷了,最后我怎么他娘的都没想到,正确答案是「Administrator」,A 要大写...我 &^%^&*&^%^。那你给的 superadmin 有锤子用。
第五题
页面上依然是什么都没有,F12 发现请求后面跟了个参数 uid。
看源码也没发现什么。
猜测获取答案应该是需要正确的 uid,那就写个代码从它给的 uid 开始往下跑,跑了大概几十个,flag 就出来了。
while True:
uid += 1
data = {
'uid': str(uid)
}
print(uid)
res = requests.get(url, params=data, headers=headers)
try:
content = res.json()
code = content['code']
if code != '403':
print(content)
break
except:
uid -= 1
第六题
打开第六题的页面我就用了半天时间,还时不时就根本打不开了,不知道有多少人在搞爆破...
从这题开始我就没思路了,这个博客页面翻了半天没有找到有用的东西,题目意味深长地写着「结束亦是开始」,不知道什么意思。看了下选题页面的源码,第六题之后都没有题目了,似乎意思是真正的比赛是从这里才开始的。
等一个题解。
10 月 26 日更新:
第六题有 dalao 做出来了,是 Referer 注入...
第七题
还等一个题解。
第八题
有人对第六题的服务器扫端口发现 Redis 的端口是开着的,直接 redis-cli -h 45.113.201.36 -p 6379
连上去,不需要认证,但是刚开始应该是连接的人太多了,不断出现无法连接的情况,get flag8
拿到答案。
刚开始上面 1-10 题的 flag 都有,但除了 flag8 其它都是错误的,估计是其他人加上去的,之后这些都被删除了,只留下了 flag8.
第九题
我再等一个题解。
第十题
对应第六题的「结束亦是开始」,而比赛的选题页面是「start.html」,找到「end.php」这个页面,但是似乎没这么简单。
而又有其他大佬扫路径扫出了「test.php」,打开内容是 JSFuck。
复制粘贴到 Console,得到两句话
程序员最多的地方,那应该就是 GitHub 了,上去搜索第二条字符串「bilibili1024havefun」,找到这个结果 interesting-1024/end
而且发现 Issue 已经变成讨论区了...
按照它给的代码,在刚才的 end.php 之后拼接参数,,第一条判断通过之后页面会变成「还差一点点啦~」,然后又嗯猜文件名...最后结果是 id[]=1&url=./flag.txt
,打开后是一张图片。
把图片下载到本地,以文本形式打开,拉到末尾,就能获得 flag10。