SQLI LABS | Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based
关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客
0x01:过关流程
输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来):
http://localhost/sqli-labs/Less-35/
话不多说,直接对 ID 使用时间盲注字典进行爆破,看看有没有符合要求的模板:
如下,是一个使用时间盲注成功爆破出来的可用模板:
1 and sleep(3)
可以发现,该注入点是一个数字型注入点。并且在测试中,我们还发现,其能返回后端数据库的报错信息。
所以,基于上面的信息,我们可以修改我们的 Payload 为报错注入的 Payload:
-- 获取目标后端当前正在使用的数据库的名称
1 and updatexml(1,concat(0x7e,database(),0x7e),1)
可以看到,我们已经成功获取了当前站点使用的后端数据库的信息。至此,SQLI LABS Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based 成功过关。
0x02:源码分析
下面是 SQLI LABS Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based 后端的部分源码,以及笔者做的笔记:
<?php
//including the Mysql connect parameters.
include("../sql-connections/sqli-connect.php");
function check_addslashes($string)
{
$string = addslashes($string);
return $string;
}
// take the variables
if (isset($_GET['id'])) {
// 本关是数字型注入点,不用 ' 进行闭合,所以这里有点多此一举的嫌疑
$id = check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";
//logging the connection parameters to a file for analysis.
$fp = fopen('result.txt', 'a');
fwrite($fp, 'ID:' . $id . "\n");
fclose($fp);
// connectivity
// 本关是数字型注入
mysqli_query($con1, "SET NAMES gbk");
$sql = "SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result = mysqli_query($con1, $sql);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
if ($row) {
echo '<font color= "#00FF00">';
echo 'Your Login name:' . $row['username'];
echo "<br>";
echo 'Your Password:' . $row['password'];
echo "</font>";
} else {
echo '<font color= "#FFFF00">';
// 如果没有获取到信息,会显示错误信息
print_r(mysqli_error($con1));
echo "</font>";
}
} else {
echo "Please input the ID as parameter with numeric value";
}
?>