当前位置: 首页 > news >正文

CTFWeb Writeup|dirsearch 目录爆破 + JSFuck + PHP 变形混淆解析

第一步:目录爆破,发现隐藏文件

操作使用 dirsearch 对目标站点进行目录扫描

python dirsearch.py -u http://172.26.99.162

扫描结果返回 200 状态码,发现readme.txt,在浏览器访问http://172.26.99.162/readme.txt

知识点

  1. Web 目录爆破(目录扫描):Web 应用经常会遗留备份文件、说明文档、源码文件,页面上没有链接指向这些文件,爬虫无法发现,只能依靠字典暴力枚举路径。
  2. HTTP 状态码200 OK代表资源存在;403 Forbidden代表文件存在但是禁止访问;404 Not Found代表文件不存在。

为什么要做目录扫描:页面源码、抓包只能看到前端输出的内容,服务器上还存放很多没有对外做链接的文件,readme、备份 txt、zip、源码备份都是 CTF 高频考点。

第二步:JS 混淆代码! [] () +解密,获取下一关提示

操作访问readme.txt,页面全部是由! [] () +组成的字符串。

  1. 全选复制页面上所有代码;
  2. 按下 F12 打开浏览器开发者工具,切换到Console 控制台
  3. 将复制的代码粘贴进去按下回车;
  4. 浏览器弹出弹窗'flag(Txt.Txt)',得到新路径提示Txt.Txt

知识点

  1. JSFuck 混淆! [] () +就是经典 JSFuck 编码,它只用 6 种符号[]()!+,就可以表达完整 JavaScript 全部语法,可以把任意 JS 代码转换成只有这几个符号的字符串。

✅为什么必须放到浏览器控制台解密,页面源码 / 抓包看不到结果?

  • 这一整串文本本身不是明文,它是可执行的 JavaScript 代码
  • 浏览器直接访问 txt 文件,只是把文本渲染展示出来,不会自动执行 JS 代码
  • 只有粘贴到 Console 控制台,浏览器 JS 引擎才会解析运行这段混淆代码,执行后调用alert()弹窗输出提示。
  • 抓包拿到的就是原始混淆字符串,没有执行,所以抓包看不到解密结果。

底层原理:JS 里面[]是空数组,![]取反得到布尔值false![]+[]可以做隐式类型转换,把布尔值转为字符串,再通过字符串拼接构造出任意字符。JSFuck 就是基于 JS 隐式类型转换特性实现的混淆。

第三步:访问提示路径,拿到 PHP 变形混淆代码

操作浏览器访问http://172.26.99.162/Txt.Txt,页面出现一大串以$=~[];$={___:++$$...开头的代码。

知识点

  1. 这是PHP 变形混淆(PHP 神盾 / PHP Xor‑Injection 混淆,也叫 PHP 免符号混淆)
  2. 这里有一个坑:代码长得是 PHP 语法,但是放在 txt 文件内。服务器没有把它交给 PHP 解释器执行,只是直接把源码文本返回浏览器。

❗注意:不要误以为是 PHP 代码就要丢到 PHP 环境运行,本题把混淆源码直接输出给浏览器,这串字符串同时也是合法 JavaScript 代码,可以直接交给浏览器 JS 引擎执行。

第四步:再次控制台执行混淆代码,获取最终 flag

操作

  1. 复制页面全部混淆代码;
  2. F12 打开 Console 控制台,粘贴代码回车执行;
  3. 浏览器弹出 alert 弹窗,里面就是最终 flag。

知识点这份混淆巧妙构造语法,同一份字符串既是合法 PHP 语法,同时也是合法 JS 语法

  • 如果放在 PHP 页面访问,PHP 会执行代码;
  • 但本题放在 txt 静态文件,直接返回源码,复制丢浏览器 JS 控制台也可以解析执行,直接弹窗输出 flag。

遇到同类题型通用分析思路

① 第一步:先确认所有常规信息

  1. 看网页页面;
  2. F12 查看源代码;
  3. 抓包看 HTTP 响应包;

如果全部没有 flag,说明 flag 不在前端渲染内容,大概率存在服务器上的隐藏文件,立刻做目录扫描。

② 拿到奇怪符号文本,先判断混淆类型

特征混淆类型处理方法
只有! [] () +JSFuck复制粘贴浏览器 Console 执行,也可以网上找 JSFuck 在线解码器
大量$~{},没有字母数字PHP 异或变形混淆优先尝试粘贴浏览器控制台执行;不行复制放到本地 php 文件,php 命令行运行解析
大量eval()strrev、base64普通 JS/PHP 编码混淆找到 eval 替换 console.log 输出内容

