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 测试








好了其实前面都是在凑字数的 : )

后面发现我们可以使用这种方法来进行注入


例如查库名:


源链接

Hacking more

...