MISC-polarctf

可爱的冰墩墩

assets/MISC-polarctf/file-20250724192304898.jpg
图片上的flag不是(..(。•ˇ‸ˇ•。)…)
binwalk处理,得到516FE.zip
打开发现要密码
assets/MISC-polarctf/file-20250724192607865.png
实验一下.....就会发现图片上的assets/MISC-polarctf/file-20250724192648261.png提示了密码,是bingdundun
用pyc线上分析工具分析一下,得到

# Visit https://www.lddgo.net/string/pyc-compile-decompile for more information
# Version : Python 3.7

ciphertext = ''
flag = ''
for i in range(len(flag)):
    i = ord(flag[i]) + 10
    ciphertext.append(str(i))

print(ciphertext[::-1])
ciphertext = [
    '62',
    '60',
    '65',
    '108',
    '111',
    '60',
    '109',
    '111',
    '59',
    '109',
    '107',
    '107',
    '107',
    '107',
    '63',
    '64',
    '111',
    '60',
    '64',
    '109',
    '60',
    '108',
    '59',
    '60',
    '109',
    '64',
    '66',
    '61',
    '111',
    '109',
    '65',
    '61']

发现ciphertext是flag转为ASCII码后加10,再逆序输出得到的,所以
ciphertext-10

52 → 4 
50 → 2 
55 → 7 
98 → b 
101 → e 
50 → 2 
99 → c 
101 → e 
49 → 1 
99 → c 
97 → a 
97 → a 
97 → a 
97 → a 
53 → 5 
54 → 6 
101 → e 
50 → 2 
54 → 6 
99 → c 
50 → 2 
98 → b 
49 → 1 
50 → 2 
99 → c 
54 → 6 
56 → 8 
51 → 3 
101 → e 
99 → c 
55 → 7 
51 → 3

逆序输出得到flag

flag{37ce386c21b2c62e65aaaac1ec2eb724}

二维码

  • winhex打开,看到
  • assets/MISC-polarctf/file-20250724194353022.png
  • 感觉像是base64编码,cyberchef去解码,
  • assets/MISC-polarctf/file-20250724194443108.png
  • 扫码得到flag
    -assets/MISC-polarctf/file-20250724194624324.png
flag{ef72c9101bafbb9b44d97e066a8e4d0a}

东北话是最好的语言

打开txt,发现类似Base64的逆序,用cyberchef逆序(reverse)输出一下得到Base64编码(和二维码那个很像),再用Base64解码一下得到图片
assets/MISC-polarctf/file-20250724200524003.png
用winhex打开得到
assets/MISC-polarctf/file-20250724200815621.png
解码,得
assets/MISC-polarctf/file-20250724204729073.png
https://github.com/zhanyong-wan/dongbei
配置环境后,将内容文件后缀改成.dongbei,运行
得到
assets/MISC-polarctf/file-20250725182316070.png
102-f 108-l
所以字符串为flagizhere,进行MD5编码

flag{4d5193eaeb2b18aa7e4357078b7550f3}

LSB

assets/MISC-polarctf/file-20250724213411401.png

找到我我就让你嘿嘿嘿

assets/MISC-polarctf/file-20250724224846235.jpg
放大图片
assets/MISC-polarctf/file-20250724225319423.png找到了┭┮﹏┭┮
assets/MISC-polarctf/file-20250724225429840.png
assets/MISC-polarctf/file-20250724230057695.png
assets/MISC-polarctf/file-20250724230106457.png
符合找到了。。。。
assets/MISC-polarctf/file-20250724232613941.png
所以是jhsaqy(flag为拍摄者所在小区的首字母MD5三十二位加密后套上flag{})

flag{f5ff1ad1f80adcd878049171120ce063}

离骚

  • 对于zip文件来说,进行明文攻击的条件是:有一个单独的文件已知且进行压缩之后的CRC值与某个包含此文件的压缩包的CRC值相等
  • 明文解码..........(报错没有匹配文件(捂脸哭.jpg))
  • assets/MISC-polarctf/file-20250725170318547.png
  • 密码:Jljcxy
  • flag

