【CTF-WEB基础】ctfshow-web入门-257—反序列化

先看源码

<?php

error_reporting(0);
highlight_file(__FILE__);
 
class ctfShowUser{
    private $username='xxxxxx';
    private $password='xxxxxx';
    private $isVip=false;
    private $class = 'info';
 
    public function __construct(){
        $this->class=new info();
    }
    public function login($u,$p){
        return $this->username===$u&&$this->password===$p;
    }
    public function __destruct(){
        $this->class->getInfo();
    }
 
}
 
class info{
    private $user='xxxxxx';
    public function getInfo(){
        return $this->user;
    }
}
 
class backDoor{
    private $code;
    public function getInfo(){
        eval($this->code);
    }
}
 
$username=$_GET['username'];
$password=$_GET['password'];
 
if(isset($username) && isset($password)){
    $user = unserialize($_COOKIE['user']);
    $user->login($username,$password);
}

分析代码可以知道,最终要运用的是backdoor->getinfo()

_co

<think>嗯,用户现在在问CTFShow Web入门挑战119的解题思路。首先,我需要回忆一下相关的CTF题目类型,通常Web题可能涉及SQL注入、文件包含、代码审计、命令执行等常见漏洞。根据用户提供的引用内容,比如引用[3]提到抓包找flag,引用[4]用字符类绕过过滤,可能挑战119也涉及类似的技巧。 首先,用户可能需要先了解题目的具体描述。比如题目可能提示某些过滤规则,需要绕过才能执行命令或读取文件。比如引用[4]中的例子,使用方括号绕过对config.php的过滤,挑战119可能也有类似的过滤机制。 接下来,我应该考虑常见的解题步骤:查看页面源码、抓包分析请求头、尝试参数注入、检查是否有文件包含漏洞,或者命令执行的可能。例如,在引用[3]中,通过抓包直接在响应中找到flag,或许挑战119也需要检查HTTP头或响应体中的隐藏信息。 另外,考虑是否存在PHP代码审计,比如参数传递导致eval执行,需要闭合引号或绕过过滤。例如,用户提供的引用[4]使用了反引号执行命令,如果挑战119涉及命令执行,可能需要类似的绕过方法,比如通配符、变量拼接或编码技术。 还需要注意是否有WAF(Web应用防火墙)规则,过滤了某些关键词,如cat、flag、空格等,这时候需要构造payload绕过。比如用tac代替cat,用${IFS}代替空格,或者使用base64编码命令。 如果题目涉及文件包含,可能需要使用php://filter协议读取源码,或者利用目录遍历。例如,使用php://filter/convert.base64-encode/resource=index.php来获取源码的base64编码,再解码查看。 另外,可能存在SSRF(服务器端请求伪造)的情况,利用内部服务获取flag。或者利用反序列化漏洞,构造特定的序列化字符串触发漏洞。 如果题目提示“没思路的时候抓个包看看”,可能暗示flag在响应头、Cookie或某个隐藏字段中。需要仔细检查每个请求和响应的细节。 总结可能的解题步骤:1. 访问题目链接,查看页面源码;2. 抓包分析请求和响应;3. 尝试参数注入,如?cmd=ls,查看是否有命令执行;4. 绕过过滤机制,使用通配符或字符替换;5. 读取关键文件如flag.php,使用tac、more、less等命令;6. 解码或转换输出结果,获取flag。 可能的难点在于如何正确绕过过滤,比如引用[4]中的方法,用conf[!1]g.ph[p]代替config.php。如果挑战119过滤了某些字符,需要类似的技巧,比如利用正则表达式中的字符类,或者使用变量拼接绕过。 此外,可能需要利用环境变量或通配符,比如使用/???/???代替/bin/cat,或者利用${PATH:0:1}获取斜杠。或者使用base64编码命令,如echo dGNhdCAvZmxhZwo= | base64 -d | bash来执行cat /flag。 最后,测试不同的payload,观察返回结果,逐步调整直到成功获取flag。记得题目可能有多种解法,需要灵活尝试不同的绕过方法。</think>### CTFShow Web 入门挑战119 解题思路 #### 1. 题目初步分析 根据CTFShow Web入门题的特点,挑战119可能涉及**命令执行绕过**或**文件读取**,结合引用[4]提到的字符类绕过技巧,推测题目可能对关键字符(如`/`、`.`、`flag`)进行了过滤,需构造特殊Payload绕过[^4]。 #### 2. 解题步骤 **步骤1:参数探测** 假设题目存在命令执行参数(如`?cmd=`),尝试基础命令: ```http GET /challenge119?cmd=ls HTTP/1.1 ``` 若返回目录列表,说明存在命令注入点。 **步骤2:绕过字符过滤** 若`cat`、`flag`等关键词被过滤,可尝试以下方法: - **通配符替换**:使用`tac`代替`cat`,`fla*`匹配`flag`文件。 - **字符类绕过**:如`fla[g]`或`/???/fla*`(利用通配符匹配路径)。 ```http GET /challenge119?cmd=tac%20/fla* HTTP/1.1 ``` **步骤3:编码绕过** 若空格被过滤,使用`${IFS}`替代: ```http GET /challenge119?cmd=tac${IFS}/fla* HTTP/1.1 ``` **步骤4:利用PHP包装器** 若直接读取文件失败,尝试PHP协议: ```http GET /challenge119?cmd=php%20-r%20'echo(file_get_contents("/fla*"));' HTTP/1.1 ``` #### 3. 示例Payload 假设题目过滤了`flag`和`.`,可构造: ```http GET /challenge119?cmd=tac${IFS}/fla[g]?????[1-9] HTTP/1.1 ``` 此Payload通过字符类`[g]`和通配符绕过关键字检测[^4]。 #### 4. 获取Flag 成功执行后,响应中会包含类似内容: ``` ctfshow{xxxx-xxxx-xxxx-xxxx} ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值