0x00 记忆方式
case when 15 like ‘1%’ then 0 else 2*1e308 end
0x01 前言
在一次日常的web安全检测时发现的一个sql注入,刚开始是直接扔sqlmap里面的,后面发现sqlmap对于这个站是怎么样都无法正常的检测注入

而手工检测是可以注入但是人家返回的是你输入的内容,也就是不会有数据库的数据返回
这就很蛋疼了,并且通过这个网站的一处输入与输出的地方,我还知道了,他会全局把( )过滤为[ ]这就说明我们注入的时候是没有函数可以给我们使用的,也解释了为什么sqlmap会检测不出来。
如下图:

好了前言介绍完了,剩下的就是与项目无关了
最后在实战时,发现可以使用 union + case when 来进行布尔盲注获取数据,也就是通过他,我的项目成功通过了,我们在本地模拟一下,因为在发肯定会漏,而且也不好理解
0x02 演示代码
我在本地写了几行代码,模拟线上的情况。
<?php$id = @$_GET['id'];$dsn = "mysql:host=127.0.0.1; port=3306; dbname=test; charset=utf8";$user = 'root';$psw ='root';$pdo = new PDO($dsn, $user, $psw);$sql = 'select * from test';if (!empty($id)) {$id = str_replace("(", "[", $id);$id = str_replace(")", "]", $id);} else {exit;}$sql .= ' where ' . 'id = ' . $id;echo 'sql:' . $sql;echo '<br/>';echo '<br/>';echo '<br/>';//进行查询数据库出问题则报具体错误$query = $pdo->query($sql);$res = @$query->fetch();if ($res) {// 这里写访问记录+1 但是我不想写,所以就直接把那个+1的流程去掉了echo 'studio_one_hour_pageview_' . $id . '_53aa9d8bcf7749bdb0bbajksbdjkasbd';}
0x03 测试







好了其实前面都是在凑字数的 : )
后面发现我们可以使用这种方法来进行注入

例如查库名:



