搜索结果

×

搜索结果将在这里显示。

MySQL-HPP绕过

MySQL-HPP

SQL注入通过HTTP参数污染绕过

简介

http参数污染即HPP(HTTP Parameter Pollution),是一种注入型漏洞,攻击者通过 在HTTP请求中插入特定的参数来发起攻击。如果web应用中存在这样的漏洞可以被攻击者利用来进行客户端或服务器端的攻击。

在sql注入的应用则是可以达到绕过sqlwaf的目的。

原理

请求服务器的服务的时候,http允许get或者post多次传同一个参数,造成覆盖从而绕过waf的效果。也就是http协议允许同样的名称的参数出现多次

不同的服务器对这个情况的处理方式不一样

例如必应搜索

image-20251215221834604

从图中可以看出,对于相同的参数,必应会选择处理后面的参数

但是对于google的话,两个都会处理

image-20251215222028819提供一下常见服务对于多次出现的参数的处理情况

Web服务器 参数获取函数 获取到的参数
PHP/Apache $_GET("par") 最后一个
JSP/Tomcat Request.getParameter("par") 第一个
Perl(CGI)/Apache Param("par") 第一个
Python/Apache getvalue("par") All(list)
ASP/IIS Request.QueryString("par") ALL(comma-delimited string)

用处

waf绕过

攻击者可以利用上述的不一致性,将恶意代码分隔到多个参数中,WAF只能看到碎片化的的内容,而不能识别风险,但后端最终会把碎片的内容拼接成完整的payload

?id=1&id='&id=union&id=select&id=1,2,3&id=--+

或者waf只会看第一个参数的内容是否符合要求,但是后端只会处理最后一个参数

则可以构造

?id=1&id=' union select 1,2,3 -- -

假如WAF匹配到union,我们可以尝试HPP绕过

例如上传的参数传递为:

q=u&q=n&q=i&q=o&q=n&q=select 1,2,user()

这里补充一下虽然不是sql注入的内容

通过HPP绕过XSS

?comment=<scr&comment=ipt>alert(1)</scr&comment=ipt>

在后端可能会拼接成完整的xss语句

请先 登录 再评论