前言
提示:基于错误,双引号,数字型注入,与前两关不同的是需要闭合括号
1、测试是否存在注入点
http://localhost/sqli-labs/Less-4?id=1'
尝试输入双引号
http://localhost/sqli-labs/Less-4?id=1"
源码
$id = '"' . $id . '"'; // 直接将输入的内容两边拼接上双引号 "1"
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
echo "<font size='5' color= '#99FF00'>";
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "</font>";
}
else
{
echo '<font color= "#FFFF00">';
print_r(mysql_error());
echo "</font>";
}
}
else { echo "Please input the ID as parameter with numeric value";}
根据报错信息我们可以看到,输入的内容被放到一对儿双引号和圆括号中,select ... from ... where id=(”1”) ...
,根据以上源码也可以看到。
我们在查询时需要将双引号
和括号
进行闭合。
$sql=“SELECT * FROM users WHERE id=(“1”) and 1=1 – +’) LIMIT 0,1”;
由以上操作可知存在SQL注入。
这关和第三关类似,第三关查询时是单引号+括号,这关变成了双引号+括号。
更多查询操作参考第三关:https://blog.csdn.net/weixin_44032232/article/details/109310307