CISCN2019-华北赛区-Day1-Web2-ikun
尝试
首先注册账号,对于这种框架下的登陆框,压根没敢想过会有什么SQL注入。
在页面中发现hint:需要购买lv6,但是翻了好几页都没有找到lv6,于是用python脚本来处理
发现在181页可以购买lv6,但是价格太高无法购买
漏洞利用
薅羊毛逻辑漏洞
在页面中发现post表单,里面有对价格和折扣的定义。竟然前端处理,可以直接更改(也可以抓包后更改重放)。将折扣改成0.00000000000008,便可以低价购买到lv6
注意:这里不能直接将价格/折扣改成0,此处的逻辑漏洞应该有对0进行过滤,只能改成一个无限小的数来进行利用
JWT伪造
购买lv6后,转跳至一个隐藏路由,显示需要admin才能访问。
抓包发现有JWT,想到jwt伪造
JWT-Crack进行爆破破解,发现Secret
将伪造的JWT替换后成功以admin登录,并在源码中发现www.zip
python反序列化
在Admin.py中存在反序列化漏洞。这里涉及到一个库pickle,上网查了一下python反序列化,提到较多的就是这个pickle(还有YAML)
这里的Tonado框架中self.get_argument函数获取POST/GET来的become参数,并执行了pickle.loads()函数。这里就存在反序列化漏洞。
(初次接触到pickle反序列化,后续补篇博客详解一下原理)
exp:
1 | import pickle |
将结果替换become参数的值,得到flag回显