24-25上半学年第二次线上赛 | Writeup

一样是部分wp,其他题不会可以来群上问 misc 鲨鱼 不懂如何使用wireshark先去把提示里的链接看了 拿到附件后可以直接用foremost分离 分离出一个压缩包但是要密码,所以我们先进流量包看 进来后随机选择一个http包,跟踪tcp流,就开始把每条流量分析过去 在stream 7发现一串有jpg头的16进制数据 并且是jpg文件尾 复制到cyeberchef梭一下就能出来 拿图片里的密码去解压缩包即可 web 一些黑客技巧 diresearch可以扫到admin目录,发现需要登陆 回到首页搜集信息,怀疑用户名存在madeline 根据题目名称,密码猜测是123456(如果没猜出密码,因为也可以爆破) 成功登陆 进来后点控制台->外观->编辑当前外观,会发现可以对php文件插入代码 直接插入一句马,蚁剑上线即可

December 11, 2024 · 1 min · Red

24-25上半学年第一次线上赛 | Writeup

Misc上课讲过就不写了= =好忙最近,如果有不会的再来群上问吧 触手可得 先看代码,首页只有这些,访问一下flag.php会发现没有内容,所以只能想办法利用下面的代码去拿到flag 很明显这里只要满足$key等于后面一大串就能拿到flag了,所以payload就是 你说上面那个什么md5是干嘛用的?你都知道这样问了,那当然是没用啦^ ^ 时间管理大师 如果你是24届竞赛组成员,可以先看个代码分析的大概逻辑,不一定需要全看懂。 先看入口 这里的spl_autoload_register搜了一下其实就是注册路由,访问什么就进到什么目录下 下面的route其实就是定义访问根路径时使用的路由,这里直接定位到controllers/TimeController.php里看一下逻辑 传入进来的format被赋值给$format,并被丢到TimeModel里处理了一下,这里跟进一下TimeModel类。 可以看到$format被直接与date '+和' 2&1拼接,其中2>&1的意思是将标准错误重定向到标准输出中,意思就是会把这一串指令前的指令执行错误的结果也一并显示回来。然后在刚刚的Timecontroller.php里可以看到后面它被直接丢到exec里作为系统指令执行并接收结果,最后返回输出给我们。所以我们可以通过对$format做手脚从而达到命令执行的效果 这里我们假设传入进来的内容是 ';ls||,则整句代码会变成这样 date '+';ls|| 2>&1 这样执行起来的结果我们可以在自己的linux里尝试一下 会发现执行成功。但一开始我想到用 ';ls;这样的方式没有执行成功,提示权限不足,原因是因为闭合后2>&1在等待你的输入但没有得到,所以会提示权限不足。 还有另一种解法的payload是 ';ls|cat ',这样闭合后的结果如下 date '+';ls|cat '' 2>&1 原理就是将ls的输出用cat显示回来给我们,所以就能达到执行的效果 没有人比我更懂JWT 附件只有一个python文件,先看逻辑 使用flask框架,定义了secret_key,但是是随机值,应该没法爆破 并且只有下面两个路由 先来看一下/login 接收两个变量,username和password,其中username被丢到jwt里进行加密,使用HS256算法。最后将加密完的jwt返回给我们。其中包含了一个比较关键的信息,也就是role后跟着的内容,也就是role的值,我们先记住。 /flag路由里首先会接收请求这个路由的用户所携带的jwt,然后对其进行解码后检验role的值是否是admin,是的话返回flag,不是就告诉我们只有admin才能访问 如果只按照代码的登录逻辑,没有找到可以将role值改成admin的地方。所以我们就要手动改,先随便登录一个账号获取到jwt。因为password后面都没用到所以就不用传。这里注意要把content-type改成json,因为data = request.json 接着丢到jwt.io里,改成admin,然后复制被赋值完的jwt 接着我们回到刚刚的代码,注意到一个地方 这里的options被设置成了不需要验证签名和exp的值,也就是说我们可以将加密算法修改成None,这样就能达到修改了role值还能通过解码的目的。原理如下(原文点击这里查看) 这里我们需要借助一款工具,jwt_tool。下载后,可以在使用文档中查看如何使用None攻击 照着格式填进去就可以生成修改后的jwt了 这里我们选择哪一个都可以。最后我们再根据代码构造一个Authorization就可以啦。不过要注意,根据代码,需要先写上你的用户名,再用一个空格加上jwt。这里我的用户名是1,所以结果就如下

December 5, 2024 · 1 min · Red

2024 强网杯 password game | Writeup