⚠️重要判断点: 文件后缀是.txt,代表服务器不会执行代码,只会返回源代码文本!txt 里面的代码不会自动运行,必须人工复制交给解释器执行,浏览器页面只是单纯展示文本,不会解析执行 JS/PHP。

③ 区分:什么时候放浏览器控制台,什么时候放 PHP 环境

  1. 文件后缀.txt/.html,内容是[]!+(),优先浏览器 Console;
  2. 文件后缀.php,访问页面直接输出乱码 / 混淆,代表服务器已经执行过 PHP;
  3. 文件后缀.txt里面是 PHP 混淆源码:源码原样返回,复制源码,可以两种方式都测试:浏览器控制台、本地 php 运行。

④ 核心做题思想

混淆文本本身≠结果,混淆文本是一段程序,必须交给对应语言解释器执行,才能输出结果;浏览器打开 txt 只是把字符串渲染给你看,不会自动运行程序,所以源代码、抓包都看不到解密之后的 flag。

做题踩坑总结

  1. 不要盯着网页、抓包反复看,页面看不到内容,优先怀疑隐藏文件;
  2. 不要看到 PHP 风格代码,就默认一定要用 PHP 运行,有些混淆设计成双语言兼容,JS 也能跑;
  3. 混淆代码存放在 txt 静态文件,服务器不会自动执行,必须手动复制代码交给解释器;
  4. dirsearch 扫描结果,重点关注200状态码的 txt、zip、bak 备份文件,是 CTF 高频考点。
http://www.jsqmd.com/news/1284804/

相关文章:

  • 从0603到AXIAL:电阻封装选型、库设计与焊接工艺全解析
  • C++/CLI实战:构建原生C++与.NET的互操作桥梁
  • 《大话文渊慧典》:外二篇-按次付费的云OCR有多坑?我用计算器按出了馆长的血压值
  • 为什么运维工程师都在偷偷学Python?看完这篇基础语法解析,你就懂了
  • C++面向对象编程:从类与对象基础到封装实践
  • 长治安防监控筛选指南:瑞创竣工资料规范说明
  • dvwa之weak session ids
  • RAG系统文档切片语义割裂问题分析与解决方案
  • 2026年7月肉类食品设备/梁山食品设备料车购销部哪家专业_梁山安捷二手设备购销部 - 行业平台推荐
  • 一文掌握大模型常用量化方法
  • (2026最新)银川本地人必选的靠谱漏水检测维修推荐:正规防水补漏防水-卫生间/厨房/屋顶/阳台/外墙渗漏水精准测漏,本地人的信赖之选 - 安佳防水
  • Python七大应用方向解析:从Web开发到AI,如何选择学习路径
  • STM32定时器深度解析:从基础定时到PWM与输入捕获实战
  • 2026内江门窗10年质保推荐榜:5家品牌本地执行能力对比 - 家居装修资讯
  • 2026年长沙专业包装设计机构探访及各项服务费用明细
  • Cadence Allegro DRC规则详解:线与形状最小夹角的设计与修复
  • 《大话文渊慧典》:外二篇-国际大厂客服:竖排繁体是“小众需求”——对不起,14亿人的小众
  • 用Office自带功能把Word存成PDF,比安装软件更稳 - 软件工具教程方法
  • 03-特性与参数
  • (2026最新)银川本地漏水检测维修公司靠谱推荐:正规防水补漏上门维修-墙面/屋顶/外墙/暗管漏水检测精准定位 - 即刻修防水
  • 2026年7月二手食品设备/食品设备储罐购销部哪家强_梁山安捷二手设备购销部 - 品牌宣传支持者
  • Simulink中质子交换膜燃料电池建模与仿真实践
  • C++ std::list深度解析:从底层实现到高效应用与性能优化
  • PMSM滞环电流控制:从原理到Simulink仿真实践
  • 物联网设备安全连接方案:PIC18与A5000硬件加密实践
  • 股票配资平台运营逻辑全面梳理重要细节公开
  • 从Python到Java:为什么企业级Agent最终会选择Java?
  • 抖店无货源店群运营全教程:从单店到店群矩阵规模化全流程实操手册 - 抖大侠
  • 2026年7月梁山斩拌机食品设备/梁山食品设备购销部哪家权威_梁山安捷二手设备购销部 - 品牌宣传支持者
  • 2026内江门窗售后最快推荐榜:本地自有团队与跨区派工真实对比 - 家居装修资讯