标签:xml 极客 函数 extractvalue HardSQL 报错 文档 格式 2019
首先打开题目主页看到是登录界面,先判断闭合类型
- 可以看到这个是单引号闭合
之后测试过滤的字符
2. 之后可以发现select,from,or都报错了,没有回显你可别被我逮住了,说明select,from,or都没有被过滤,但是union被过滤了
之后查询了资料知道这个是xpath报错注入,可以采用函数注入updatexml,extractvalue()
小知识
extractvalue()
extractvalue() :对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第一个参数 : 第一个参数可以传入目标xml文档
第二个参数: xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错
不过函数的限制是:它能够查询的字符串长度最大是32个字符,如果超过32位,我们就需要用函数来查询,比如right(),left(),substr()来截取字符串
再举个例子:
SELECT ExtractValue('', '/a/b'); 这个语句就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。
利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。
小知识二
updatexml()函数
使用前提
在mysql高版本中(大于5.1版本)中添加了对XML文档进行查询和修改的函数,updatexml(),extracvalue()
而显示错误则需要在开发程序中采用print_r mysql_error()函数,将mysql错误信息输出。
函数本身
作用:改变文档中符合条件的节点,使用不同的xml标记匹配和替换xml块的函数。
updatexml(XML_document,XPath_string,new_value);
XML_document:String格式,为XML文档对象的名称,文中为Doc
XPath_string:Xpath格式的字符串,代表路径。
new_value:String格式,替换查找到的符合条件的数据。
注入原理:
在使用此语句时,如果XPath_string不符合该种类格式,就会出现格式错误,并且会以系统报错的形式提示出错误
3.之后就愉快的去进行注入,不过这里也存在几个绕过,^这个符号可以绕过or的限制,()可以绕过空格的限制
4.爆库名 使用extractvalue()函数
点击查看代码
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database())),0x7e))%23
5.爆表名
6.字段名称
7.拿数据 因为这个限制只能显示32位,使用right,left函数
总结
绕过or使用^ 函数注入的限制只能显示32位字符,使用right,left绕过
标签:xml,极客,函数,extractvalue,HardSQL,报错,文档,格式,2019 来源: https://www.cnblogs.com/ArcherCY/p/16420175.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。