proxy那题是队友写的我就不记录了,不知道他后面会不会更新:https://blog.hayneschen.top/ 主要想记录password game这题 不听php课的每个人都会受到应有的惩罚 前面的游戏过程很简单,直接从拿到源码开始看 function filter($password){ $filter_arr = array("admin","2024qwb"); $filter = '/'.implode("|",$filter_arr).'/i'; return preg_replace($filter,"nonono",$password); } class guest{ public $username; public $value; public function __tostring(){ if($this->username=="guest"){ $value(); } return $this->username; } public function __call($key,$value){ if($this->username==md5($GLOBALS["flag"])){ echo $GLOBALS["flag"]; } } } class root{ public $username; public $value; public function __get($key){ if(strpos($this->username, "admin") == 0 && $this->value == "2024qwb"){ $this->value = $GLOBALS["flag"]; echo md5("hello:".$this->value); } } } class user{ public $username; public $password; public function __invoke(){ $this->username=md5($GLOBALS["flag"]); return $this->password->guess(); } public function __destruct(){ if(strpos($this->username, "admin") == 0 ){ echo "hello".$this->username; } } } $user=unserialize(filter($_POST['password'])); if(strpos($user->username, "admin") == 0 && $user->password == "2024qwb"){ echo "hello!"; } 比赛的时候乍一看感觉挺懵的,和传统的反序化掉用都不太一样,这里先不管反序化时的filter,先来看一下类 ...

November 5, 2024 · 1 min · Red

2024 TKKCTF Beginner | WriteUp

学CTF要做到不会的**多搜**,碰到不会的或者没见过的名词和工具,都能在网路上找到详细的解释和教程,不会一个搜一个。多去尝试自己解决遇到的问题,所有的答案都藏在你曾经也许看都不想看的代码、报错和技术文章里,加油 Misc 你好,CTF! flag就在pdf末尾,不解释 阿娜达瓦~ 使用gif逐帧播放可以发现二维码 扫描后即可得到flag 这是什么? 在cyberchef中先解base32再解base64即可 佛说:只能四天🙏 根据提示搜索与佛论禅在线解密工具 但发现无法解密,需要输入一个密码,回到题目描述注意到这一串内容 输入即可解开 引导题 尝试复制后发现需要密码 本题解法不唯一,这里介绍两种。 方法一:搜索在线解锁工具 解锁后即可直接复制被遮盖的内容。放到cyberchef里梭哈base64即可 方法二:如果你是macOS用户,右键搜索即可,不要点拷贝 一样放到base64解码即可 小泽 下载图片后使用010editor或者文本编辑器均可,拉到最下面就能发现flag Up and Down 将文件下载下来后,可以找到在线工具将文件二进制进行反转,下面我演示linux命令的方式进行反转 一行命令即可,本意就是反转文件二进制数据。将输出的图片打开后即可得到flag RFID 比赛原题,直接放网上的wp https://blog.mo60.cn/index.php/archives/2023-fjss.html 乱乱的字符 统计每个字符出现的频率,可以拼出个大概flag。但可以发现有两个字符出现的频率都是7次,也就是A和i。此时回到题目提示 猜测是AsCii这个单词,而且这样排序的话正好两个i的出现频率加起来就是7次,符合条件,因此flag就是 xujc{Ukn0w_AsCii~} void null() {}、Chiikawa https://x.xn–q9jyb4c/p/ctf-record-w0w/ sharkshark 安装wireshark即可打开pcapng格式的流量包,ctrl+f4可以调出搜索框,选择分组字节流+字符串多次 搜索xujc,可以在一堆假flag中找到flag24.txt为trueFlag 好痛 010打开后再中间发现mp3的模板结束了,可以发现后面是zip文件头 手工分离出来,分离时再尾部还可以发现一个key (原本作者是让做题人根据歌名来猜key,被骂了改附件了qwq) 解压压缩包后那首歌是使用MP3Stego来解码因为歌名奇怪,作者建议先改成1.mp3,然后 在cmd使用 Decode -X -P love 1.mp3 就能得到flag ...

October 23, 2024 · 7 min · Red

红包题第四期WP-答案竟在派蒙中

Misc-答案竟在派蒙中 解题过程: FLAG1: 根据题目提示把派蒙拉开,全选后可以看到有白色字符被选中 更改颜色后是一串以等号结尾的编码 解码得到flag FLAG2: 文档的内容可以确定没有挖掘的内容了,接下来对文件本身进行分析 可以用010editor工具进行分析结构 由于docx文件的本质其实是zip压缩文件,但504B0506(zip文件的结束标志)之后依然有数据可以判断文件后方被写入的隐写文件(出题人当时傻逼了忘了是怎么藏的来着,记成是放里面了) kali的binwalk指令也可以得到一样的结果 可以在010中手动分离文件,也可以用foremost分离 (注意这种压缩包套娃的题binwalk -e有几率出现分不出来的情况所以这里用foremost) 分离后的压缩包解压得到小恐龙一只 这里可以用cat指令查看文件(同理010editor或者记事本打开也可以看到信息) 另一个以等号结尾的编码,根据特征判断是base32编码 解码后得到类flag格式的玩意 由于格式相近推测是凯撒移位加密 枚举后得到flag 尾注: 关于base家族的特征和其它编码推荐一篇文章 https://cloud.tencent.com/developer/article/1748394 https://www.bilibili.com/video/BV1GJ411x7h7

September 22, 2024 · 1 min · Red