【新手入门】SQL注入之盲注

一、引言

在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办?

例如应用程序返回到一个"通用的"的页面,或者重定向一个通用页面(可能为网站首页)。这时,我们之前学习的SQL注入的办法就无法使用了。这种情况我们称之为无回显 ,如果页面有信息显示,我们称之为有回显 。回显状态的页面就用之前学的SQL注入的方式,无回显的这种我们就可以采用盲注的手段。

二、有、无回显

有回显

pikachu靶场

无回显

是指当攻击者控制目标系统执行命令时,目标并不会直接返回结果,造成攻击者无法知晓自己的攻击行为是否成功。

无回显的两种情况

①有防护,注入失败:过滤掉攻击语句,再去数据库查询

②无防护,注入成功:对响应数据进行了加工,只显示一条 ,若数据库查询出来的数据超过了一条,就报错,说查不到数据或404。此情况可使用盲注

三、盲注

盲注,即在SOL注入过程中,SOL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。

SQL盲注分为两大类:基于布尔型SQL盲注、基于时间型SQL盲注。

四、Boolian布尔型盲注

通过一种比较手段来得到一个真假值(布尔值,true 1真、false 0假),根据真假值来断定数据是什么样子的。

手动爆破

布尔型盲注入查询长度

要查询当前库名,首先确定要查询的数据库的长度,再通过截取字符进行对比

复制代码
vince' and length(database())>=4#

代码中的4需要我们从1开始试

可查询出的界面

不可查询出的界面

综上,可知数据库长度为4

布尔型盲注入获取数据库名

数据库常用字符如下:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz. @_

将这些字符和数据库中的每一个字符进行比较得到最终的数据库名

获取数据库第一个字符,输入

复制代码
vince' and if(substring(database(),1,1)='p',1,0)

(这里p是爆破得到的)

一个一个爆破比较麻烦,建议用bp爆破

获取表

复制代码
select table_name from information_schema.tables where table_schema=database() limit 0,1

获取列名

复制代码
select column_name from information_schema.columns where table_name='users' limit 1,1

五、base on time时间型盲注

复制代码
vince' and sleep(x)#

基于时间的延迟,构造一个拼接语句:

复制代码
'vince'and if(substr(database(),1,1)='X'(猜测点),sleep(10),nu11#'

输入后,如果猜测正确,那么就会响应10秒,如果错误会立刻返回错误。

时间型盲注常用函数:sleep(x)、benchmark.如果sleep被防御掉了,可用另一个。或变换sElect、benCHmark等的大小写。

以上内容均为自己学习理解所得,如有错误,欢迎大家评论指正。

相关推荐
Brown.alexis3 分钟前
es6知识点1-自备使用
前端·ecmascript·es6
小小龙学IT6 分钟前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData18 分钟前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean1 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
小爬的老粉丝1 小时前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
J_bean1 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
计算机魔术师1 小时前
新兴多智能体系统的模式与问题
前端
浪子明X2 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.2 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠2 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle