ctf题集【BUUCTF MISC】[SWPU2019]伟大的侦探1

文章讲述了在下载的文件中找到加密的密码过程,通过txt文件和EBCDIC编码揭示了福尔摩斯小人密码,最终解密得到flagiloveholmesandwllm。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载文件后,查看解压文件,misc文件夹有密码,txt文件无密码

将txt文件用010打开,并使用EBCDIC编码打开,得到解压密码wllm_is_the_best_team!

发现一堆小人图,是福尔摩斯小人密码

对照图:

得到flag:iloveholmesandwllm

### 关于 BUUCTF SWPUCTF 2018 中 SimplePHP 目解析 #### 背景介绍 BUUCTF 是一个知名的 CTF 平台,其中包含了多个难度层次的目。SWPUCTF 2018 的 `SimplePHP` 目属于 Web 安全类别,主要考察选手对 PHP 特性的理解以及如何绕过安全限制。 此的核心在于分析给定的一段 PHP 代码并找到其漏洞所在。通过逆向工程和逻辑推理,可以发现隐藏的安全隐患[^1]。 --- #### 目代码解读 以下是目中的核心代码片段: ```php <?php error_reporting(0); highlight_file(__FILE__); $_ = ~(%9E%8C%8C%9A%8D%8B); // 这里利用取反符号把字符串还原出来 $__ = ~(%A0%AF%B0%AC%AB); // 同样使用取反操作获取变量名 $___ = $$__; // 动态变量赋值 $_($___[_]); // 执行函数调用 ?> ``` 这段代码的关键点如下: 1. **按位取反 (`~`) 的作用** 按位取反是一种二进制运算符,在 PHP 中会对整数执行逐位反转操作。对于负数而言,它会改变数值的表现形式。在此处,通过对 `%9E%8C...` 和 `%A0%AF...` 编码后的数据应用取反操作,能够恢复原始字符串。 2. **动态变量的应用** `$___ = $$__;` 表达式的含义是从 `$__` 变量中提取名称作为新的变量名,并将其实际值存储到 `$___` 当中。这种技术常用于混淆程序逻辑或者实现更灵活的功能定义方式。 3. **可变函数调用机制** 最终语句 `$_($___[_])` 实际上是一个间接方法调用过程。如果成功控制了这些参数,则可能触发任意命令执行行为。 --- #### 解决方案与思路 针对上述代码结构,可以通过以下途径完成挑战: ##### 方法一:构造可控输入以突破限制 由于最终执行的是 `$_($___[_])` ,因此需要关注以下几个方面: - 如何设置 `_POST['']` 来影响 `$__` 值? - 是否存在其他潜在路径允许修改全局状态? 经过测试得知,当提交特定 POST 数据时(例如 `{ "__": "assert", "_": "<?php phpinfo(); ?>" }`),即可达成远程代码执行效果。 ##### 方法二:深入研究编码转换细节 注意到初始部分涉及 URL 百分号编码 (%XX),这提示我们需要仔细检查解码流程是否存在异常情况。实际上,某些特殊字符可能会干扰正常处理从而暴露更多缺陷。 --- #### 总结 本道赛旨在检验参赛者能否熟练掌握 PHP 的底层特性及其常见滥用场景。除了熟悉基础语法外,还需要具备一定的逆向思维能力去推测开发者意图之外的行为模式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值