双层服务器结构
一个是tomcat的jsp服务器,一个是apache的php服务器,提供服务的是php服务器,只是tomcat向php服务器请求数据,php服务器返回数据给tomcat。
此处的29-32关都是这个结构,不是用docker拉取的镜像要搭建一下环境(tomcat、jdk、mysql-connector-java)。
大多数服务器对于参数解析的介绍
web服务器 | 参数获取函数 | 获取到的参数 |
php/apache | $GET('par') | last |
jsp/tomcat | request.getparameter('par') | first |
perl(cgi)/apache | param('par') | first |
python/apache | getvalue('par') | all(list) |
asp/iis | request.querystring('par') | all()comma-delimited string) |
注意,index.jsp?id=1&id=2 请求,针对图中的服务器配置情况,客户端请求首先过 tomcat,tomcat 解析第一个参数,接下来 tomcat 去请求 php服务器,apache 解析最后一个参数。
返回参数应该是 id=2 的内容,应为时间上提供服务的是 apache(php)服务器,返回的数据也应该是 apache 处理的数据。而在我们实际应用中,也是有两层服务器的情况,我们往往在 tomcat 服务器处做数据过滤和处理,功能类似为一个 WAF。而正因为解析参数的不同,我们此处可以利用该原理绕过 WAF 的检测。该用法就是 HPP(HTTP Parameter Pollution),http 参数污染攻击的一个应用。HPP 可对服务器和客户端都能够造成一定的威胁。
Kali-linux-2020 sqli-labs环境配置(含网上最全Less-29在Kali上的配置)_kali部署less-CSDN博客