无限解Base64

  • 直接AI代码
- import base64
import os

def recursive_base64_decode(input_file_path, output_dir=None):
    """
    递归解码Base64文件,直到无法继续解码为止
    
    参数:
    input_file_path (str): 输入的Base64文件路径
    output_dir (str, optional): 输出文件的目录。如果未提供,将在输入文件所在目录创建decoded_files文件夹
    
    返回:
    str: 最终解码结果的文件路径
    """
    try:
        # 确保路径中使用正确的斜杠
        input_file_path = input_file_path.replace('\\', '/')
        
        # 创建输出目录(如果未提供)
        if output_dir is None:
            file_dir = os.path.dirname(input_file_path)
            output_dir = os.path.join(file_dir, "decoded_files")
            os.makedirs(output_dir, exist_ok=True)
        
        # 读取初始文件内容
        with open(input_file_path, 'r', encoding='utf-8') as file:
            current_data = file.read().strip()
        
        decoded_files = []
        iteration = 0
        
        while True:
            try:
                # 尝试解码
                decoded_bytes = base64.b64decode(current_data)
                decoded_data = decoded_bytes.decode('utf-8', errors='ignore')
                
                # 检查是否与上次结果相同
                if iteration > 0 and decoded_data.strip() == current_data.strip():
                    print(f"第 {iteration} 次解码结果与上一次相同,停止解码")
                    break
                
                # 保存当前解码结果
                output_file = os.path.join(output_dir, f"decoded_{iteration}.txt")
                with open(output_file, 'w', encoding='utf-8') as file:
                    file.write(decoded_data)
                
                decoded_files.append(output_file)
                print(f"第 {iteration} 次解码成功,保存到: {output_file}")
                
                # 更新当前数据
                current_data = decoded_data
                iteration += 1
                
            except base64.binascii.Error:
                print(f"第 {iteration} 次解码失败,不是有效的Base64格式")
                break
            except Exception as e:
                print(f"第 {iteration} 次解码时发生未知错误: {e}")
                break
        
        if decoded_files:
            print(f"解码完成!共进行了 {iteration} 次解码")
            print(f"最终解码结果保存在: {decoded_files[-1]}")
            return decoded_files[-1]
        else:
            print("未能进行任何解码")
            return None
            
    except FileNotFoundError:
        print(f"错误: 文件未找到 - {input_file_path}")
        return None
    except Exception as e:
        print(f"错误: 发生了未知错误 - {e}")
        return None

if __name__ == "__main__":
    # 请替换为你的实际文件路径
    input_file = r"C:\Users\联想\Desktop\misc\flag_new.txt"
    
    # 调用函数进行递归解码
    recursive_base64_decode(input_file)    

解码50次,得到flag{f31ff0b8e83b6fdf70f5d3ba365e62e7}

送分

查看wav文件的频谱图
assets/MISC-polarctf/file-20250726232356420.png
flag{Mu313}

签个到喵

兽言兽语解码小美说的话
得到http://weixin.qq.com/r/lC3I0KrEAPd-re6z93iG
打开found.py(message解码处理,得到请发送“宝宝想要flag”)
加入小美说的话
assets/MISC-polarctf/file-20250727091318632.png
运行得到二维码
assets/MISC-polarctf/file-20250727092332124.png
微信扫码,关注公众号,发送“宝宝想要flag”,得到flag
flag{www.PolarCTF.com}

学安全很简单

打开key.txt是zaqdx?????(应该是压缩包密码的提示)
直接掩码爆破
assets/MISC-polarctf/file-20250727110726578.png
assets/MISC-polarctf/file-20250727110731386.png
解压得到
assets/MISC-polarctf/file-20250727110944097.png

01

assets/MISC-polarctf/file-20250728165858931.png
这是将图片像素转换成对应数字保存到列表中,图片的分辨率是25×25,运行得到二维码,得到密码

