MISC攻防世界

Cat_Jump

下载附件打开:

把他丢进010编辑器里

查找CATCTF

得到flag:CatCTF{EFI_1sv3ry_funn9}

4433

下载附件打开:是一张图片

将他丢进winhex搜索flag啥也没有

使用kali binwalk看看图片发现没啥

使用steglove打开改变颜色发现下面一个二维码

使用QR Research扫描

得到一串摩斯密码:...--.----...--..

注意题目4433

摩斯密码解密

得到:VYGUD

在摩斯电码中存在一些常用的缩写,VY 代表 VERY,GUD 代表 GOOD,所以正确的flag是 VERYGOOD

查了下
这在摩斯电码里是verygood

得到flag:flag{VERYGOOD}

侧信道初探

下载附件打开有两张图片

根据题意,每个循环中或者执行if内语句,或者不执行。不执行的情况下消耗能量较少,执行的情况下消耗能量较多,需要时间也更长。因此每两条密集带中间的稀疏带宽度如果较短,代表0,如果较长,代表1。也即:

flag:SCTF{0110111010}

pyHAHA

下载附件:是一个pyc文件

拿到一个pyc

反编译

结果显示反编译不成功

猜测是pyc隐写

报错

扔进winhex

发现有压缩文件
且倒序了

f = open('PyHaHa2.pyc','wb')
with open('PyHaHa.pyc','rb') as g:
	f.write(g.read()[::-1])
f.close()

正序后
发现少文件头03F30D0A
补上

在末尾发现

flag1: ec8d57d820ad8c586e4be0122b442c871a3d71cd8036c45083d860caf1793ddc

flag2: c40a0be335babcfbd8c47aa771f6a2ceca2c8638caa5924da58286d2a942697e

foremost分离
得到一个压缩包
里面有一个mp3

解压要密码
看了下
伪加密
图示部分改为0008

解压得到mp3

在备注里有key

163 key(Don't modify):L64FU3W4YxX3ZFTmbZ+8/dx5jBNDPdsKv9gAgXYyj0/Z0Vl4ORaCLH5D0oN9v9nBBv6zxpBucgNeE2qqke4ugZs7dxriT5lfUpulX5PYMzSg2pqL6APTHQjtIHw16ZCRTMBBkInrUGSTklA2MwPLGkuDTmWfzjHqDWEK5LLRP6oiOXe0JeI9mLHzL2nm6T3/ianaPEzeH7lpE/ciWDyqFUXoTZWeyK0xTjYxBSj9RJFoaoIxmXk6P8MJq+EvcS7ratByRUvWLaUFhcXhJ1iRK58BKcVPS0hxkzA77WB1UnrUfpkS1U/F5uYmYWGZ3Cz2fTvJHcsE228LUnnybaoIoDyY6BvZVUitmA+VhhTHoIKsREyCzC3VXq/HuwwuHdCdftzXJpXPoJSNzWAZH0oGnF+WE7m5Fqd36dqp2srL5bgFjFnyZzIkxdaU+ZW+Rm7aIbrb7nK2Pp9iequOBV6rnKeHZyc3hzG4lVVapoXl/U2cvfVgIqVtnuJE4XM4NuUd

扔进audacity

无果

查了下

有个工具DeEgger Embedder

得到一堆base32

回头看看那个处理好的pyc
反编译得到

import base64

def get_base32_diff_value(stego_line, normal_line):
    base32chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    for i in range(len(normal_line)):
        if stego_line[i] != normal_line[i]:
            return abs(base32chars.index(chr(stego_line[i]))-base32chars.index(chr(normal_line[i])))
    return 0

# base32 隐写解密
def base32stego_decode(lines):
    res = ''
    for i in lines:
        stego_line = i.strip()
        normal_line = base64.b32encode(base64.b32decode(i.strip()))
        diff = get_base32_diff_value(stego_line, normal_line)
        if '=' not in str(stego_line):
            continue
        if diff:
            res += bin(diff)[2:]
        else:
            res += '0'
    return res

with open("Dream It Possible - extracted.txt", 'rb') as f:
    file_lines = f.readlines()
en=open("encrypt.txt","w")
en.write(base32stego_decode(file_lines))
en.close()

得到encrypt

猜测是字符转图片

from PIL import Image

str=open("data.txt","r").read()
length=240
width=30
pic=Image.new("RGB",(length,width))
i=0
for x in range(length):
	for y in range(width):
		if str[i] == '0':
			pic.putpixel([x,y],(0,0,0))
		else:
			pic.putpixel([x,y],(255,255,255))
		i += 1
pic.show()
pic.save("Fl4g.png")

得到flag

传感器2

题目描述

推测温度传感器解码后报文第一个字节为起始位,并无数据,因此从第二个字节开始,得到传感器1中两个解码后的报文有效数据为为0x24d8893ca584100和0x24d8845abf34100

#!/usr/bin/python

def crc(x,y):
	while(x>y):
		l = len(bin(x)) - len(bin(y))
		t = int(bin(y)[2:]+'0'*l,2)
		x ^= t
	return x
m = 0
for i in range(0x200):
	if i < 100:
		continue
	if crc(0x24d8893ca584100,i) == 0x81 and crc(0x24d8845abf34100,i) == 0x19:
		m = i 
		print i
		break
print hex(crc(0x00024ddeadbeef4100,m))
print hex(crc(0x00024dbaada5554100,m))

根据crc校验算法,先由已知校验码算出y的值,再由除了第一个字节d的所有数据得到最后一个字节的crc校验码值,一个是0xb5,一个是0x15。

得到最终flag:{b515}

Russian-zips

下载附件:

得到一个压缩文件,解压需要密码

发现是伪加密
直接修复压缩文件即可解压

发现是Minecraft的地图文件

打开就得到了flag

ext3

下载附录,用winhex以十六进制打开,搜索flag,一直next找

题目描述光盘,将文件后缀改成iso解压缩找到该文件

打开为base64解码得到flag

flag为flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}

