目录

  • 0x001 题目
  • 0x002 查看注入语句
  • 0x003 观察响应包
  • 0x004 脚本编写

0x001 题目

0x002 查看注入语句

将流量包导入Wireshark

看着很乱,输入url通过浏览器请求使用的协议为http,所以我们直接过滤出http协议的数据包。

过滤出http请求的数据包

注入语句如下:

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=32#

由此可见攻击者采用布尔盲注进行sql注入。

关于布尔盲注查看:https://blog.csdn.net/weixin_44032232/article/details/109358571

0x003 观察响应包

这里我们想到注入语句成功和失败所返回的数据包一定是不同的。

观察sql注入响应包。

注入失败响应内容:

注入成功响应内容:

由此我们可以想到是不是可以先将注入成功响应包过滤出来???那么我们应该以什么规则进行过滤呢,或者说以响应包哪个特征进行过滤呢???

我想到的过滤条件:

  • 过滤出响应内容中有文章内容的所有响应包
  • 根据响应包的长度进行过滤

注入失败的响应包长度:

注入成功的响应包长度:

对于Wireshark的语法不是很熟悉,没有找到怎么以内容过滤的语法,所以我这里以响应包的长度进行过滤。

Wireshark http过滤规则:

http.host==magentonotes.com
http.host contains magentonotes.com
//过滤经过指定域名的http数据包,这里的host值不一定是请求中的域名http.response.code==302
//过滤http响应状态码为302的数据包http.response==1
//过滤所有的http响应包http.request==1
//过滤所有的http请求,貌似也可以使用http.requesthttp.request.method==POST
//wireshark过滤所有请求方式为POST的http请求包,注意POST为大写http.cookie contains guid
//过滤含有指定cookie的http数据包http.request.uri==”/online/setpoint”
//过滤请求的uri,取值是域名后的部分http.request.full_uri==” http://task.browser.360.cn/online/setpoint”
//过滤含域名的整个url则需要使用http.request.full_urihttp.server contains “nginx”
//过滤http头中server字段含有nginx字符的数据包http.content_type == “text/html”
//过滤content_type是text/html的http响应、post包,即根据文件类型过滤http数据包http.content_encoding == “gzip”
//过滤content_encoding是gzip的http包http.transfer_encoding == “chunked”
//根据transfer_encoding过滤http.content_length == 279
http.content_length_header == “279″
//根据content_length的数值过滤http.server
//过滤所有含有http头中含有server字段的数据包http.request.version == “HTTP/1.1″
//过滤HTTP/1.1版本的http包,包括请求和响应http.response.phrase == “OK”
//过滤http响应中的phrase

content-Length长度进行过滤,过滤语法为http.content_length == 366

所有注入成功的语句也可以从响应包查看到。

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=102#

这条sql语句的含义:第一个字符的ASCII码为102

>>> print(chr(102))  # 将ASCII码转换为字符
>>> f

我怎么可能一个一个查看注入成功时字符对应的ASCII值是多少呢。

0x004 脚本编写

将上面过滤后的结果导出

使用正则过滤出注入语句和字符对应的ASCII码

import renumber = []
with open("aa.txt","r",encoding="utf-8") as f:for i in f.readlines():flag_number = re.findall(r"\[Request URI: .*?=(\d+)%23\]",i,re.S) # 字符对应的ASCII码url_list = re.findall(r"\[Request URI: (.*?)\]",i,re.S)  # 注入的urlif flag_number:print(url_list)number.append(flag_number[0])


这里注意注入语句成功的先后顺序,也就是上图圈出来的地方按顺序排序(从第1个字符开始判断,一直到38个字符),就是注入成功的执行流程。

知道了字符对应的ASCII码,反过来通过ASCII码得出对应的字符即可。

最后跑出flag

import renumber = []
with open("aa.txt","r",encoding="utf-8") as f:for i in f.readlines():flag_number = re.findall(r"\[Request URI: .*?=(\d+)%23\]",i,re.S)url_list = re.findall(r"\[Request URI: (.*?)\]",i,re.S)if flag_number:print(url_list)number.append(flag_number[0])print(number)
flag = ''
for i in number:flag +=chr(int(i))
print(flag)

