2025第五届长城杯网络安全大赛初赛 Web方向 WP
Web
文曲签学
长按Fn进入调试模式,输入#HELP
可以查看帮助
输入#LIST
可以查看列表,再输入#READ HINT
获得提示
在公众号获得提示
双写../进行目录穿越,读取flag
EZ_upload
打开之后上传一个文件,得到源码
文件移动成功后执行命令 cd /tmp && tar -xvf ' . $filename.'&&pwd
,即进入 /tmp/
目录,解压上传的文件,然后显示当前路径
关键就是这一行代码,将文件按tar格式解压。我们写入木马到tar文件,然后想办法让其解压到/var/www/html
即可
打开本地虚拟机,先创建一个符号链接,指向/var/www/html
1 | ln -s /var/www/html su |
然后往/var/www/html
写入一句话木马,命名1.php
接着把符号链接su写入su1.tar
1 | tar -cvf su1.tar su |
然后再把木马写入su2.tar
1 | tar -cvf su2.tar su/1.php |
先上传su1.tar
,再上传su2.tar
,解压后木马就可以写到/var/www/html
目录里面
然后访问1.php
,没有报404,说明成功写入
蚁剑连接
根目录找到flllllll1111ag
SeRce
打开后看到题目源码
1 |
|
要先满足 serialize(unserialize($exp)) != $exp
才可以用 file_get_contents
读取文件。一开始exp还弄得很长,但其实很简单,输入个1
就可以,1
并不是合法的序列化格式,unserialize("1")
返回 false
并且会触发一个警告,但是 PHP 的 serialize(false)
会返回字符串 "b:0;"
,和输入 "1"
不同,因此条件成立
然后filetoread
写入文件路径,例如/etc/passwd
,POST发送
后面尝试寻找flag找不到,想起来之前见过一个由file_get_contents
到任意命令执行的漏洞,上网搜索一番,找到CVE-2024-2961
,大概就是GNU C库glibc中iconv()
函数的缓冲区溢出漏洞。漏洞会在将字符串转换为ISO-2022-CN-EXT字符集时,导致输出缓冲区最多溢出4字节,从而引发程序崩溃或覆盖内存
参考文章:从多个比赛引发的CVE-2024-2961漏洞学习思考-先知社区
这里用工具来做,地址:https://github.com/ambionics/cnext-exploits
工具下载到虚拟机后,要根据题目修改cnext-exploit.py
代码,具体如下
然后执行命令,因为当前用户为www-data
,权限很低,所以把文件写到/tmp
目录下,/tmp
通常默认可读写,其他目录需确认权限
先读取根目录文件有什么
1 | python3 cnext-exploit.py https://eci-2ze1g7zvc6cw53q7usqk.cloudeci1.ichunqiu.com:80?exp=1 "ls / > /tmp/1.txt" |
直接读取flag发现无法读取,后面查看readflag发现是个程序,且当前用户具备执行权限,可以运行获取flag
1 | python3 cnext-exploit.py https://eci-2ze1g7zvc6cw53q7usqk.cloudeci1.ichunqiu.com:80?exp=1 "/readflag > /tmp/flag.txt" |
返回题目,修改POST读取/tmp/flag.txt
即可
2025第五届长城杯网络安全大赛初赛 Web方向 WP
https://waynejoon.github.io/posts/ctf-2025changcheng-web-wp/