QingCenCTF 刷题writeup
QingCenCTF 刷题writeup
osint懒得写writeup了
网址:https://ctf.jinqiusec.studio/
1 | 做 CTF Web 题时,按一个清晰的顺序来可以少走弯路。下面是一套通用的做题流程,适合刚接触 Web 安全的同学。 |
Web-basic
题目描述:
1 | 简单的web |
这题就是看源代码
打开容器后,F12或者ctrl+u就可以看到flag
1 | <!doctype html> |
flag为:
1 | flag{89fcd88d-ce9e-4603-8133-d52342a1d757} |
Web-new basic
题目描述:
1 | web入门 |

和原来一样,还是看源代码获得flag:
1 | flag{45f4fdce-1603-46d7-a42f-6e23e869f153} |
Web-basic_1
题目描述:
1 | 简单的web 1 |
打开容器是这个界面:

想得到flag是不是应该让按钮可以按才行,而要实现这一点就需要修改前端代码:
1 | <body> |
可以看到是使用post向后端请求返回flag的,disabled是关键,这玩意导致了那个按钮不能按,所以直接把这玩意删了然后回车就可以得到flag:


所以,flag为:
1 | flag{6222b09a-13af-4e7d-a4b9-5ae663ee1268} |
Web-new basic_1
题目描述:
1 | web入门 |

不给看源代码那就抓包然后发包得到flag:

flag为:
1 | flag{04a0b5d2-755f-41da-b941-9c5c1a3f9275} |
Web-basic_2
题目描述:
1 | 简单的web 2 |
电灯泡:

你在game.js里就可以发现这道题目的逻辑:

这道题不用怎么看源代码,人家开头就给你定义好了,flag是一堆jsfuck编码,直接把它取出来在控制台里运行即可:

记得把前后双引号都去干净啊,这题flag为:
1 | flag{Qingcen_Is_The_Best} |
Web-new basic_2
题目描述:
1 | web入门 |

输入点信息抓包然后把is_admin的值从0改成1得到flag:

flag为:
1 | flag{2641fe63-824b-4d83-a67d-60198c2fd043} |
Web-basic_3
题目描述:
1 | 简单的web 3 |
这是前端:

下面是源代码,main.js告诉我们怎么得到flag:

1 | let randomNumber = Math.floor(Math.random() * 1000) + 1; // 1-1000 |
这块很显眼:
1 | // 猜对后请求flag |
直接掀桌子了不玩游戏了直接向后端请求flag:

flag为:
1 | flag{809cc34e-3f3c-4673-91d8-9ffb1edb1c1e} |
Web-new basic_3
题目描述:
1 | web入门 |
前端是这样的:

康康源代码:
源代码有个key.js:

这是jsfuck编码,把前后双引号删掉然后在控制台里运行:

得到密码,然后放进前端输入框里输入就可以得到flag:

flag为:
1 | flag{39fb402d-6235-4812-9485-a1e3a911f348} |
Web-ezrequest
题目描述:
1 | 你知道HTTP通常使用的两种请求方法吗? |
一个get,一个post
有两种工具:一种是burpsuite,一种是hackbar
get的构造方式:
1 | http://docker.jinqiusec.studio:36596/?变量=值 |
post构造:
hackbar请求体中也是变量等于某个值
打开容器,第一个要求:


得到第二个要求,同样的:

所以,flag为:
1 | flag{dc7b45d7-dc0c-4ee0-bfa3-e165e062059e} |
Web-ezrequest_1
题目描述:
1 | 请求头的妙用 |
这个你看着我的截图就可以了解了:

这个和上面那题一样,值改一下就行:

这个也是同理:

OK遇到新知识点,这个考的是xff,你先点击那个MODIFY HEADER,加一个X-Forward-For在value里加一个本地IP:127.0.0.1,对了xff本质上就是一个代理服务器。遇到改IP啥的想到就行。

让你使用某某某浏览器,就是User-Agent:标识客户端类型(浏览器、爬虫等)。

用某某代理访问指的就是Via:记录请求经过的代理服务器和网关。

这个考的就是cookie了:发送服务器之前设置的Cookie信息。作用:身份认证

