攻击者通过在HTTP请求中插入特定的参数来发起攻击,如果Web应用中存在这样的漏洞,可以被攻击者利用来进行客户端或者服务器端的攻击。
原理:
浏览器与服务器进行交互时,浏览器提交GET/POST请求参数,这些参数会以名称-值对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。例: http://www.baidu.com?name=aa&name=bb针对同样名称的参数出现多次的情况,不同的web服务器的处理方
式也不同。有的服务器只取第一个参数 ,也就是name=aa。有的服务器只取第二个参数,也就是name=bb。有的
服务器两个参数都取,也就是name=aa,bb。这导致了网站存在一些逻辑漏洞问题。它是利用了不同服务器对于参数获取的结果不同而导致了可以利用某些漏洞。
tomcat只解析重复参数里面的前者,而Apache只解析重复参数里面的后者,我们可以传入两个id参数,前者合法而后者为我们想注入的内容,我们的后端是apache,那么我们只要将参数放在后面即可。
在输入id=1的时候,显示的是id为1的用户
但是在输入?id=1&id=2--+的时候,出现的却是id为2的用户,不再是id为1的用户
利用这个方法还能进行更多的注入,例如:
输入?id=1&id=-2'union select 1,database(),3--+