CTFSHOW-Misc刷题(持续更新)

文本隐写(难度:EZ)

考验的是word的信息提取?反正没有那么恶心

首先,给了一个doc文件


wps左上角 文件–>选项—》隐藏文字,可以看见如上的末尾逗号

ctrl+f 选择替换

将中文”,“替换为1

将英文“,”替换为0

得到01101111011001100110011001110011011001010011101000110000011110000011001100110100001110010011000000001010


复制01字符串到http://xiaoniutxt.com/binaryToString.html
转化得到偏移量 3490


用010edit打开docx文件,寻址到3490 ctrl+g跳转(该文件101编辑器下有很多PK头)

头:504b03040a

所以也需要将3490处的0000000xxxx0a 修改为504b03040a

(由于这一段后面没有新的504b03040a的头了)一直选中到末尾复制保存为新文件后缀为docx

继续修改隐藏文字,但是看不见(字体被设置成白色了),但是可以选中这段隐藏文字,通过“大声朗读”可以发现是一群字母,其中有R,于是通过查找方式看隐藏文字

得到
RmxhZyU3QnNob3dfY3RmX3Rzd19jYyU3RA==

Base64解码得
Flag{show_ctf_tsw_cc}

miscx(难度:还行)

直接打开,发现只有两个文件,但是直接解压,会输出hint和flag两个隐藏的txt文件

选用bandzip打开

只打得开misc1.rar的png图片,其他全是加密的(看到图片右边可能有隐藏,想过可能需要改变png的16进制代码以完成分辨率和边界的扩展,但是用2020直接把另一个doc文件打开了)

获得下面编码

♭‖♭‖‖♯♭♭♬‖♩♫‖♬∮♭♭¶♭‖♯‖¶♭♭‖∮‖‖♭‖§♭‖♬♪♭♯§‖‖♯‖‖♬‖‖♪‖‖♪‖¶§‖‖♬♭♯‖♭♯♪‖‖∮‖♬§♭‖‖‖♩♪‖‖♬♭♭♬‖♩♪‖♩¶‖♩♪‖♩♬‖¶§‖‖♩‖¶♫♭♭♩‖♬♯‖♬§♭‖♭‖♩¶‖‖∮♭♭♬‖‖♭‖♫§‖¶♫‖♩∮♭♭§‖♭§‖♭§§=

https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue进行音符解码得到

U2FsdGVkX1/eK2855m8HM4cTq8Fquqtm6QDbcUu4F1yQpA==

尝试BaseX编码,发现都不是,看到有hint提示,猜测为rabit加密,key为2020

得到

welcome_to_payhelp

发现是hint文件的密码

这串字符,尝试破解

大概经历了4、5次Base64解密

得到一个url编码,我懒得查表,直接ai

(%21是!,元宝没翻译出来)

获得flag.txt文件的密钥:hello 2020!,打开后获得flag{g00d_f0r_y0u}

Misc50(难度:爆难TwT)

简言:压缩包套娃,然后密码转换,然后16进制解码得新的压缩包代码

打开后只有一个图片,但是这个png大得夸张

直接找到文件尾,把后面的zip文件单独抽出来,套娃:

Bandzip用来查看层数和方向,退出来后发现最后一层压缩需要密码。

啥线索就没有了,想了半天,漏掉了一个线索,就是最开始分离图片时,末尾有一个“==”,这是Base解码[见上图]

tEXtComment Sk5DVlM2Mk1NRjVIU1gyTk1GWEgyQ1E9Cg==

Sk5DVlM2Mk1NRjVIU1gyTk1GWEgyQ1E9Cg==过cyberchef(from base64)解码得JNCVS62MMF5HSX2NMFXH2CQ=

JNCVS62MMF5HSX2NMFXH2CQ=再过一遍cyberchef(from base32)解码得KEY{Lazy_Man}

除此之外!!!,老朋友7Z可以看rar文件注释,发现在第三层fbi.rar的注释里

有一个Base编码GEZDGNBVGYFA====,过cyberchef(from base32)解码得123456

解压fbi.rar得flag.zip,有加密,尝试之前的KEY{Lazy_Man}和123456,123456能解密,得thienc.txt

得到了一串怪物,经观察,3078很长出现

其中3078大量出现,用3078过cyberchef(from hex)得0x,

推测为16进制字符串转码,全文过python程序,解码16进制字符串

#这过程挺慢的
import re
from tqdm import tqdm 

def read_file(filepath):
    with open(filepath) as fp:
        content=fp.read();
    return content

number = read_file('thienc.txt')
result = []
result.append(re.findall(r'.{2}', number))
result = result[0]

strings =''
for i in tqdm(result, total=len(result), desc="处理中"):
    y = bytearray.fromhex(i)
    z = str(y)
    z= re.findall("b'(.*?)'",z)[0]
    strings += z

b= strings.split('0x')

strings=''
for i in b:
    if len(i) ==1:
        i= '0' + i
    strings +=i

with open('te.txt', 'w') as f:
    f.write(strings)

发现是个7z文件

继续优化python程序,让解码出来的数据可以直接生成7Z压缩包

(太tm不容易了T_T好恶心的题)

7z压缩包,有加密

尝试之前的KEY{Lazy_Man}和123456,KEY{Lazy_Man}能解密,得secenc.txt,打开发现是base编码字符串

用secenc.txt里的字符串过cyberchef,经暴力穷举多次base解码(64-32-32-32-32-64-32-32-32-32-64-32-32-32-32)共15轮,得到具有明显规律的

!?字符串

将这段!?字符串放在word里,用空格替换回车(^p替换成 ),消除换行,使字符串成为规范的short ook编码,再将这段short ook编码解码成文本(Ook! to text),解码出来的文本为典型的Brainfuck编码