Wireshark分析sql布尔盲注流量包相关推荐

  1. SQL布尔盲注 —— 【WUST-CTF2020】颜值成绩查询

    文章目录 题目 FUZZ 布尔盲注 注入点查找 开心爆表 爆字段 爆值 题目 题目已经说了查询,多半和sql注入脱不了干系 简单的查询框 FUZZ 测试输入1,并查询 发现页面变化了,而且url多了个 ...

  2. 以dvwa为例学习简单sql布尔盲注的详细脚本

    0x01 前置知识 1.SQL注入与SQL盲注 SQL注入: 执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提示SQL语法不正确等 一般在页面上直接就会显示执行sql语句的结果 S ...

  3. SQL注入之布尔盲注——sql-lab第八关

    布尔盲注简介 什么是盲注 盲注其实是sql注入的一种,之所以称为盲注是因为他不会根据你sql注入的攻击语句返回你想要知道的错误信息. [之前在做联合注入第一关的时候,用union select语句注入 ...

  4. SQL注入进阶:掌握布尔盲注和延时注入攻击技巧

    数据来源 一.什么是盲注? 盲注是指一种利用应用程序漏洞进行的攻击技术,攻击者通过在输入参数中注入恶意代码或数据来探测.提取和修改应用程序的敏感数据.它通常用于测试 Web 应用程序的安全性,并且可能 ...

  5. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  6. sql注入学习——布尔盲注

    前言:之前通过前九关学习到了回显注入.报错注入等一些方法,这次就来详细的学习布尔盲注. 首先来了解一下盲注的概念 盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL ...

  7. 【SQL注入-布尔盲注】

    SQL注入方法-布尔盲注 布尔盲注使用场景 案例演示 演示环境 源码分析 实际测试 使用布尔盲注猜解数据. 布尔盲注使用到的函数: 开始 布尔盲注使用场景 布尔型盲注应用于无数据回显,且WEB页面无报 ...

  8. 【SQL注入14】布尔盲注的半自动化实现(基于BurpSuite工具和sqli-labs-less8靶机平台)

    目录 1 概述 2 实验简介 2.1 实验平台 2.2 实验目标 3 实验过程 3.1 判断注入点及注入类型 3.2 爆库名(踩坑) 3.3 爆库名(成功) 3.4 爆表名 3.5 爆字段名 3.6 ...

  9. sql注入--布尔盲注

    sql注入–布尔盲注 靶场:sqli-labs-master 下载链接:靶场下载链接 第8关 盲注 php源码 <?php //including the Mysql connect param ...

最新文章

  1. MPB:南京​湖泊所王建军组-​群落构建过程的定量指标——扩散-生态位连续体指数...
  2. 首个中文多项选择阅读理解数据集:BERT最好成绩只有68%
  3. 树莓派(raspberry)启用root账户
  4. 高中计算机教师招聘试题,中小学信息技术教师招聘考试真题及答案.doc
  5. android camera捕捉,通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机
  6. 关于浮点数的剪不断理还乱
  7. 分享java web 期末项目实验源码20套,BBS论坛,ERP管理系统,OA自动化等等
  8. c++多线程——基于锁和条件变量的前程安全队列
  9. CS224N笔记——TensorFlow入门
  10. 长方形旋转html5,HTML5/SVG旋转长方形来得到六边形图案
  11. mx350显卡天梯图_显卡天梯图2020年终整理发布
  12. 常见关系型数据库(sql server/oracle)查询语句面试题
  13. 自然数e的故事(转)
  14. Java将汉字转为拼音
  15. 云计算ACP弹性计算服务(二)
  16. 把图片压缩成指定大小,释放你的内存空间
  17. 视频教程-区块链基础:共识算法-区块链
  18. vue2[初级]事件处理器
  19. 金融大数据分析-Jupyter-Python3-资产定价模型-CAPM
  20. mkfs.xfs指令详解

热门文章

  1. linux 三个特权位
  2. 台式计算机开机慢,台式机电脑开机启动半天才能开机怎么回事_台式机电脑开机启动慢很久如何解决-系统城...
  3. 每个计算机主机只有一个硬盘吗,电脑多加一个硬盘需要重装系统吗? 电脑如何新增加一块硬盘...
  4. 宠物小精灵 动态数组题目解析
  5. 用java计算一元二次方程
  6. 【阅读论文】博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病--第二章
  7. 《老鹰抓小鸡》将代表中国动画电影走出国门,走向世界,yyds❤
  8. 网状结构的“数据”区域
  9. 双非一本考研国防科技大学计算机,【21择校】这些高校不歧视双非,保护一志愿!...
  10. 计算机科学读ms还是phd好,美研申请中怎样判断适合读硕士(MS)还是博士(PhD)?