SQL二次注入
创始人
2024-11-05 15:35:15
0

目录

1.什么是二次注入?

2.二次注入过程

2.1寻找注入点 

2.2注册admin'#用户

2.3修改密码


1.什么是二次注入?

当用户提交的恶意数据被存入数据库后,因为被过滤函数过滤掉了,所以无法生效,但应用程序在从数据库中拿出该用户名时没有对'和#进行转义,导致将密码的检测注释了,虽然看似后端代码将我们输入的'进行了转义,但是当将输入的数据存储到数据库中时,会将'加上存储的(数据库存储数据的特征),这样就实现了二次注入,也叫做存储型SQL注入。

2.二次注入过程

登录页面

注册页面 

 修改密码页面

2.1寻找注入点 

进行一些简单的测试,发现都无法成功 

查看后端代码发现,后端代码对我们输入的登录用户名和密码进行了过滤,因此无法注入

function sqllogin(){      $username = mysql_real_escape_string($_POST["login_user"]);  //过滤了单双引号    $password = mysql_real_escape_string($_POST["login_password"]);//过滤了单双引号    $sql = "SELECT * FROM users WHERE username='$username' and password='$password'"; //$sql = "SELECT COUNT(*) FROM users WHERE username='$username' and password='$password'";    $res = mysql_query($sql) or die('You tried to be real smart, Try harder!!!! :( ');    $row = mysql_fetch_row($res); 	//print_r($row) ;    if ($row[1]) { 			return $row[1];    } else {       		return 0;    }   }

但是发现pass_change.php文件中,修改密码时,当从数据库中找出所修改的用户的密码时,没有对username进行过滤,导致出现二次注入点。

if (isset($_POST['submit'])) { 	 	 	# 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 '
';

我们是否可以先注册一个类似admin'#的用户,然后当对admin‘#用户进行修改密码时来进行注入呢?话不多说,直接开干

2.2注册admin'#用户

发现可以注册,与我们设想的一样

然后进行登录

顺利登录,此时页面显示YOU ARE LOGGED IN AS admin'#

2.3修改密码

根据pass_change.php文件的代码分析,current password可以随便填写,只要New Password等于Retype Password,程序就会进入if语句中,sql语句就会生效

if (isset($_POST['submit'])) { 	 	 	# 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 '
';

此时我们将修改的密码进行提交后,admin'#进入sql语句中,上述sql语句就会变为 

$sql = "UPDATE users SET PASSWORD='$pass' where username='$admin'#' and password='$curr_pass' ";

标红的地方就会被注释掉,就会成功修改admin的密码

此时我们使用admin用户进行登录,测试admin的密码是否被修改

可以见到,我们确实用admin用户成功登录,在这之前我们是不知道admin用户的密码的

这就是sql二次注入,可以利用它来修改任意用户的密码,所以危害是比较大的

相关内容

热门资讯

明白辅助挂!wpk透视辅助可测... 【福星临门,好运相随】;明白辅助挂!wpk透视辅助可测试真的,wepoke是机器发牌,可靠教程(有挂...
第七分钟神器!hhpoker有... 第七分钟神器!hhpoker有透视挂的吗,aapoker破解侠是真的吗(透视)教你攻略(有挂分享)1...
每日必看教程!(德州之星)外挂... 每日必看教程!(德州之星)外挂透明挂ai代打辅助黑科技!(fishpoker俱乐部)普及教程(202...
玩家必备科普!wepoke是有... 玩家必备科普!wepoke是有辅助,wepokeai机器人,安装教程(有挂教学)-哔哩哔哩;大家肯定...
五分钟神器!wepoker透视... 五分钟神器!wepoker透视挂辅助,aa poker辅助(透视)详细教程(有挂技术)1、点击下载安...
透视系统!(pokerx智能软... 透视系统!(pokerx智能软件)外挂透明挂辅助软件!(WPK黑科技)wepoke教程(2026已更...
黑科技讲解!德州之星插件,德扑... 黑科技讲解!德州之星插件,德扑之星有规律,新2025教程(了解有挂)-哔哩哔哩;超受欢迎的德扑之星有...
5分钟领会!hhpoker透视... 5分钟领会!hhpoker透视功能如何下载,aa poker辅助包(透视)黑科技教程(有挂技巧)暗藏...
透视真的!(Wepoke)外挂... 透视真的!(Wepoke)外挂软件透明挂辅助神器!(fishpoker app)德州论坛(2024已...
第2分钟了解!竞技联盟辅助插件... 第2分钟了解!竞技联盟辅助插件,wepoker高级辅助(透视)攻略教程(有挂透明挂)1、竞技联盟辅助...