简介

sql注入一般分类如下:
- 基于时间注入
- 基于报错注入
- 基于联合查询注入
- 基于布尔注入

基于报错注入也是一种sql注入漏洞,漏洞原因是后端在处理用户输入时直接拼接进sql语句中进行执行,从而产生了正常业务之外的逻辑。其实本质上和xss这种代码注入类似,核心是没有区分开代码和用户输入的数据。
基于报错注入特点是页面会直接显示回显sql语句执行的报错信息,这样我们其实可以通过故意构造错误的sql语句,将我们想要执行的攻击sql语句的执行结果直接在页面上回显出来。

常见函数

mysql中最常见的利用函数就是extractvalueupdatexml这两个了,以extractvalue为例,看下它原始的用法:
ExtractValue(xml_str , Xpath) 函数,使用Xpath表示法从XML格式的字符串中提取一个值
mysql报错注入利用

函数利用

以上讲的是extractvalue函数的正常使用情况,但是如果我们构造了不符合规定的Xpath,mysql就会报语法错误,并显示XPath的内容,攻击者也是利用这一特性,将想要执行的攻击sql语句结果带出来。

  1. .XPATH语法的报错条件是遇到特殊字符就会报错,如~{等。以~为例,18进制为0x7e,mysql本地执行可以带出user()执行结果。
    mysql报错注入利用

  2. 找个例子,可以通过extractvalue函数,成功查出当前user,可以看到并非是root权限。
    payload:) and 1=(extractvalue(1,concat(0x7e,user(),0x7e))) and 1=1;
    mysql报错注入利用

  3. updatexml函数类似,如下:
    payload:) and 1=(updatexml(1,concat(0x7e,user(),0x7e),1)) and 1=1;
    mysql报错注入利用

  4. 另外有一点需要注意的是,报错内容不可能不限制长,其实是有一定长度限制的,报错内容大约是32个字符:
    mysql报错注入利用

总结

在此小记下mysql基于报错注入的利用。对于互联网行业,此类注入一般比较少,最多的还是基于时间的注入。

相关文章:

  • 2021-12-27
  • 2022-02-09
  • 2021-07-23
  • 2021-10-16
  • 2021-09-13
  • 2021-07-26
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-09
  • 2022-02-11
  • 2021-09-05
相关资源
相似解决方案