【sqli-labs】闯关记录11~16
【less-11】基于’的post方式注入
1、测试流程
- 先尝试使用万能密码
1' or 1=1#
如图所示,成功登录!
-
使用burp抓包
输入payload1 ' order by 5#
查看回显 用二分法最终测出主查询的字段数为2
//查询数据库基本信息
输入payload 回显信息 其余的步骤和之前一样,暴表名、字段名、字段值。这里就不再赘述。
2、源码分析
<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))
{
$uname=$_POST['uname'];
$passwd=$_POST['passwd'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname);
fwrite($fp,'Password:'.$passwd."\n");
fclose($fp);
// connectivity //对传入的参数没有做任何的处理,直接拼接到sql语句中,明显存在sql注入漏洞
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
//echo '<font color= "#0000ff">';
echo "<br>";
echo '<font color= "#FFFF00" font size = 4>';
//echo " You Have successfully logged in\n\n " ;
echo '<font size="3" color="#0000ff">';
echo "<br>";
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "<br>";
echo "</font>";
echo "<br>";
echo "<br>";
echo '<img src="../images/flag.jpg" />';
echo "</font>";
}
else
{
echo '<font color= "#0000ff" font size="3">';
//echo "Try again looser";
print_r(mysql_error());
echo "</br>";
echo "</br>";
echo "</br>";
echo '<img src="../images/slap.jpg" />';
echo "</font>";
}
}
?>
【less-12】基于")的post方式注入
除闭合方式不同之外,与上一关没有区别,万能密码与抓包重放均可成功。
【less-13】基于’)的post方式注入
除闭合方式不同之外,与上一关没有区别,万能密码与抓包重放均可成功。
【less-14】基于"的post方式注入
除闭合方式不同之外,与上一关没有区别,万能密码与抓包重放均可成功。
测试闭合方式 | 万能密码登录 |
---|---|
【less-15】基于’的post方式注入(无错误回显)
除闭合方式不同外,这一关频闭了错误回显信息,使得判断闭合的方式有一点困难,但通过一次次尝试也可判断,万能密码与抓包重放均可成功。
【less-16】基于")的post方式注入(无错误回显)
除闭合方式不同外,这一关频闭了错误回显信息,使得判断闭合的方式有一点困难,但通过一次次尝试也可判断,万能密码与抓包重放均可成功。
总结:
less-11到less-16均可使用万能密码登录,只是闭合方式的不同 [ ', "), '), "]
获取管理员密码:
less-11到less-12有具体回显,直接union注入即可(第三者上位逻辑)
less-13到less-16有报错回显,可以使用报错注入
less-15到less-16回显只有两种方式,可以使用盲注