#记得修改MAX和str  
from PIL import Image  
MAX = 25  #每行每列数  
#二维码大小  
pic = Image.new("RGB", (MAX, MAX))  
str = "1111111011111001001111111100000100000000110100000110111010001000101010111011011101010011110001011101101110100111001010101110110000010001110010010000011111111010101010101111111000000000011000100000000000101110110111010100010011110100111100111010101001011000110001000011011101100001001000010101111000100001001111110100110001001000100011000010111010101010011110000101111010110110101010001010010100000010100100101110011111111100100000000110111001000100011111111001100010101011011100000101111100110001100010111010110010101111110001011101000001110010111010101110101100100011111010110000010011010010011100101111111000010001000011011"  
 i=0  
for y in range (0,MAX):  
    for x in range (0 ,MAX):  
        if(str[i] =="0" ):  
            pic.putpixel([x,y],(255, 255, 255))  
        else:  
            pic.putpixel([x,y],(0, 0, 0))  
        i = i+1  
pic.show()  
pic.save("flag.png")

assets/MISC-polarctf/file-20250728165726575.png

然后打开flag.txt,得到喵呜啊~..............
在线工具解码,得到
flag{8a8c0a039c3bd6fb50e84b047e42e8e6}

0和255

image_list.py代码是一个用于读取 PNG 图片像素信息并将其转换为二维列表的 Python 脚本。
如果你已经有了一个名为flag.png的图片文件,并且它确实是一个 33×33 像素的二维码图像,那么运行这段代码将会输出这个二维码对应的像素矩阵。根据你之前的代码,这个二维码图像是由黑白像素组成的,其中黑色像素用 (0, 0, 0) 表示,白色像素用 (255, 255, 255) 表示。
所以,image_list.py用于生产image_list.txt
将255用1替换,用下面代码解题

#记得修改MAX和str  
from PIL import Image  
MAX = 33  #每行每列数  
#二维码大小  
pic = Image.new("RGB", (MAX, MAX))  
str = "from PIL import Image
MAX = 33  #每行每列数
#二维码大小
pic = Image.new("RGB", (MAX, MAX))
str = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001000010001100000001111111101111101011010011101111101111111101000101100110001101000101111111101000101001001000101000101111111101000101011111111101000101111111101111101011101101101111101111111100000001010101010100000001111111111111111100011111111111111111111111101101111000011110001001111111111101110010000111001110001111111101011101101010100111111001111111111100110001100011111011001111111110110100111111110001111011111111110011011110000101100100001111111101101100111010000100100101111111110000110111000110010011011111111100011101000010000000000101111111111111111000010010111001011111111100000001110000110101011001111111101111101111010000111010101111111101000101111000110000000011111111101000101011100111010010011111111101000101111101011101000101111111101111101101001101000111111111111100000001100011101110110001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
 
i=0
for y in range (0,MAX):
    for x in range (0 ,MAX):
        if(str[i] =="0" ):
            pic.putpixel([x,y],(255, 255, 255))
        else:
            pic.putpixel([x,y],(0, 0, 0))
        i = i+1
pic.show()
pic.save("flag.png")"  
 i=0  
for y in range (0,MAX):  
    for x in range (0 ,MAX):  
        if(str[i] =="0" ):  
            pic.putpixel([x,y],(255, 255, 255))  
        else:  
            pic.putpixel([x,y],(0, 0, 0))  
        i = i+1  
pic.show()  
pic.save("flag.png")

得到图片扫描码得flag:flag{0f46d4b056acb49f06b1090bab56189d}

找一找

打开zip,是一个docx文件,全选文字清除格式
assets/MISC-polarctf/file-20250728195844566.png
标题是找一张,就接着找.....
将docx文件后缀改成zip,解压,在core.xml里找到
assets/MISC-polarctf/file-20250728200114218.png
所以flag是flag{ff539ed2b017e74d3bc1eb8e9e9ebc6c}

100RGB

表情包一般直接Base100解码
assets/MISC-polarctf/file-20250728202341683.png
处理一下得到的数据
assets/MISC-polarctf/file-20250728202938096.png
flag{An1ma1s_ar3_cu+e}

