关注这个靶场的其它相关笔记: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";}?>