+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.<
++++[ ->+++ +<]>+ +++.< +++++ +[->- ----- <]>.< +++[- >+++< ]>+++ ++.++
+++++ .---- ----- .<+++ ++++[ ->--- ----< ]>--. <++++ +++[- >++++ +++<]
>++++ +++++ +++.- ----- --.-- ----. <++++ [->++ ++<]> +++++ .<+++ +++[-
>---- --<]> -.<++ ++[-> ++++< ]>.++ ++.<+ ++[-> ---<] >---- --.<+ +++[-
>++++ <]>++ .---- ---.< +++++ +[->- ----- <]>-- ----- -.<++ +++++ [->++
+++++ <]>++ ++.++ +++++ .++++ ++++. <++++ +++++ [->-- ----- --<]> -----
.<+++ +++++ +[->+ +++++ +++<] >++++ +++++ ++.<

再将这段Brainfuck编码解码成文本:flag{Welc0me_tO_cTf_3how!}

Misc50(难度:EZZZZZ)

红包题第一弹

给了1-87个zip,每个zip里面是jpg文件,整合后应该是个gif动图

观察到每个文件末尾是base64:xxxxxxxxx

猜测,可能是每个文件末尾的base64编码整合在一起

import os
import re
import zipfile
import base64

# 配置路径
source_dir = r"C:\Users\q1388\Downloads\flag\flag"
output_dir = os.path.join(source_dir, "extracted")
output_base64_file = os.path.join(source_dir, "combined_output.txt")
output_decoded_file = os.path.join(source_dir, "combined_output.bin")

# 创建输出目录
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 存储所有base64数据
all_base64_data = []

# 按数字顺序获取zip文件
zip_files = []
for i in range(1, 88):
    zip_path = os.path.join(source_dir, f"{i}.zip")
    if os.path.exists(zip_path):
        zip_files.append((i, zip_path))

print(f"找到 {len(zip_files)} 个zip文件")

# 解压每个zip文件并提取末尾的base64数据
for num, zip_path in zip_files:
    print(f"\n处理: {num}.zip")
    
    try:
        # 创建解压目录
        extract_dir = os.path.join(output_dir, str(num))
        if not os.path.exists(extract_dir):
            os.makedirs(extract_dir)
        
        # 解压zip文件
        with zipfile.ZipFile(zip_path, 'r') as zip_ref:
            zip_ref.extractall(extract_dir)
        
        # 查找解压后的图片文件
        for file_name in os.listdir(extract_dir):
            file_path = os.path.join(extract_dir, file_name)
            
            if os.path.isfile(file_path):
                # 读取文件内容
                with open(file_path, 'rb') as f:
                    content = f.read()
                
                # 尝试以文本方式读取,查找末尾的base64
                try:
                    text_content = content.decode('utf-8', errors='ignore')
                    
                    # 查找末尾的base64:xxx格式
                    # 匹配模式: base64:后面跟着base64字符
                    base64_pattern = r'base64:([A-Za-z0-9+/=\r\n]+)'
                    matches = re.findall(base64_pattern, text_content)
                    
                    if matches:
                        # 使用最后一个匹配(末尾的)
                        base64_data = matches[-1].strip()
                        all_base64_data.append(base64_data)
                        print(f"  找到base64数据,长度: {len(base64_data)}")
                    else:
                        # 尝试查找文件末尾可能隐藏的base64数据
                        # 读取最后1000个字符
                        if len(text_content) > 1000:
                            end_content = text_content[-1000:]
                        else:
                            end_content = text_content
                        
                        # 尝试其他可能的模式
                        alt_patterns = [
                            r'base64[:\s]+([A-Za-z0-9+/=]+)',
                            r'([A-Za-z0-9+/=]{20,}={0,3})\s*$',
                        ]
                        
                        found = False
                        for pattern in alt_patterns:
                            alt_matches = re.findall(pattern, end_content)
                            if alt_matches:
                                base64_data = alt_matches[-1].strip()
                                all_base64_data.append(base64_data)
                                print(f"  找到base64数据(备用模式),长度: {len(base64_data)}")
                                found = True
                                break
                        
                        if not found:
                            print(f"  警告: 未找到base64数据")
                            
                except Exception as e:
                    print(f"  读取文件时出错: {e}")
                    
    except zipfile.BadZipFile:
        print(f"  错误: {num}.zip 不是有效的zip文件")
    except Exception as e:
        print(f"  处理 {num}.zip 时出错: {e}")

# 合并所有base64数据
if all_base64_data:
    print(f"\n\n找到 {len(all_base64_data)} 个base64数据块")
    
    # 写入base64文本文件
    combined_base64 = ''.join(all_base64_data)
    with open(output_base64_file, 'w') as f:
        f.write(combined_base64)
    print(f"base64数据已保存到: {output_base64_file}")
    print(f"总base64数据长度: {len(combined_base64)}")
    
    # 尝试解码base64并保存
    try:
        decoded_data = base64.b64decode(combined_base64)
        with open(output_decoded_file, 'wb') as f:
            f.write(decoded_data)
        print(f"解码后的数据已保存到: {output_decoded_file}")
        print(f"解码后数据大小: {len(decoded_data)} 字节")
    except Exception as e:
        print(f"base64解码失败: {e}")
        print("已保存原始base64数据,可以手动处理")
else:
    print("\n未找到任何base64数据")

print("\n完成!")

整合后base64解码发现是个二维码,扫码出来就能得到flag

评论

  1. 博主
    6 月前
    2026-1-17 17:02:01

    {{doge}}

  2. 6 月前
    2026-1-18 22:57:06

    日更呢日更呢 没有日更我就要日你了哦`(^・ω・^ )`

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