2024长城杯
2024长城杯-wp
WEB
sqlup
先fuzz一波
过滤了–+,#,select,and ,or
输入admin 1进去了???(源代码的fuzzy matching实际上是用%%密码登录
点击头像有文件上传的点
过滤了字母p,导致无法上传.php文件,尝试了一下可以上传正常的gif文件
所以可以做一个gif的图片马
上传之后我们打开图片链接,就可以拿到图片的目录了
http://eci-2ze5wzpsckex64sy7i6f.cloudeci1.ichunqiu.com/uploads/2.gif
有了图片马该如何利用呢?想到了.htaccess文件可以更改文件的解析
我们上传一个.htaccess文件:SetHandler application/x-httpd-php
这样所有的文件都会当做php代码来解析
(蚁剑无法打开/flag文件,需要用tac指令显示!)
candyshop[未解出]
{‘csrf_token’: ‘04d9a3ecee8267e5ce21f9377e99fd425144aa5f’, ‘identity’: ‘guest’, ‘username’: ‘admin’}
借助flask-unsign工具可以爆破秘钥:a123456
伪造session .eJw9y0EKgCAQAMC_7LmDW6bWZ2LVXZDQwOwQ0d_z1HVgHghnla0dOxdYwXrUhMgTolEoMzoKY2ArRhaFVntNUWknMECKXFpqd18UcyqdrpNrocw_vR9gxh1Q.ZuAMjw.b0AUOTmCQ3ZMBe1JKK3ybGqQaPc
成功进入admin路由
添加库存
污染sold
"{'csrf_token': 'fbe216802ca261c5956c46ba90628f1eb9dc1d17', 'identity': 'admin', 'username': 'admin','__init__':{'__globals__':{'sold' : 600}}}"
.eJxNi0EKwyAQAP-y5x5Umm30M7LqWqRmhWgPJfj3Cr30NjMwF8R-Zj_aiwUc5MBG465MJIM6bnbDeMdAVqHZs-ZgU9RJP-AGJbGMMj7ronQUWend-RQ6-C95X6QM78Fdi5-1Bar9p73VBA6VmnN-ASCJKvw.ZuAT_g.jJdvne7R839xwsuNCPdrQZ1ZQAE
Congratulations! Here is my secret: flag in /tmp/xxxx/xxx/xxxx/flag
1 | def sanitize_inventory_sold(value): |
发现有个waff,在view_directory路由调用
1 |
|
猜测这个位置有ssti,也就是说要只要污染sold为ssti的payload,就能命令执行了
waf非常严格,过滤了字母和下划线
使用这个脚本来替换字母为八进制
1 | exp = "__class__" |
使用这个脚本对session加密
1 | from urllib import request |
1 | {{()['__class__']['__bases__'][0]['__subclasses__']()}} |
到这里复现的环境就行不通了,可能要到linux环境
复现的压缩包放到夸克网盘了
https://pan.quark.cn/s/677a926c1edd
MISC
BrickGame
记住图标后选择相同图标格子即可