SimpleRAR

使用WinRAR打开附件,发现secret.png的文件头损坏了,并且还有一个flag.txt

打开flag.txt

将文件丢进winhex

我们要的是文件块而不是子块,于是更改7A为74,成功解压,发现是一张空白的图片,继续用winhex打开

发现是gif格式,将其重命名并用PhotoShop打开,发现有两个空白的图层

将两个图层分别提取出来,用StegSolve打开,不断点击箭头直到显示出图像

将两个图片合成补全二维码

使用QR-research扫描得到flag:flag{yanji4n_bu_we1shi}

base64stego

下载附件是个加密的文件

使用360压缩打开:

是一连串的base64编码解密得到

没啥信息,猜测base64隐写,使用python脚本

# 此方法用来将包含隐藏信息的字母转换为base64编码表对应的序列值(十进制数)并返回
def base64change(s):
    table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' # base64编码表,恰好索引值对应字母
    for i in range(len(table)):
        if table[i] == s:
            return i


# 此方法用来获取隐藏信息二进制字符串
def base64solve():
    f = open('C:\\Users\\admin\\Desktop\\stego.txt','r')
    lines = f.readlines()

    flag_bin = ''
    for line in lines:
        # print(line)
        l = line.strip() # 去掉两边的空格
        if l[-1] == '=':
            if l[-2] == '=': # 含有两个=则包含4bit信息
            # 将返回的十进制转换为二进制数,由于返回的二进制数为0b开头,所以从第三位开始取,然后用0填充头部为4位,再取后四位隐藏的信息
                flag_bin += bin(base64change(l[-3]))[2:].zfill(4)[-4:]
            else:# 只含一个=则包含二bit信息
                flag_bin += bin(base64change(l[-2]))[2:].zfill(2)[-2:]
    #print(flag_bin)
    flag = ''
    for i in range(len(flag_bin)//8):
        flag += chr(int(flag_bin[i * 8:(i + 1) * 8], 2))
    print(flag)


if __name__ == '__main__':
    base64solve()

得到flag:flag{Base_sixty_four_point_five}

功夫再高也怕菜刀

下载附件

### 杂项(Misc)题型解析与攻防世界 CTF 网络安全挑战 在网络安全竞赛中,杂项(Misc)题型通常涉及多种技能和知识领域,包括但不限于编码解码、隐写术、密码学基础、逆向工程以及文件系统分析。以下是对 `misc1` 攻防世界 CTF 题目的详细解析[^1]。 #### 1. 编码与解码技术 在提供的链接中,Base64 解码工具被频繁提及。Base64 是一种常见的编码方式,用于将二进制数据转换为 ASCII 字符串格式。例如,使用 Python 实现 Base64 解码的代码如下: ```python import base64 encoded_data = "c2FqdWNtZXRsa2pqbGNubGJoTXZjbWJqamlzOmNzOmJrempwYg==" decoded_data = base64.b64decode(encoded_data).decode('utf-8') print(decoded_data) ``` 上述代码会输出 `flag{sajucmezlkjjcnbhmvcmbjjms:cs:bkzjpb}`,这表明题目可能要求参赛者对密文进行 Base64 解码以获取最终答案。 #### 2. 密文分析 从引用内容中可以看出,密文包含大量猫叫声模拟的字符串(如“呜喵喵喵喵呜呜”)。这种形式的密文可能是为了增加趣味性,并通过替换规则隐藏实际信息。例如,可以假设每组“喵呜”代表一个字符或符号,进而尝试构建映射表来解码[^2]。 #### 3. 工具辅助解密 CyberChef 是一款功能强大的在线工具,支持多种加密算法和数据处理操作。根据提供的链接,可以推测题目设计者希望参赛者利用 CyberChef 的 Base64 解码功能完成初步解密。此外,CyberChef 还支持其他常见编码方式(如 Hex、URL 编码等),因此在面对复杂密文时可以尝试多种组合[^1]。 #### 4. 文件系统分析 部分 Misc 类型题目可能涉及对特定文件格式(如 ext3 文件系统)的分析。例如,需要提取受损镜像文件中的关键数据或恢复删除文件。Linux 命令行工具(如 `foremost`、`testdisk`)在这种场景下非常有用[^2]。 --- ### 示例代码:使用 CyberChef API 自动化解码 如果需要批量处理类似 Base64 的编码任务,可以参考以下 Python 脚本实现自动化: ```python import requests def cyberchef_decode(input_data): url = "https://gchq.github.io/CyberChef/worker.js" recipe = {"op": "From_Base64", "args": ["A-Za-z0-9+/=", True]} payload = {"input": input_data, "recipe": [recipe]} response = requests.post(url, json=payload) return response.json().get("output") encoded_data = "c2FqdWNtZXRsa2pqbGNubGJoTXZjbWJqamlzOmNzOmJrempwYg==" decoded_result = cyberchef_decode(encoded_data) print(decoded_result) ``` 此脚本通过调用 CyberChef 的后端 API 完成 Base64 解码操作。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值