最后得到flag:
1 | flag{deddc4f2-536f-4eb9-80ab-f9808e1b009b} |
Web-basic_4
题目描述:
1 | 简单的web 4 |

不用多说,访问/robots.txt界面:

然后访问原网址的/flag.php界面就行了,flag为:
1 | flag{af99444b-91bb-4ced-92a7-3b23806e34c1} |
Web-new basic_4
题目描述:
1 | web入门 |
这道题就是代码审计:

看看main.js:

从上往下看,先定义了三个数组,都有确定的值,_d(a)这个函数就是把数组里的数字转换为ASACII码,后面就是一些验证逻辑:
1 | if (input !== _d(_0)) { |
这部分指定了输入的那个邀请码就是把var_0那个数组经过了那个函数转换后的结果,所以我们的任务很明确了,把那些数字转换为ASCII码:
给个网址吧:https://www.bchrt.com/tools/online-ascii-converter/

1 | QCCTF_VIP_2026 |
其他两个我们也可以看看:


第三个还给了个假的,第二个那个/flag是一个路径,在源代码里是从这里传入的:
1 | fetch(_d(_1), { |
就是你输入邀请码,经过验证逻辑正确后,这个函数就会向后端发送post请求,跳转到/flag路径,显示flag(我觉得我讲清楚了):

flag为:
1 | flag{74e40217-9c87-4df2-993c-26caaec09725} |
Web-basic_5
题目描述:
1 | 简单的web 5 |
单纯扫目录(前提有相应的字典)(用群里的目录字典):

1 | dirsearch -u http://docker.jinqiusec.studio:37550/ -w httppath.txt |
访问fl4g.php即可得到flag:
1 | flag{ee0fdd0e-1f25-4955-953e-c9646f6f77d2} |
Web-new basic_5
题目描述:
1 | web入门 |

康康源代码:
1 | function encryptData(obj) { |
获得flag逻辑:
1 | const payload = { score: currentScore }; |
仿造payload:
1 | const payload = { score: 1000 }; |
得到flag:
1 | flag{b5d6f7cb-797a-4135-ae80-0ad6a64a973f} |
Web-basic_6
题目描述:
1 | 简单的web 6 |
前端是这个:
1 | 黑客小子,尝试发送一个 GET 请求吧,参数名为 id, 他的值是0~1000的数字; 我在其中一个 id 中放了宝藏,你能找到吗? |
这题就是字典爆破,使用burpsuite:
对了基础使用我是不讲的B站上有视频会讲且更有效,在博客里会显得比较繁琐
首先先用hackbar发个包,同时用bp抓包:

抓到了右键发送到intruder:
选中1(我发送的id=1),点击添加payload,这就可以爆破id了


设置1-1000的payload开始攻击:

攻击完后按那个长度它会根据长短来排序找到最长那个看它的响应就可以看到flag:
1 | flag{e75467e9-e04e-4e9a-8aec-7bed60670bbb} |

Web-new basic_6
题目描述:
1 | web入门 |

依旧前端和源代码没啥重要信息抓包发包看看:

flag为:
1 | flag{633bea10-a158-44f1-9b5c-8801ae47d889} |
Web-basic_7
题目描述:
1 | 简单的web 7 |

尝试弱口令爆破依旧发包抓包:

123这个就是我们要爆破的位置:

这里我们用常用密码爆破,网址:https://github.com/rootphantomer/Blasting_dictionary:

所以,flag为:
1 | flag{12716998-067b-4632-a09b-789b8bc15830} |
Web-new basic_7
题目描述:
1 | web入门 |

看源代码没啥思路,扫扫目录,一开始没扫到,猜测是一些被忽略掉的目录(比如phps),dirsearch扫扫看:
1 | dirsearch -u http://docker.qingcen.net:39952/ -e phps |

访问一下:

真正有用的就后面几句:
1 | $a = $_GET["a"] ?? null; |
用get方法传入a=QCyYdS,即可得到flag:


flag为:
1 | flag{57a4bd5d-16ff-4799-a4d9-4a012648ab81} |
其中,
?? null
如果网址里有 a 参数 → 把参数值赋值给变量 $a
如果网址里没有 a 参数 → 把 null(空值)赋值给 $a
isset($a):判断变量 $a是否存在、不为空
!isset($a):前面加 ! 表示取反 → $a 不存在 / 为空
后面那个你应该知道,就是a的值不等于QCyYdS
整体逻辑就是:
- 你访问这个网页时,代码会先看网址里有没有带参数
a - 如果没带 a 或者 a 的值不是
QCyYdS(表达式为真)→ 显示「网站建设中」 - 如果a 的值刚好是
QCyYdS→ 跳过错误提示,直接读取服务器的 flag 并显示给你
Web-new basic_8
题目描述:
1 | web入门 |
前端:
1 | 在安全测试或 CTF 中,信息收集常从站点上那些公开却易被忽视的入口入手。本文归纳三个常见考点:index.phps、robots.txt 与 sitemap.xml。 |
为第九题做铺垫,这题是爬虫:

访问这个php得到flag:
1 | flag{671fed5c-d28b-4a44-8d10-bdf03c031b30} |
Web-new basic_9
题目描述:
1 | web入门 |
题目是一张图的前端:

源代码也只看到前端的那些东西,尝试扫描目录:

扫到一个sitemap.xml访问看看:

看见有一个wqw.php可以访问:

改身份,就是改请求头呗和cookie有关:

flag为:
1 | flag{ca7c6c99-a628-46ad-87be-d3eb49a5b9bc} |
Web-new basic_10
题目描述:
1 | web入门 |
这题用dirsearch,用群里的字典,作者这题引导的很好,卡片可以打开看看:

1 | dirsearch -u http://docker.jinqiusec.studio:37550/ -w httppath.txt |

访问fl4g.php获得flag:
1 | flag{d40ea120-1870-4df9-b0b0-80c612adc3c5} |
Web-new basic_11
题目描述:
1 | web入门 |

每个卡片都点点看:

暗示弱口令





那就抓包试试弱口令(对id进行数值爆破):

我先把cookie改成admin以防没权限:

先来1000个:

然后响应一个一个往下翻,看到flag:

flag为:
1 | flag{70764ddd-37b8-41bc-8e84-61b64e9ade92} |
Web-new basic_12
题目描述:
1 | web入门 |

随机输入一个密码然后抓包:

发送到intruder,用常用密码爆破即可:



所以,flag为:
1 | flag{bb344828-449a-4dd0-bae8-154cd9d34ffd} |
字典网址:https://github.com/rootphantomer/Blasting_dictionary
Web-ezphp
题目描述:
1 | 简单的php代码 |
页面是php代码:
1 | <?php |

弱类型只比较值,强类型比较类型和值


a,b都采用get请求,php弱比较:

所以,flag为:
1 | flag{458377d2-31c2-443e-9b87-3ee6109a0eb7} |
Web-别笑,你也过不了第二关
题目描述:
1 | 不是哥们,说白了你有啥实力啊 |
在控制台把score改成一个很大的数就行超过后端源码的那个,每一关都这样,得到flag:
score = 10000000000000000000000000000这样的

Web-strange_login
题目描述:
1 | 我当然知道 1=1 了!? |

SQL注入,SQL语句为:
1 | 'or 1=1# |
密码随便填即可获得flag:

Web-DD 加速器
题目描述:
1 | D 师傅在服务器上部署了一个加速器,并且提供一个页面来 ping 游戏服务器…… |
在查看环境变量时发现了flag

flag为:
1 | flag{b74f81a9-fa0a-4b9b-b3f9-3000c30d27ea} |
Web-黑客小 W 的故事(1)
题目描述:
1 | NewStar 的赛场上,小 W 被传送到了一个到处都是虫子的王国,在这里寻觅许久之后,他发现只有学会剑技(HTTP 协议)才能够离开这里。 |



抓包呗:

发现count了吧,修改这个值就行了:

count>800就行:
进入level2:


发现听不懂,看提示:

get传参:

一级域名的?前面要有/,二级甚至三级就没有这个要求了:

通过前面可得要告诉他guding,值随便填:


这里,DELETE是一种请求方法,和get,post同样的性质,改下抓包,顺便把chongzi传进去来去除(对了,只有get是特殊的在url里传的,其他都是请求体,不同参数用&连接):



看起来没啥思路看看提示:

改user-agent(这块纯恶心):
改到5.0就可以访问flag了:


flag为:
1 | flag{dcc4c139-80dd-4e5e-92d4-78676b86f282} |

Misc-城邦:压缩术
题目描述:
1 | 欢迎挑战者们来到压缩术的考验关卡,本关考察压缩术的综合使用,请挑战者们通过 6 位密码门开始挑战吧! (要想使用压缩术,请先念咒语 abcd...xyz0123...789) |
本题提示就是6位密码门,咒语是小写字母+数字这个组合,直接暴力破解,得到密码ns2025:

得到tips.txt:
1 | 恭喜你,通过了第一道考验,请用其他压缩魔法打开下一扇门吧!(下一扇门明明没有密码,为什么还是要输入密码呢?) |
这是提示伪解密,直接全局方位标记的09 00改为00 00即可:


得到key.txt:
1 | This is the door's key! |
含义还不知道,但是看到flag.zip里也有一个key.txt,而且他的压缩算法是Zipcrypto,这就是明文攻击,使用bkcrack:

1 | D:\bkcrack-1.8.0-win64\bkcrack-1.8.0-win64>bkcrack -C flag.zip -c key.txt -p key.txt |
即可得到flag:
1 | flag{You_have_mastered_the_zip_magic!} |
Misc-前有文字,所以搜索很有用
题目描述:
1 | 欢迎来到文字的世界!这里的字符,要么以你未曾想象过的方式排列,要么你根本都「看」不见。但是没有关系,这里是线上赛,我们不断网,尽情冲浪吧! Track2 的隐藏数据并没有被压缩,请不要使用 -C |
Track 1:
1 | 零宽度空格符 (zero-width space) \u200B : 用于较长单词的换行分隔 |
零宽隐写,按照题目所给的类型选择:

即可得到flag1:

1 | ZmxhZ3t5b3Vf |
Track 2:
咏雪,明示就是snow隐写,还有一个txt放了key,用brainfuck加密了,先用brainfuck解密得到key:

1 | brainfuckisgooooood |
而且Track2 的隐藏数据并没有被压缩,请不要使用 -C,所以手动操作吧:
这里要注意要把docx里的内容全部复制到txt里(至于原因我还不知道,但是试过之后确实发现没有信息提取出来),我命名为input.txt:
1 | snow.exe -p brainfuckisgooooood input.txt output.txt |
一般的snow解密后有压缩包的,在-p 前面加个-C,output里有一串摩斯电码:
1 | ----- ...- ...-- .-. -.-. ....- -- . ..--.- |
解密即可flag2为:
1 | 0V3RC4ME_ |

cyberchef要会用
Track 3:
谁多谁少一算便知,发现很多字符,就是字频统计:随波逐流一把梭
1 | 字频降序(包含标点):cH@1LenG3s}w!iVFQKAv.9d;&]Ym>ht5)k#6TruC4J0xZ:MqE<oz/UP"+b|p{B$y?7a %*~,^-[l2_(Rf\'OW=`gI8XDSjN |
根据flag特征,这一部分就是flag:
1 | cH@1LenG3s} |
整合一下,flag为:
1 | flag{you_0V3RC4ME_cH@1LenG3s} |
Misc-EZ_fence
题目描述:
1 | RAR 发现一张残缺的照片竟然需 要 4 颗钉子才能钉住,照片里面似乎藏着秘密。 |
打开图片发现文件尾藏了一个rar压缩包,binwalk分离,这个是被密码加密过的(找密码线索):
1.题目提示这是一张残缺的图片,暗示高被修改了,这里用随波逐流就可以

