1. 初识BJDCTF EzPHP的挑战第一次看到这道题目时我承认有点被它复杂的过滤规则吓到了。题目看似简单就是让你通过一系列检查获取flag但实际审计起来才发现处处是坑。这道题完美展示了PHP代码审计中常见的各种绕过技巧特别是多层编码和协议利用的巧妙组合。题目入口是一个看似普通的网页但查看源码后会发现注释中藏有线索。这个设计很经典很多CTF题目都喜欢把关键信息藏在HTML注释里。用base32解码注释内容后我们得到了真正的入口文件1nD3x.php。这种藏宝图式的设计在CTF中很常见提醒我们审计时一定要养成查看源码的好习惯。拿到源码后我习惯先整体浏览一遍代码结构。这道题设置了七重关卡每关都有不同的过滤规则QUERY_STRING的黑名单过滤debu参数的严格匹配$_REQUEST的字母检测file_get_contents的内容验证sha1的强类型比较create_function的代码注入最后的flag隐藏机制2. 突破QUERY_STRING的黑名单第一关的过滤非常严格直接检查$_SERVER[QUERY_STRING]中是否包含黑名单关键词。这里有个关键知识点$_SERVER[QUERY_STRING]获取的是原始未解码的URL参数而$_GET会自动进行URL解码。我曾在实际项目中遇到过类似情况。当时为了绕过WAF的检测我们团队就利用了编码差异的特性。在这道题中解决方案是对所有可能触发黑名单的参数名和值进行URL编码。例如把shana编码为sh%61na把passwd编码为p%61sswd这种编码方式能有效绕过基于关键词的过滤因为黑名单检查的是原始字符串而PHP在处理时会自动解码。需要注意的是编码时要确保解码后的字符仍然是有效的变量名。3. 换行符绕过正则匹配第二关要求debu参数必须正则匹配/^aqua_is_cute$/但又不能完全等于aqua_is_cute。这种看似矛盾的要求其实可以通过换行符绕过。preg_match函数在默认情况下会用$匹配字符串结尾但遇到换行符时会停止匹配。因此我们可以在字符串末尾添加%0aURL编码的换行符构造如下payloaddeb%75aq%75a_is_c%75te%0a这里有几个技巧对部分字符进行URL编码避免触发第一关的黑名单在字符串末尾添加换行符使正则匹配成功但字符串比较失败保持关键字符的可识别性确保业务逻辑能正确执行4. 利用$_REQUEST的特性绕过字母检测第三关会检查所有$_REQUEST参数的值如果包含字母就直接拒绝。$_REQUEST包含了GET、POST和COOKIE参数而且POST参数会覆盖同名的GET参数。绕过方法是先通过GET方法传入编码后的参数再用POST方法传入纯数字的值覆盖。这样GET参数携带了必要的信息经过URL编码POST参数满足了字母检测的要求由于代码先处理GET再处理POST实际执行时使用的是GET参数的值这种参数覆盖的技巧在CTF中很常见我在审计真实系统时也发现过类似漏洞。开发者往往低估了参数传递的复杂性导致安全检查被绕过。5. 巧用data协议绕过文件内容检查第四关要求读取的文件内容必须是debu_debu_aqua但服务器上显然没有这样的文件。由于http和https协议被禁止我们可以使用data协议来构造所需内容。data协议的基本格式是data:[mediatype][;base64],data在这道题中我们构造filedata://text/plain,deb%75_deb%75_aq%75a这里需要注意对部分字符进行URL编码避免触发之前的过滤规则明确指定MIME类型为text/plain直接内嵌所需内容不需要base64编码data协议在CTF中非常实用它允许我们直接在URL中嵌入文件内容常用于绕过各种文件读取限制。6. sha1强比较的两种绕过方式第五关要求两个不同的变量具有相同的sha1值这是典型的哈希强比较绕过。常见的有两种方法数组绕过sha1函数处理数组时会返回NULLsh%61na[]1p%61sswd[]2哈希碰撞寻找两个不同的字符串产生相同的sha1值在CTF中通常使用第一种方法因为它简单可靠。我在实际渗透测试中也遇到过类似场景开发者没有考虑数组的特殊情况导致认证被绕过。7. create_function的代码注入技巧最后一关是最复杂的需要利用create_function的代码注入漏洞。create_function的工作原理是动态创建一个函数但由于实现方式的问题可能导致代码注入。典型的注入方式是在第二个参数中闭合原函数定义然后添加恶意代码。例如$code create_function; $arg }phpinfo();//;在这道题中我们需要通过flag[code]参数设置$code为create_function通过flag[arg]参数注入恶意代码绕过arg参数的黑名单过滤最终构造的payload如下fl%61g[c%6fde]create_functionfl%61g[%61rg]}var_dump(get_defined_vars());//这个payload会输出所有变量包括隐藏的flag信息。在实际测试中我发现很多开发者不了解create_function的危险性导致严重的安全漏洞。8. 进阶的文件包含与取反操作本以为拿到flag就结束了没想到题目还藏了一手。真正的flag在rea1fl4g.php中但直接包含会遇到各种限制点号被过滤无法直接写文件名include关键字被过滤常规的编码方式被检测解决方案是使用require代替include对文件名进行base64编码或者使用取反操作绕过过滤取反操作的步骤$a php://filter/readconvert.base64-encode/resourcerea1fl4g.php; echo urlencode(~$a);得到的payloadfl%61g[%61rg]}require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F));//这种取反操作在绕过复杂过滤时非常有效我在一些实际系统的渗透测试中也成功应用过这种技术。
企业数字化 ERP 产品动态
相关推荐
我的vibe coding日常与工具选择 作为一个一个人干全栈的独立开发者,vibe coding 不是锦上添花,是我每天最核心的工作方式——口述需求、AI 生成、迭代修改,三个动作循环一整天。TRAE作为字节跳动出品的国内首款AI原生IDE,目前注册用户已超600万,刚好能… · 2026/9/25 0:59:48
paperxie 期末周破局指南:AI 课程论文写作功能,终结结课文稿熬夜内耗 paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/课程论文课程论文 - PaperXie智能写作PaperXieAi论文智能生成软件,10分钟生成万字毕业论文、期刊论文、文献综述、PPT,Aigc查重、降重报告、文献资料。只需一个标题,从开… · 2026/9/21 17:47:57
聚己内酯-炔基 PCL-Alkyne称量要点与误差控制方法 PCL-Alkyne 为末端修饰炔基活性基团的功能化聚己内酯高分子材料,是点击正交反应、生物分子共价偶联、纳米载体表面改性的常用原料。该产品外观多为粉末或低熔点蜡状固体,本身具备较强吸湿性,常温存放极易结块粘连;称量环节产生的误… · 2026/9/25 4:06:47
集中分拨保税物流服务商联系电话直联,欣进物流方案定制省心 什么是集中分拨保税物流:核心属性与应用基础科普集中分拨保税物流,是依托保税区域的政策与仓储资源,将多批次、多来源、多客户的保税货物集中存储分拣后,再统一配送到终端需求点的保税物流模式,是当前进出口贸易、品牌… · 2026/9/25 11:04:20
移动推荐算法竞赛实战:从数据切分到特征工程的完整代码解析 简介:本资源为阿里移动推荐算法竞赛的完整参赛代码与解析资料包,面向人工智能、数据挖掘及计算机相关专业的学生、教师与科研人员,尤其适合以推荐系统为课题的毕业设计、课程项目或竞赛复现场景。包内共190个文件,以Python源码为核… · 2026/9/25 11:04:20
辽宁全屋定制服务选哪家好?正林家居实力公司推荐 辽宁全屋定制服务选哪家好?正林家居实力公司推荐辽宁正林家居有限公司作为国内整家定制领域的成熟品牌,以整家全案设计—产品研发生产—整体交付为服务主线,覆盖橱柜、衣柜、卫浴柜、木门、墙板、楼梯等全品类定制家居,致力于为用户提供真正… · 2026/9/25 11:04:14
testssl.sh 常见问题(FAQ)深度解析:运行时行为、STARTTLS 评分与 Bash 架构原理 网络安全应用安全CLI漏洞扫描 【免费下载链接】testssl.sh Testing TLS/SSL encryption anywhere on any port 项目地址: https://gitcode.com/gh_mirrors/te/testssl.sh 点击查看 免费下载 testssl.sh 是一款用于在任意端口上检测 TLS/SSL 加密配置的开源工具&am… · 2026/9/25 11:04:14
FME转换器实战指南:从Workbench到PythonCaller的ETL落地路径 简介:这份《2022FME转换器快速参考手册-中文版实用.pdf》面向使用FME Workbench进行空间数据处理的GIS从业者、数据工程师与初学者,帮助读者快速查阅400余个转换器的功能定位与适用场景,解决转换器种类繁多、英文文档查阅不便的问题。资源包共… · 2026/9/25 11:04:08
ax调度实战:多Agent任务队列、优先级控制与超时重试机制 这两天"ax调度"突然成了圈内热词,好几个技术群都在转发。作为一个从 prompt 工程一路折腾到多 Agent 系统的一线开发,我第一反应是:大家终于开始正视"调度"这个东西了。很多人以为 Agent 应用 提示词 模型 工具调用&a… · 2026/9/25 11:04:08
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37