sqli-labs靶场-24-二次注入小应用

本文详细介绍了二次注入的概念,通过分析sqli-24靶场实例,讲述了如何利用用户输入数据的转义漏洞进行攻击。作者展示了修改密码时的源代码,强调了在实际场景中找到并利用二次注入的方法。
摘要由CSDN通过智能技术生成

又是一次靶场练习,今天为各位小伙伴带来一次sql注入中二次注入的一次训练!

二次注入

开始之前需要 大家了解什么是二次注入,简单来说就是用户输入的数据会经过转义,但是即使转义,最终存在于数据库中的依旧还是用户输入的原始数据,第二次对数据进行处理时候直接从数据库中取出原始数据,数据中一般带有单引号和#号,然后下次使用在拼凑SQL中,所以就形成了二次注入。

sqli-24靶场分析

首先分析一下,一看这种登录框 有注册页面 还有修改密码页面
可能也会想到二次注入。但是二次注入毕竟还是不会这么简单就被发现的所以一般都是在代码审计中发现这样的注入漏洞.

二次注入的几个要点

  • 知道存在用户的一个用户名
  • 第一次注册时候 数据经过转义
  • 二次修改直接从数据库中提取,不进行转义

查看源代码

假设我们此时已经知道了admin 这个用户 此时我们如何创建一个用户并且最后能够通过二次注入 将其密码修改成我们所需要的?

修改密码的源代码

	# 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";
	
		}
		else
		{
			header('Location: failed.php');
			//echo 'You tried to be smart, Try harder!!!! :( ';
		}

可以看到我们的用户修改数据库时候直接用的直接用的 "UPDATE users SET PASSWORD=‘ p a s s ′ w h e r e u s e r n a m e = ′ pass' where username=' passwhereusername=username’ and password=‘$curr_pass’ ";

这条语句直接用$username 如果我们修改的用户名提交的是admin’# 再将他拼接到这条语句你会发现我们修改的不是admin’# 而是admin 的密码 此时我们就可以利用admin用户登陆

准备就绪 直接打

首先注册一个admin’#的用户

直接修改密码 然后你用admin的用户登陆 就用修改后的密码 神奇的一幕发生… 你登上去了…成功!

总结:

其实二次注入并不难理解 ,只不过可能用的比较困难需要很多的前提条件!

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值