SQL-map介绍
sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
支持的数据库:MySQL,Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
支持五种不同的注入模式:
- UNION query SQL injection(可联合查询注入)
- Error-based SQL injection(报错型注入)
- Boolean-based blind SQL injection(布尔型注入)
- Time-based blind SQL injection(基于时间延迟注入)
- Stacked queries SQL injection(可多语句查询注入)
常用语法
直连数据库:sqlmap.py -d "mysql://root:root@127.0.0.1:3306/security"(前提要知道数据库类型,数据库的绝对路径)
-b 获取banner信息
--dbs 列举数据库
--is-dba 是否是管理员权限
--current-db 当前数据库
--current-user 当前用户
--tables 列举数据库的表名
--count 检索所有条目数
--columns 获取表的列名
--dump 获取表中的数据,包含列
--level 测试等级(1-5),默认为1
-v 显示详细信息
读取数据库--->读取表---->读取表的字段---->获取内容
-D 指定数据库
-T 指定表
-C 指定字段
--dbms=mysql oracle mssql 指定数据库
针对单一URL进行检测使用
sqlmap.py -u “URL”
--o开启所有性能优化参数
扩展语法:
用--cookie来设置cookie参数
--cookie(指定cookie参数)
sqlmap.py -u "http://127.0.0.1/sqli/?id=1&Submit=Submit" --cookie "security=low; PHPSESSID=oqahlrrvjm7luamk99meb4vcp2" -level 2
注:利用cookie进行sql注入时要将等级调为2以上最好-level 2(3,4)
--user-agent伪造请求客户端信息/user-agent注入
Sqlmap 默认使用sqlmap/1.0-devxxxx
sqlmap.py -u http://192.168.0.110/sql/Less-20/index.php --user-agent="xxxxxxxxxxx"
--random-agent sqlmap将从./txt/user-agent中随机选取一个用于会话中的http请求
sqlmap.py -u http://192.168.0.110/sql/Less-20/index.php --random-agent
注入点为user-agent时要将探测等级设置为--level 3或者在请求头后加*号,告诉sqlmap这里存在注入点
sqlmap.py -r post.txt --level 3
设置代理
--proxy设置HTTP代理服务器位置
sqlmap.py -u "http://192.168.0.110/sql/Less-11/" --proxy "http(s)://xx.xx.xx.xx:xx"
--proxy-fiile "//后跟文本路径"指定多条代理
设置发包延迟
--delay x(秒)
sqlmap.py -u "https://127.0.0.1/?id=1" --delay 5
指定脚本多用于过WAF。
在sqlmap/tamper修改过着添加脚本
--tamper "xx.py"