less-19-20
查看源码
……
$uagent = $_SERVER['HTTP_REFERER'];
……
$uname = check_input($_POST['uname']);
$passwd = check_input($_POST['passwd']);
……
$sql="SELECT users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
$result1 = mysql_query($sql);
$row1 = mysql_fetch_array($result1);
if($row1)
{
echo '<font color= "#FFFF00" font size = 3 >';
$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";
mysql_query($insert);
和less-18相同,过滤了$uname和$passwd,但是插入的$uagent并没有过滤,存在注入点
和less-18不同的地方是,$uagent定义的是,当前页面的上一个链接地址
$uagent在数据包中的位置是 Referer:
POST /sqli-labs-master/Less-19/ HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://127.0.0.1/sqli-labs-master/Less-18/ Content-Type: application/x-www-form-urlencoded Content-Length: 38 Connection: close Upgrade-Insecure-Requests: 1 uname=admin&passwd=admin&submit=Submit
这样我们就可以更改Referer
方法和less-18的注入方法相同
less-20
代码片段
echo "<br></font>";
$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";
$result=mysql_query($sql);
if (!$result)
{
die('Issue with your mysql: ' . mysql_error());
}
可以发现只要是登陆过的Cookee没有过期的情况下,再次登陆时会使用cookee登录,cookee存在注入点,所以我们只需要更改cookee就可以进行报错注入
方法和less18一样
less-21
源码截取
$cookee = base64_decode($cookee);
echo "<br></font>";
$sql="SELECT * FROM users WHERE username=('$cookee') LIMIT 0,1";
$result=mysql_query($sql);
if (!$result)
就多了一步base64编码,所以我们只需要把修改过的cookie经过base64加密就可以了



浙公网安备 33010602011771号