Web writeup | 2021年第一届广东大学生网络安全攻防大赛-晋级赛
2021-5-23
| 2023-4-13
0  |  0 分钟
type
Post
status
Published
date
May 23, 2021
slug
2021/2021gd-university-ctf
summary
• 初赛环境老是炸,最后30多分钟都炸了,答案都提交不了 • 晋级塞,,题目也偶尔会出现断开的问题,,第二个web题,,竟然一开始直接返回空,后来又可以了??不知道是不是只有我遇到这个问题,,晕
tags
CTF比赛
category
比赛Writeup
icon
password

前言

实力吐槽这次比赛
  • 初赛环境老是炸,最后30多分钟都炸了,答案都提交不了
  • 晋级塞,,题目也偶尔会出现断开的问题,,第二个web题,,竟然一开始直接返回空,后来又可以了??不知道是不是只有我遇到这个问题,,晕
  • 而且,,晋级赛竟然不是uuid式动态flag。。。。?
 

old

notion image
任意文件读取,不过flag.txt 读不了,但可以看 hint.txtsmali 字节码,提示了 fastjson 1.2.24
notion image
先读取本进程相关目录
notion image
在 /usr/local/run/start.jar 获取源码,IDEA打开分析
notion image
原来过滤了 flag ,怪不得读取不了
往反序列化方向,不过有waf
notion image
然后还有限制
notion image
这里卡了挺久,试了网上很多EXP,都不行
然后突然想起fastjson反序列化的原理
一般是需要别的库的配合,通过反射获取相关方法的
于是我一个个依赖找
notion image
搜了下 spring ,没有相关漏洞,但是在 tomcat dbcp 里刚好发现了可以利用,而且不用利用 rmi ldap 之类的
然后刚好用到 BCEL,HFCTF2021也刚好用到, 刚好复现过了,所以非常熟练 (
编写 java poc,转换为 class 然后生成 BCEL 码
这样可以绕过waf的黑名单,即绕过了第1个challenge
还有2个 challenge,这个简单,就长度大于2000,然后需要包含 flag 关键字
这里直接把 /flag.txt 改一下名读取即可
notion image
notion image

try_js

审计源码
notion image
你要merge,那我可就不困了,明显的原型连污染
污染一下原型
notion image
即可成功登录
notion image
接下来,就没有然后了,,
notion image
除了输入黑名单以外的东西,都是直接断开连接,晕
notion image
emm 快结束了,,环境就可以了???
notion image
fuzz
notion image
.DS_Store 是mac的备份文件,有的小伙伴应该遇到过,就解压了mac的压缩包,莫名其妙多了这个文件
通过 shellme.php 得知 flag 在 /var/www/flag
然后通过 y0u_w1ll_s3e_Me.txt 知道源码
<?php classname = "SayHi"; $this->param = array("C", "T", "F", "E", "R"); $tmp = new $this->classname($this->param); } public function __destruct() { if (strpos($this->param, 'flag') !== false || strpos($this->param, '?') !== false || strpos($this->param, '*') !== false) { die('You want to hack me?'); } else { $text = new $this->classname($this->param); foreach ($text as $t) { echo ($t); } } } public function __wakeup() { $this->checkMethod = new Check; if ($this->checkMethod->vaild($this->param) && $this->checkMethod->vaild($this->class)) { echo ("You are a good man!"); } else { die('You are a hacker?'); } } } class SayHi { public $a; public function __construct($a) { $this->a = $a; array_push($this->a, "HELLO"); return $this->a; } } class Check { public function vaild($code) { $pattern = '/[flag|file|!|@|#|$|%|^|&|*|=|\'|"|:|;|?]/i'; if (preg_match($pattern, $code)) { return false; } else { return true; } } } if (isset($_GET['p'])) { unserialize($_GET['p']); } else { $v = new Verify; }
也就是 y0u_w1ll_s3e_Me.php 的源码
就反序列化,,亿下,,就可以了,但时间不够了,,晕
比赛Writeup
  • CTF比赛
  • Laravel8 CVE-2021-3129 复现分析面白i安全小记 | 中国菜刀之连不上的奇怪马
    目录