然后要4个钉子才能钉住,暗示这是栅栏密码,而且是4栏,在W型里发现一个长得像base64的:

1 | rSvMwgdouWZVhAvoj79GhSvWztPoyLfPytvQwJjBnKz= |
而图片里那个下面的就是换表的字符表:
1 | 8426513709qazwsxedcrfvtgbyhnujmikoplQWSAERFDTYHGUIKJOPLMNBVCXZ-_ |
这个可以用随波逐流一把梭


也可以用换表脚本:
1 | import base64 |
运行结果:
1 | D:\py\python.exe C:\Users\Lenovo\Desktop\ctf\.vscode\solve.py |
也可以用cyberchef,但是字符表末尾需要转义一下,不然会报错:
1 | 8426513709qazwsxedcrfvtgbyhnujmikoplQWSAERFDTYHGUIKJOPLMNBVCXZ\-_ |
这里是要注意的,末尾转义:

因此得到密码:
1 | New5tar_zjuatrojee1mage5eed77yo# |
打开压缩包得到flag:
1 | flag{y0u_kn0w_ez_fence_tuzh0ng} |
Misc-wireshark_checkin
题目描述:
1 | un 搭建了一个简单的 http 服务器,但是不小心把重要文件删除了,只剩下访问这些文件时的流量,你能帮他找到吗 |
打开流量包,锁定http流追踪流一个一个翻就可以看到flag:

1 | flag{ez_traffic_analyze_isn't_it} |
Misc-wireshark_secret
题目描述:
1 | un 偷看涩图,被抓到流量了 |
流量里找图:

导出来:



flag为:
1 | flag{you_are_gooddddd} |
Misc-热心助人的小明同学
题目描述:
1 | 小明的邻居小红忘记了电脑的登录密码,好像设置的还挺复杂的,现在小红手里只有一个内存镜像(为什么她会有这个?),小明为了帮助邻居就找到了精通电脑的你…… |
拿到手的是一个叫 image.raw 的文件,由题可知是内存镜像。
1 | vol.py -f image.raw imageinfo |

可知建议选择的操作系统版本有:Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86. 这里选择第一个(Win7SP1x86_23418)进行尝试,反正不行就试试别的。
确定系统版本后就开始研究怎么拿到密码了,由于简介说过密码「好像设置的还挺复杂的」,又让找出密码明文,爆破是不现实的,在 Volatility 2 和密码明文有关的还有 lsadump,直接梭。

开头的 0x48 并不是密码,你可以理解为是一个标志,除开这个你就能得到系统密码:ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh.
所以 flag 为 :
1 | flag{ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh} |
Misc-兑换码
题目描述:
1 | 领取 NewStar 前瞻兑换码,明天中午 12 点就失效喽!就在图片下面。什么,你没有看到?原来是 png 的下面啊,那没事了。 |
png修改高度即可,随波逐流一把梭:

flag为:
1 | flag{La_vaguelette} |
Misc-decompress(校内赛道)
题目描述:
1 | 正在失传的技艺之压缩包解压 |
7z一把梭:


点击flag.zip.001,里面有flag.txt:
1 | flag{e6468aaf-7ddc-4eb2-b6db-bce9f1ffb52f_oOo0hhh_U_r3411y_K0nw_h0w_2_d3c0mpr355_Multi-part_archive_5e35fcde-28e1-487d-9659-ba2dab629bb3_&_Th1s_f1ag_15_s0O0oO_l0oOoOng999_b433dc9b-db28-4a1d-965b-dc0a95d3a53a} |
转换为32位小写md5:https://toolshu.com/md5

flag为:
1 | flag{c6edaba55bac51875a215e2de11c35dd} |
Misc-decompress(公开赛道)
题目描述:
1 | 正在失传的技艺之压缩包解压 |
依旧7z一把梭,一层层点进去:

到这里有个passwd:
1 | ^([a-z]){3}\d[a-z]$ |
^ - 表示字符串的开始
([a-z]){3} - 匹配三个连续的小写字母(a到z):
[a-z] 匹配任意一个小写字母
{3} 表示前面的模式重复3次
\d - 匹配一个数字(0-9)
[a-z] - 再匹配一个小写字母
$ - 表示字符串的结束
这个正则表达式要求字符串必须满足以下条件:
以3个小写字母开头
接着是1个数字
最后以1个小写字母结尾
整个字符串长度为5个字符

是加密的用passware解决:

具体的设置根据引导来就行,选择
Misc-Ciallo~(∠・w )⌒★
题目描述:
1 | Ciallo~(∠・ω )⌒★ |

第一眼没啥思路,把word后缀改成.zip:
1.docx本身就是个压缩包
2.题目提示四位密码,更能说明这是压缩包
放到archpr里破解:

得到密码是0721,解压一下:

在这个路径发现Ciallo~(∠・w )⌒★.txt打开看看:
1 | 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 |
这是base64放进cyberchef里一把梭:

发现是个二维码,扫码获取flag:

flag为:
1 | flag{0d00_0721} |
Misc-盆友的遗憾
题目描述:
1 | joke有一个朋友他失恋了,这里有一份他写过的情书,用了一堆加密,你能把情书的内容发给joke吗,joke也想吃瓜,嘿嘿嘿~ |

打开压缩包发现是加密的,先用随波逐流扫一下:
发现是伪加密,使用随波逐流自带的伪加密修复:
压缩包中的emo.zip是真加密需要密码,密码就在另一个txt文件里:

这是jsfuck编码,在浏览器控制台里运行得到第一关的密码:
第一关密码:Minecraftyyds
这是emo.zip的密码。
下一关,She loved me.zip依旧是真加密。
hint.txt里有个emoji:
好像没思路,看看tip.jpg(使用010 editor):
文件尾有个网站,这个就是解密的网站:https://txtmoji.com/,这里我没想考什么,只是提醒大家emoji加密不只有base100,可能还会出这样的,倘若我没给网址,检索能力也是你必须要有的。
这里的key就是0x89.
得到一个base64,用cyberchef解密:
这里有点小瑕疵,那个网站生成的时候不小心带了一点特殊字符,删掉并解码即可:
得到这一关的密码:why y0u leave me
下一关的zip依旧是真加密的:
密码就在txt里:
看到有特殊字符,这是零宽隐写(这个可以网站搜,随波逐流也自带):
得到密码:Love seems like a joke
Ok来到了最后一关:
随波逐流梭一下会发现文件尾后面是一个zip文件用binwalk分离一下:
这个zip是四位密码,我猜各位应该能猜到是四位这里就没提示了,爆破出来密码是:love
flag.txt里还是emoji,这里考的就是base100了解密一下:
得到flag: flag{Y0u_Ae9_my_0n1y_0ne}
Misc-美妙的音乐
题目描述:
1 | 小明最近发现了一首好听的曲子,他把曲子发给你并邀请你一起欣赏,可是这个曲子似乎有什么不对劲的地方? |
发现是个mid后缀的音频文件:

这种音频的处理思路一般是使用audacity或者miditrail,拖入audacity是这样的:

可能会看不清,所以换个软件:

得到flag:
1 | flag{thi5_1s_m1Di_5tEG0} |
Crypto-SageMath 使用指南
题目描述:
1 | 使用 SageMath 运行程序以获得 FLAG. |
flag为:
1 | flag{e142d08c-7e7d-43ed-b5ad-af51ffc512ee} |
Crypto-Base
题目描述:
1 | This is a base question! |
附件:
1 | 4C4A575851324332474E324547554B494A5A4446513653434E564D444154545A4B354D45454D434E4959345536544B474D5134513D3D3D3D |
cyberchef一把梭即可:

flag为:
1 | flag{B@sE_0f_CrYpt0_N0W} |
Reverse-begin
找到主函数:
1 | int __fastcall main(int argc, const char **argv, const char **envp) |
F5查看伪代码,flag有3个part,先看flag1,双击part,按a进行翻转得到flag1:


1 | flag{Mak3_aN_ |
Shift+F12查看part2:

1 | 3Ff0rt_tO_5eArcH_ |
flag3就是变量名(按x可以跳转到变量):


flag3为:
1 | F0r_th3_f14g_C0Rpse} |
整合一下,flag为:
1 | flag{Mak3_aN_3Ff0rt_tO_5eArcH_F0r_th3_f14g_C0Rpse} |
Reverse-base64
题目描述:
1 | 仍然是 base64 |
这题我感觉在考misc,这题就是base64换表:


1 | g84Gg6m2ATtVeYqUZ9xRnaBpBvOVZYtj+Tc= |
1 | WHydo3sThiS7ABLElO0k5trange+CZfVIGRvup81NKQbjmPzU4MDc9Y6q2XwFxJ/ |
flag为:
1 | flag{y0u_kn0w_base64_well} |
