BUUCTF WEB PHP1

本文介绍了如何在遇到服务器防扫措施时使用dirmap工具替代dirsearch进行目录扫描,并通过分析PHP代码,揭示了如何利用序列化漏洞在index.php中构造payload,绕过wakeup方法,设置正确的用户名和密码来获取flag。关键步骤包括修改serialize输出,使用URL截断符%00,以及构造有效的GET参数来触发flag显示。

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

这题提示有备份文件,如果你直接用dirsearch扫,你会扫出来一堆429和503,因为服务器配置了防扫措施,限制了访问频率
要么手动指定扫描速度,或者你可以换个工具,dirmap,这工具本身扫的就不是非常快
扫出来www.zip,看一看,flag.php,一看就是个假flag
把项目导入到phpstorm中,然后搜索flag关键字,发现在class.php里出现了flag,而class.php是由index.php调用
所以看过代码后简单梳理一下思路
index.php

 <?php
    include 'class.php';
    $select = $_GET['select'];
    $res=unserialize(@$select);
    ?>

class.php

<?php
include 'flag.php';


error_reporting(0);


class Name{
   
   
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password
### BUUCTF PHP Web挑战解题方法 #### 分析题目背景 在BUUCTF平台中的Web挑战通常涉及对PHP代码逻辑的理解以及如何绕过或触发特定条件来获取敏感信息。通过审查给定的HTML页面源码,可以发现存在未闭合的注释标签,其中包含了部分PHP脚本片段[^1]。 #### 利用已知漏洞 对于提到的具体实例,当`cat=dog`时会显示标志(flag),这表明服务器端确实执行了相应的判断语句并返回预期的结果。然而,在实际环境中,开发者可能会遗漏关闭HTML注释标记,使得这部分代码被浏览器解析为注释而不被执行。因此,攻击者可以通过直接访问URL参数的方式尝试触发展示flag的功能。 #### 使用伪协议读取文件内容 为了进一步探索其他潜在的安全隐患,还可以考虑使用PHP内置的支持流封装器(stream wrappers)之一——`php://filter`伪协议。这种技术允许用户创建过滤后的输入/输出(I/O)数据流,并可用于读取远程文件的内容而无需依赖于传统的文件系统函数。针对此案例而言,构造合适的payload可以帮助查看目标站点上任意指定文件(如`flag.php`)的真实源代码,从而找到隐藏在内的flag字符串[^2]。 ```http http://example.com/index.php?file=php://filter/read=convert.base64-encode/resource=flag.php ``` 上述请求将会把`flag.php`的内容经过Base64编码后反馈回来,之后只需对其进行解码即可得到原始文本形式下的flag。 #### 总结 解决这类CTF竞赛中的PHP Web挑战不仅考验选手们的基础编程能力,更强调其逆向思维能力和对各种安全机制细节的关注程度。通过对现有线索的有效组合与创新应用,往往能够开辟新的突破口,最终达成比赛目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值