Less 29-33
Less 29 GET -Error based- IMPIDENCE MISMATCH- Having a WAF infront of web application
这一关在web应用前有一个waf,在关卡列表界面直接点开是没有的,要在地址栏输入
http://127.0.0.1/Less-29/login.php
才是有waf保护的界面
其实这里并不是真正的硬件waf,只是有两个函数模拟了waf的功能和收到参数的反应。sqlilabs靶场也提供了能够部署真正硬件waf的代码,不过随着时代的发展,waf也在变化,专门配置这样一个waf也没太有必要,直接使用这个模拟题目的就好了。
这一关在正常配置waf的情况下,的结构图如下所示
客户端在访问服务器端时,需要先经过一个tomcat服务器,这个tomcat服务器中部署的过滤代码充当了waf
的功能。输入的参数经过tomcat服务器过滤后,再被传入到真正的服务端apache服务器上处理,然后逐层返回到客户端。
这里传入的参数只有一个,名为id,当我们强行传入两个名都为id的参数时,waf获取的是第一个参数,而忽略第二个参数,则对第二个参数的内容不做任何检查和过滤,这样第二个参数就可以传入到apache服务器端,进行解析。
构造如下代码
?id=0&id=-1' union select 1,2,database() --+
传入两个参数用&
符号隔开,第一个参数用于绕过waf,第二个参数则是传入apache服务器进行运行的注入代码。
注入成功。
Less 30 GET - BLIND - IMPIDENCE MISMATCH- Having a WAF infront of web application
这一关的绕过waf的思路与上一关相同,依然是传入两个名为id的参数,第一个参数用于让waf检测,第二个参数用于在服务端注入。这一关的使用"
进行闭合,除此之外,在服务端没有任何过滤手段,这里使用前面的盲注脚本,基本没什么需要修改的地方,只是加入一个名为id的传入参数即可。
from lxml import html
import requests
def getCheck(url,xpath,payload):
r=requests.get(url