docx隐写

打开zip,是一个docx文件,全选文字清除格式
assets/MISC-polarctf/file-20250728203316607.png
将docx文件后缀改成zip,解压,找到
assets/MISC-polarctf/file-20250728203450449.png
得到flag:flag{I_be1ieve_y0u_Can_flnd_+h3m}

爆破鬼才

binwalk处理图片,得到压缩包,然后开始爆破
assets/MISC-polarctf/file-20250728203910758.png
打开,即得flag:flag{96a6781aaef3de39566d951466a0cc1f}

超级简单的流量

tcp追踪得flag:
assets/MISC-polarctf/file-20250728214359950.png

大礼包

压缩包直接爆破(纯数字)assets/MISC-polarctf/file-20250729091507487.png
密码:9635421
winhex打开,末尾找到base编码
assets/MISC-polarctf/file-20250729090955503.png
解码assets/MISC-polarctf/file-20250729091105030.png
assets/MISC-polarctf/file-20250729122159886.png
是栅栏密码,第一个符合flag的格式,继续解码,凯撒密码解码(一个一个偏移量try)
assets/MISC-polarctf/file-20250729122612624.png

属性?真加密?

assets/MISC-polarctf/file-20250729123539296.png
flag{it_is_simple_
压缩包是伪加密,将01改成00
assets/MISC-polarctf/file-20250729144139448.png
得到图片,在属性发现了剩下部分(标题有提示......)
assets/MISC-polarctf/file-20250729145444324.png
flag:flag{it_is_simple_we_are_young}

刷新一下试试

刷新想到F5→F5隐写
下载工具

git clone https://github.com/matthewgao/F5-steganography.git

assets/MISC-polarctf/file-20250729184508156.png
分析不出来,可能需要密码
文件属性(备注里)找到密码504

java Extract -p 504 C:\1111.jpg

assets/MISC-polarctf/file-20250729184534964.png
得到flag{0ae0bebf93cb690235f9d1999cc68ea8}

签到叭

打开发现hint.docx是伪加密,修改后可以打开(小汇总里面有修改办法)
打开hint.docx获得信息
assets/MISC-polarctf/file-20250729224614155.png
问AI 知道是净月潭,MD5加密后98f1ecdceaa0f4d6445f48287802dfd9得到密钥
assets/MISC-polarctf/file-20250729222601413.png
应该是AES加密
assets/MISC-polarctf/file-20250730091601656.png
flag.zip提示头部错误,修改头文件,修改后重新打开
assets/MISC-polarctf/file-20250730092140853.png
得到↓

扫二维码关注公众号在公众号回复flag,即可拿到flag ——1.txt
assets/MISC-polarctf/file-20250730092320115.png
最终得到flag:flag

无字天书

老样子,修改文件头
assets/MISC-polarctf/file-20250730101940975.png
打开后,注释里面有压缩包密码(应该是摩斯)
ABBBB BABA AB BAA A BABA AAAAB AABA BBBBA BBBAA AABA BBBAA A BAAAA AABA AAAAB
文字替换后解密assets/MISC-polarctf/file-20250730102132614.png
转化成小写(不知道为啥(⊙o⊙)…反正打开了)打开压缩包

小汇总

  • 栅栏密码
  • 凯撒密码
  • 表情包→Base100解码
  • F5隐写
  • 文件头:zip就从504B0304开始识别,从504B0506结束,对于txt文件,不存在任何文件头。assets/MISC-polarctf/file-20250729215349460.png
  • 伪加密
    • assets/MISC-polarctf/file-20250729220423169.png
    • 我们看到上图,红色框住的50 4B 是压缩源文件数据区的头文件标记,它对应的红色框柱的 09 00 并不影响加密属性。绿色框住的50 4B 是压缩源文件目录区 ,它对应的绿色框柱的 09 00 影响加密属性,当数字为奇数是为加密,为偶数时不加密。
posted @ 2025-07-24 19:47  Nu0  阅读(115)  评论(0)    收藏  举报