【新手入门】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等的大小写。

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

相关推荐
Meepo_haha几秒前
python的sql解析库-sqlparse
数据库·python·sql
Cg136269159742 分钟前
Element-入门
前端
岁岁种桃花儿3 分钟前
AI超级智能开发系列从入门到上天第六篇:自定义AI记忆持久化
数据库
萝卜白菜。3 分钟前
TongWeb7.0配置tongweb-web.xml修改jsessionid名及其值的长度
xml·前端·word
黄昏回响4 分钟前
计算机系统基础知识(补充篇):数据库——数据仓库、数据中台与大数据技术详解
大数据·数据库·数据仓库
同元软控5 分钟前
同元“AI工程七步法”实践:把桌面CAD搬到Web
前端·人工智能
余瑜鱼鱼鱼7 分钟前
css常用功能总结(三)(Chrome 调试工具 -- 查看 CSS 属性)
前端·css·chrome
sqyno1sky7 分钟前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
总有刁民想爱朕ha11 分钟前
数据库行统计和字典导出工具Web版
前端·数据库
大雷神12 分钟前
HarmonyOS APP<玩转React>开源教程二十二:每日一题功能
前端·react.js·开源·harmonyos