【攻防世界WEB】难度三星9分:shrine、lottery
前言:
介绍:
博主:网络安全领域狂热爱好者。
殊荣:华为云博主、CSDN网络安全领域优质创作者(CSDN:黑色地带(崛起)),2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。
擅长:对于技术、工具、漏洞原理、黑产打击的研究。
导读:
面向读者:对于网络安全方面的学者。
目录
shrine
解题方法:
1、php源码理解,SSTI(服务器端)模板注入
过程:
Ctrl+U
查看源码
使用了2个模块flask和os模块,看是否能模块注入
app.route传了两个路径
过滤()和'config','self'被加入了黑名单
访问shrine路径
/shrine/{{1+3}}
进行了运输,存在SSTI(服务器端)模板注入
又因为过滤()和'config','self'被加入了黑名单
1、payload:
/shrine/{{url_for.__globals__['current_app'].config}}
2、payload:
/shrine/{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}
lottery
解题方法:
1、逻辑漏洞,弱相等
过程:
游走一遍
然后再是注册
在此处看见了flag
点击buy后
抓包
出现api.php的post传参
api.php成了重点
查看robots.txt发现了
标明不能通过git获得源码
发现题目给的附件
就是源码
自动审计
(没啥漏洞)
自己查看源码
可以发现
1、request是json格式(json支持布尔型数据)
2、7位数的对比,是一位一位对比的
3、且使用的是弱相等(TRUE,1,"1"都是相等的,只是类型不同)
构造payload
[true,true,true,true,true,true,true]
即改为
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
使用bp抓包
再点击buy
- 点赞
- 收藏
- 关注作者
评论(0)