攻防世界misc部分

[攻防世界]1-misc

解题

{292104C3-C40E-4C7F-A981-DD14FEAB0DB1}.png

根据提示“生日”,猜测8位数暴力破解,大概试一下20000000开始,不然一个小时太久了

{4E43B4D7-8E14-41EA-821B-1BBE3873C942}.png

得到口令20001228

{5CEFEAF0-AE37-4073-9460-479511924E82}.png

又是压缩包,注意CRC,与上图2.zip中相同,猜测明文破解

[攻防世界]BotW-

题目

MASTER USING IT AND YOU CAN HAVE THIS.

分析

图片隐写

解题

{03C04282-54C2-4A6C-9362-A7CD8ACF8350}.png

某某装备吧,逐日之弓

图片隐写,分离一下

果然有东西

{EE0C583A-8D54-4828-8BDB-67F8C24430C3}.png

回到题目MASTER USING IT AND YOU CAN HAVE THIS.

搜一下

{99753C81-163D-4570-B5E2-E1B9732D8DED}.png

点开“游戏家的浪漫”,还真有

{81BB2DCE-DA2B-4D5C-A235-2107E5A17F6D}.png

flag{canzeldagetduplexbow}

[攻防世界]CatFlag

题目描述:Just cat flag or type flag

解题

下载得到未知明文件

{9A2725B2-29CA-4B07-BACB-E6D7D9E9B5E9}.png

没有发现什么,回去看一眼题目

原来linux中有cat与tpye两个命令

linux 花样读文件 - CSDN文库

那就直接使用一下

{3AE53A09-5006-46F8-BE01-CB46030F962C}.png


知识点:linux读文件口令

[攻防世界]challenge_how_many_Vigenère

{986BF97D-919F-4DA2-9002-F5983087C930}.png

分析

下载得到一堆字符串,分析题目,维吉尼亚

Vigenere算法加密和解密原理及其实现_vigenere密码算法-CSDN博客

没有提供key,这里有个爆破

Vigenere Solver | guballa.de

先就跟着题目要求一步一步来

解题

{734EB377-3063-4832-A8F6-171ABD659FBB}.png

进入网址爆破

{270E64B4-AAF1-4161-AC57-0EC946A93FE4}.png

得到key

ohihzkssefkmqxqbkihybnynvndzkdlqvhwhgywaftmeteecqprzjczvnmhnzwyasmlwbwvaqitejbfofycejjlcbpk

result

aliceleavestheteapartyandentersthegardenwhereshecomesuponthreelivingplayingcardspaintingthewhiterosesonarosetreeredbecausethequeenofheartshateswhiterosesaprocessionofmorecardskingsandqueensandeventhewhiterabbitentersthegardenalicethenmeetsthekingandqueenthequeenafiguredifficulttopleaseintroduceshertrademarkphraseoffwithhisheadwhichsheuttersattheslightestdissatisfactionwithasubjectaliceisinvitedorsomemightsayorderedtoplayagameofcroquetwiththequeenandtherestofhersubjectsbutthegamequicklydescendsintochaosliveflamingosareusedasmalletsandhedgehogsasballsandaliceonceagainmeetsthecheshirecatthequeenofheartsthenordersthecattobebeheadedonlytohaveherexecutionercomplainthatthisisimpossiblesincetheheadisallthatcanbeseenofhimbecausethecatbelongstotheduchessthequeenispromptedtoreleasetheduchessfromprisontoresolvethematter

得到作品《爱丽丝梦游仙境》Alice's Adventures in Wonderland

再根据题目意思加密作品名字

维吉尼亚加密/解密 - Bugku CTF平台

{169B91AA-C6E8-4BD9-92CB-DE5FAA4E9D0B}.png

得到flag


知识点:维吉尼亚爆破

[攻防世界]check

分析

{BBD42AA1-22B9-483A-BF7C-C2DF72697F39}.png

图片隐写,看看属性,考虑宽高,文头文尾,分离,LSB。。。。。。

在LSB中发现线索

解题

{2FEB820D-1530-4FCB-A38D-3BCB2EFB713D}.png

这是一段HTML解码HTML编码解码

在notepad中将其提取出来

{BD68F13A-F101-476F-A61B-32786CBE533C}.png

{2787332E-8B89-4B53-8829-85DFC1313379}.png

得到flag{h0w_4bouT_enc0de_4nd_pnG}


看到这么一段

{294398DF-F5A8-47C6-981E-5E9C70261906}.png

于是改后缀为html

{A140C4AB-83A7-4443-8C46-087E3EF3AAF1}.png


知识点:图片隐写,LSB,html编码

[攻防世界]Disk

分析

下载得到vmdk,凡事放入010

解题

{FD6A3146-5D22-487D-9BAE-37EEAE7C541E}.png

flag is not here 此地无银三百两

在下面获得4组数,二进制

0110011001101100011000010110011101
1110110011010001000100010100110101
1111001100010110111001011111010001
0000110001011100110110101101111101

2进制到ASCII字符串在线转换工具 - Coding.Tools

{FC1DE740-EFF5-4BBD-9F74-86BD1DA4C2A5}.png

得到flag{4DS_1n_D1sk}

[攻防世界]Just-No-One

解题

下载得到exe文件

{DF9D725E-9FB9-455C-BB7E-C7B3549EC493}.png

一路next,需要密码

{B2527C96-52B1-4039-B957-9F724D5D1D27}.png

接下来就离谱了

放入010,ida无果

看一眼wp

{D0C23218-179C-492E-B0D1-0D67226C5E17}.png

YOU MAY SUBMIT THIS TO GET TEN POINTS: ILOVEREADINGEULAS.

即答案(没有flag{}):

ILOVEREADINGEULAS


知识点:阅读安装协议

[攻防世界]m0_01

分析

下载得到一个流量包,usb流量知识点

{F5856186-12DD-4441-BB05-79103CA78583}.png

解题

在winshark中提取USB指定的4个字节

tshark提取流量

tshark -r 12.pcapng -T fields -e usb.capdata > usbdata.txt
如果提取出来的数据有空行可以将命令改为如下形式
tshark -r 12.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

或者工具去空行符

在线文本去空行工具 - UU在线工具

{D6E3CCEF-7C79-43FC-8AA6-04091BBEDBAB}.png

在Wireshark中得到该txt文件

{EAD5C59E-7CF0-47DD-A50E-795A64A094D0}.png

然后运行这个脚本???

第一次遇到这种题,有些懵逼

f=open('usbdata.txt','r')
fi=open('out.txt','w')
while 1:
    a=f.readline().strip()
    if a:
        if len(a)==16: # 鼠标流量的话len改为8
            out=''
            for i in range(0,len(a),2):
                if i+2 != len(a):
                    out+=a[i]+a[i+1]+":"
                else:
                    out+=a[i]+a[i+1]
            fi.write(out)
            fi.write('\n')
    else:
        break
 
fi.close()
 
normalKeys = {
    "04":"a", "05":"b", "06":"c", "07":"d", "08":"e",
    "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j",
     "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o",
      "13":"p", "14":"q", "15":"r", "16":"s", "17":"t",
       "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y",
        "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4",
         "22":"5", "23":"6","24":"7","25":"8","26":"9",
         "27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t",
         "2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\",
         "32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".",
         "38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>",
         "3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>",
         "44":"<F11>","45":"<F12>"}
shiftKeys = {
    "04":"A", "05":"B", "06":"C", "07":"D", "08":"E",
     "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J",
      "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O",
       "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T",
        "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y",
         "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$",
          "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")",
          "28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>",
          "2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"",
          "34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>",
          "3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>",
          "41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
output = []
keys = open('out.txt')
for line in keys:
    try:
        if line[0]!='0' or (line[1]!='0' and line[1]!='2') or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0' or line[6:8]=="00":
             continue
        if line[6:8] in normalKeys.keys():
            output += [[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2']
        else:
            output += ['[unknown]']
    except:
        pass
 
keys.close()
 
flag=0
print("".join(output))
for i in range(len(output)):
    try:
        a=output.index('<DEL>')
        del output[a]
        del output[a-1]
    except:
        pass
 
for i in range(len(output)):
    try:
        if output[i]=="<CAP>":
            flag+=1
            output.pop(i)
            if flag==2:
                flag=0
        if flag!=0:
            output[i]=output[i].upper()
    except:
        pass
 
print ('output: ' + "".join(output))

{20C9178A-9E0D-4AE7-ACF3-F70E4AF9AC8E}.png

wp说这是云影密码(由84210组成)

{BD45B4F1-5852-4CC7-B390-F4B0AE2F1A3A}.png

得出THISISFLAG


补充

云影密码

Crypto入门 (六)幂数加密(云影密码) - 缘初 - 博客园

{43F93ABF-69C6-4C6D-9AE7-4EC2E7E6C994}.png

感动!

一段大佬的解码脚本

a="8842101220480224404014224202480122"
s=a.split('0')
print(s)
l=[]
for i in s:
    sum=0
    for j in i:
        sum+=eval(j)
    l.append(chr(sum+64))
print(''.join(l))

USB流量

USB流量分析

[攻防世界]message

image-20241130211151956

解题

下载得到一大段字符串

7fffffffffffffffffffffffffffffffbffff0e10419dff07fdc3ffdaeab6deffdbfff6ffed7f7aef3febfffb7ff1bfbc675931e33c79fadfdebbae7aeddedb7dafef7dc37df7ef6dbed777beedbedb77b6de24718f260e0e71879fffffffffffffffffffffffffffffffffffffffffff07f87fc7f9ffffffffdbfbbfdbfeffffffffebfdffdfff7ffffff871c33e6fe7bffffffd5aefeed62dcffffffeadf9fb8bb0efffffff56df5db6dbf7ffffffaa0c21e19e3bffffe07ffffffffff9fffffffffffffffffffffffffffffffffffffff

刚开始还以为是按数量排序字符串,当然,失败了

直接解码也是失败告终

观察字符串,09,af,像是16进制,将其转换成二进制0与1分布有何特点或者二维码啥的

image-20241130211729901

然而并无发现,看了wp,原来这个样子

image-20241130211809312

运行代码

def print_fixed_width(text, width=73):
    for i in range(0, len(text), width):
        print(text[i:i+width])

# 示例字符串
input_text = "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111100001110000100000100000110011101111111110000011111111101110000111111111111011010111010101011011011011110111111111101101111111111111101101111111111101101011111110111101011101111001111111110101111111111111110110111111111110001101111111011110001100111010110010011000111100011001111000111100111111010110111111101111010111011101011100111101011101101110111101101101101111101101011111110111101111101110000110111110111110111111011110110110110111110110101110111011110111110111011011011111011011011011101111011011011011110001001000111000110001111001001100000111000001110011100011000011110011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000001111111100001111111110001111111100111111111111111111111111111111111110110111111101110111111110110111111111011111111111111111111111111111111111010111111110111111111110111111111111101111111111111111111111111111000011100011100001100111110011011111110011110111111111111111111111111111101010110101110111111101110110101100010110111001111111111111111111111111110101011011111100111111011100010111011000011101111111111111111111111111111010101101101111101011101101101101101101111110111111111111111111111111111101010100000110000100001111000011001111000111011111111111111111111100000011111111111111111111111111111111111111111111001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"

# 调用函数
print_fixed_width(input_text)

image-20241130213130113

用笔画一下得到flag

或者运行

import binascii
import numpy as np
from matplotlib import pyplot as plt

# 原始十六进制字符串
x = '7fffffffffffffffffffffffffffffffbffff0e10419dff07fdc3ffdaeab6deffdbfff6ffed7f7aef3febfffb7ff1bfbc675931e33c79fadfdebbae7aeddedb7dafef7dc37df7ef6dbed777beedbedb77b6de24718f260e0e71879fffffffffffffffffffffffffffffffffffffffffff07f87fc7f9ffffffffdbfbbfdbfeffffffffebfdffdfff7ffffff871c33e6fe7bffffffd5aefeed62dcffffffeadf9fb8bb0efffffff56df5db6dbf7ffffffaa0c21e19e3bffffe07ffffffffff9fffffffffffffffffffffffffffffffffffffff'
# 将十六进制字符串转换为二进制,并去除前缀'0b'
x = np.array(list(bin(int(x, 16))[2:]), dtype=np.uint8)

# 定义图像的行数
n = 23
# 重塑数组并显示图像
plt.imshow(x.reshape(n, -1), cmap='gray')  # 使用灰度颜色映射
plt.show()  # 显示图像

直接可视化得到flag

image-20241130213319207

[攻防世界]Miscellaneous-200

分析

下载得到txt,内容也比较奇特

{B08B8D70-6E2B-4410-B109-33796B491C7F}.png

搜一下,大致和RGB有关

{CA0566CB-D612-45CF-8029-28383AAB5F10}.png

解题

{CCCE1334-9641-4C2A-9353-39EEC95207D7}.png

通过代码创建一幅图,将每一行数据当做像素值写入图片

from ast import literal_eval
from PIL import Image  #导入Python图像库PIL(Python Imaging Library)中的Image模块,用于图像处理。
f = open('62f4ea780ecf4e6bbef5f40d674ec073.txt', 'r')
corl = [literal_eval(line) for line in f.readlines()] #读取文件的每一行,并使用literal_eval函数将每行的内容(假设是可评估的Python表达式,比如元组)转换成Python对象(在这个上下文中,可能是颜色值),并将这些对象存储在列表corl中。
f.close()
img = Image.new('RGB', (270, 270), '#ffffff')
k=0 #初始化一个计数器k,用于遍历corl列表
for i in range(246):
   for j in range(246):
      img.putpixel ([i , j], corl[k]) #在图像的第i行第j列的像素位置放置corl列表中索引为k的颜色值。
      k=k+1 #每次放置一个像素后,k的值增加1,以便在下一次迭代中使用corl列表中的下一个颜色值。
#   输出图片
img.save("flag.png")

得到如下图

{2A1E9745-2C22-4142-8F77-C0EB3EEC22F4}.png

凑合看一下(离谱了 括号与字母间还有空格)

flag{ youc@n'tseeme }

[攻防世界]Misc文件类型

解题

下载得到一串字符,应该是16进制

{DB2B41A5-50FE-414B-B1CF-8F59662EB3C7}.png

进行解码

{6BCCB1AC-05CF-4FDE-B71B-5B19ABB58D69}.png

46ESAB_UEsDBBQAAAAIAAldCFXqOw7cKAAAACYAAAAIAAAAZmxhZy50eHRLy0lMrzZISk02SEwxTkk0MjQ0TjY3SDU1SEsxNTM0T7JINU+zrAUAUEsBAhQAFAAAAAgACV0IVeo7DtwoAAAAJgAAAAgAJAAAAAAAAAAgAAAAAAAAAGZsYWcudHh0CgAgAAAAAAABABgAGxEfk9iq2AEbER+T2KrYAQJF+4rYqtgBUEsFBgAAAAABAAEAWgAAAE4AAAAAAA

开头的base64倒序了

起初,我以为整个字符串倒序,结果解码失败

注意:去掉前面的base64_; 长度只有254,需要再添加两个==

# 实现字符串倒序
def reverse_string(s):
    return s[::-1]

# 使用函数
input_string = "Hello, World!"
reversed_string = reverse_string(input_string)
print(reversed_string)

那就去掉base64_正序

屏幕截图 2024-11-05 160301.png

下载txt文件

{FF267E5B-4CC5-4874-883E-2D5E2333E314}.png

flag{0bec0ad3da2113c70e50fd5617b8e7f9}


知识点:对编码的熟悉

[攻防世界]Peekaboo

比较简单的题目,但是很离谱,我一定要把这个wp写下来

{6B77CEE2-9D4B-4FB9-98CC-DD3BC27C62E2}.png

解题

下载得到一张图片

{DC6A4F5E-7A85-4EBA-8E33-03FF25D0BAB9}.png

王者荣耀盛世长安,还有我的本命英雄奕星

图片隐写,当然是对图片一顿分析,无果

回到题目“最后一次使用的英雄”

没错,flag就是每个英雄试一遍,得到百里玄策

CatCTF{bailixuance}

[攻防世界]Pixel-Princess

解题

下载得到一个压缩包

一开始用winrar解压。得到一串jpg字符

{9C28197C-3948-47D0-A2E8-69871733372C}.png

修改文件头发现没有,以为就是这么一个文件

后面卡住时看一眼wp发现原来这就有一个图片,换成7Z之后能解压出来

{CD9F10F3-A6AF-44A6-9F31-1167A7BE6597}.png

{B37620DE-A562-4ED6-A4D8-4458CCB4187A}.png

分离一下这个,得到MarioCastle.jpg

{69E43FB6-183F-40F6-91F4-9103E7497699}.png

得到一个密码:BaD_DR4G0N

没错,就是卡在了这里发现winrar解压出来的本应是一个图片文件

看了一下wp,原来这里还要分离

{A15C8E34-C24C-4B5C-8118-FBC629310A2C}.png

得到flag

[攻防世界]saleae

大部分题解在这里

https://arui-li.notion.site/b8cd06fe61f44bb4bce09e0f8d56530c?pvs=4

分析

下载得到一个logicdata文件

第一次见

回头看题目 saleae

下载saleae逻辑分析工具

这个题大致是这么使用的,些许懵逼……

1.open文件

2.选择SPI

3.修改参数,save

4.拖拉,得到flag

flag{12071397-19d1-48e6-be8c-784b89a95e07}


来自官方的解释:

看了依旧懵逼
求大佬给与解释

[攻防世界]steg没有py

分析

下载得到图片Do_you_like_misc.png

{2BC7D2D8-D787-478B-B8DD-20D707258591}.png

观察题目,使用工具stegpy

解题

指令中的密码就是文件名称(李大普)

{861923E0-CFD5-4195-A471-50228342A2C8}.png

以为那段就是flag,当然是错误的

看了wp,原来是仿射密码,涨知识了

CTF在线工具-在线仿射密码加密|在线仿射密码解密|仿射密码算法|Affine Cipher

{E9FA2D9B-A56B-47BF-A7F8-20FDE06612DC}.png

根据a,b范围以及上图给的a与b的运算关系得出a,b

{48F1CAF2-7BBE-4455-BBA0-6D30AA0C3055}.png

然后我一提交,诶,又错了

题目要求注意大小写,发现加密前大写位置,在解密后变成了小写,将解密后由大写变为小写的地方,再改回相应大写字母。

{AAAC41CE-BEB4-4464-AB04-7D3468B41205}.png

得到flag{4f71ne_c1ph3r_15_ffffunny!!}


知识点:新工具stegpy

[攻防世界]test.pyc

分析

下载得到一个pyc文件

解题

在kail在uncompyle6

uncompyle6 -o test.py test.pyc

{F59D2388-5F8B-4239-BD62-9430EE93DEF5}.png

得到

=cWbihGfyMzNllzZ0cjZzMWN5cTM4YjYygTOycmNycWNyYmM1Ujf
反转脚本
str = "=cWbihGfyMzNllzZ0cjZzMWN5cTM4YjYygTOycmNycWNyYmM1Ujf"
print(str[::-1])

反转得到base64

fjU1MmYyNWcyNmcyOTgyYjY4MTc5NWMzZjc0ZzllNzMyfGhibWc=

进行解码,得到

~552f25g26g2982b681795c3f74g9e732|hbmg

再次反转

gmbh|237e9g47f3c597186b2892g62g52f255~

凯撒

{43C0EDAE-1308-4821-82D7-C87CA75C86F4}.png

当我直接复制flag那一行,提交失败

发现只有字母变化,数字没变,将数字也往后移一位

不完全凯撒

所以我们抄一段脚本

c='gmbh|237e9g47f3c597186b2892g62g52f255~'
d=''
for i in range(0,len(c)):
 k = chr(ord(c[i])-1)
 d+=k
print(d)
flag{126d8f36e2b486075a1781f51f41e144}

知识点:反编译,凯撒,对字符的敏感

[攻防世界]Time_losing

这思路万万没想到……

题目

2033-05-18 11:33:20似乎是个好时间。

分析

下载压缩得到许多txt,内容为空

{FC19DE8D-B112-4281-9EDA-39CDE03874C2}.png

先看一下属性

{986AE1FE-AB70-4526-9825-B2F193166C41}.png

发现与题目大致相同的内容

时间戳转换工具 - 在线时间工具箱

{34D89BB7-E20A-415E-9C17-881D97E38662}.png

{2464ADC9-2123-44B2-AF56-E03FFF7898F9}.png

中间相差88

88是啥?????????

卡了

{989019A9-42F3-40C0-B4D4-3C7C3B6CAE9A}.png

88→X

这个题目来源于XMAN,难道下一个文件操作下来代表M?

#Author:Luci4n
import os,time
 
flag = ""
origin_time = 2000000000
 
for i in range(0,47):
    file = r'./{0}.txt'.format(i) 
    get_time = int(os.path.getmtime(file)) #获取最近修改时间
    key = get_time - origin_time
    flag += chr(key)
    
print(flag)

XMan{seems_to_be_related_to_the_special_guests}

[攻防世界]Usb-probing

分析

下载得到一个流量包

image-20241125132420238

猜测USB流量分析

解题

按照USB流量题进行题解

tshark -r 1.pcap -T fields -e usb.capdata > usbdata.txt

然而,并无发现

binwalk一下,看下是否有其他文件

image-20241125133111707

藏有png文件,尝试分离,分离失败

回到wireshark,过滤USB流量

image-20241125134111066

发现png

image-20241125135856112

将其复制进txt文件,在010editor导入该16进制保存为png格式

发现还是打不开,原来缺少png文件尾,加进去

image-20241125140103101

重新导入并保存,得到图片

image-20241125140207730

.......啥玩意?看了wp,原来要进浏览器查看

image-20241125140252295

[攻防世界]Wire1

解题

下载得到一个流量包

打开wireshark

首先,协议分级

{3BAF620F-7AE1-4956-BC3A-7B996F60BE7D}.png

发现http占比大,过滤http

先搜索flag,看看有没有发现

http contains "flag"

{0D2FCB38-53EB-4AAB-AC0B-59114898548D}.png

导出http

{B0B2ADF0-AF90-4A55-8EF3-CC619032DEF4}.png

按大小排序,102是f,猜测是flag,并且是几个flag重复排列在一起

咱不会脚本,直接一个一个输入

{74D91EEE-95E6-4F52-9F92-FBDF606784AF}.png

flag{w1reshARK_ez_1sntit}


对于后面提取数字一步,之前写过一道类似的可将其保存为excel表格进行提取,不过实验失败

{8D086685-6B37-4AB6-82E4-B92082766A86}.png

[攻防世界]不确定,再看看

题目

做题做累了吧,给你准备了一道钢琴曲,要仔细听哦!我藏得很深。

hint1:信息隐藏一般要求载体需要有一定的冗余度,而base64编码刚好就有这个特点。

解题

下载得到音频文件

放入Audacity,并无收获

解锁新工具Deepsound

主要用于处理音频文件的加密。以将敏感数据隐藏在音频文件中,从而实现数据的保密和安全传输。

得到txt文件base64.txt

解码


知识点:音频隐写,新工具Deepsound

[攻防世界]打野

解题

得到一张bmp文件

查看010,stegslove,暂时没啥发现

看了wp,学到一个新工具———zsteg

然后我一使用,出问题了

(but之前写另外一个题目没问题)

…………

时隔多日,我又回来了

如果zsteg出现栈报错“tack level too deep (SystemStackError)”,可以将命令改成“zsteg --msb 瞅啥.bmp”或“zsteg -o xY 1.bmp”,改变扫描顺序。 -o 是设置行列的读取顺序 --msb:most significant BIT comes first,最高有效位排在第一位

得出qwxf{you_say_chick_beautiful?}

[攻防世界]第四扩展FS

题目描述:

D公司正在调查一起内部数据泄露事件,锁定嫌疑人小明,取证人员从小明手机中获取了一张图片引起了怀疑。这是一道送分题,提示已经在题目里,日常违规审计中频次有时候非常重要。

分析

下载得到一张图片,比较大

{7B86C81D-0DFF-4580-B4AC-847F5C169E63}.png

考虑到文件分离

解题

分离后得到加密zip

回到题目“提示已经在题目里”

{4550193F-805D-4A54-93B9-0C001F25D9EB}.png

以为是啥线索,没想到就是密钥,打开zip

{5CBE7C9B-2A8E-4ABD-8799-74927CB7D86C}.png

再次回到题目“频次”

运行脚本

text = ""

count = []
for i in range(256):
    count.append([i, 0])

for ch in text:
    count[ord(ch)][1] += 1

count.sort(key=lambda x: x[1], reverse=True)
for i in range(256):
    if count[i][1] > 0:
        print(chr(count[i][0]), end = "")

DCTF{ka1f4NgxIntAi}

然后答案错误??????

官方wp:DCTF{ka1f4NgxlntAi}

[攻防世界]很普通的Disco

分析

音频文件,查看是否有摩斯密码,二进制,频谱等

音频开头有一段空白,应该有问题

解题

超级放大,上1下0

{D174B455-EFC3-4D7A-BD17-086BF531241C}.png

110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101

{5C3A2FE4-FD6D-4174-BFB6-D7233163E2B0}.png

其实最前面还有一个,太可恶了!

s = '110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101'
flag = ''
for i in range(0,len(s),7):
    flag += chr(int('0'+s[i:i + 7],2))
print(flag)

得出flag


知识点:音频隐写,进制转换

[攻防世界]坚持60s

题目描述

菜狗发现最近菜猫不爱理他,反而迷上了菜鸡

我是菜狗

分析

下载得到一个jar文件

JAR 文件就是 Java Archive File,顾名思意,它的应bai用是与 Java 息息相关的,是 Java 的一du种文档格式。JAR 文件非常类似 ZIP 文件——zhi准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。

解题

放至010,发现这其实是个zip

{43734995-74E5-48F1-8884-392C82004836}.png

改后缀,里面有3个文件夹,文件夹内有许多文件,一个一个看还是比较容易找到flag(就在前几个文件中)

{E3225E70-C119-4A1C-B2E2-46C8FDC8FAFB}.png

{506FA552-712B-45CA-A05F-F35C231872E7}.png

直接提交失败,需要base64解码

得到flag{DajiDali_JinwanChiji}


上文提到,flag刚好在前面几个文件夹,如果在后面呢……

学到一个新工具id-gui

{85A473E9-A277-4813-9B14-AAAF30672081}.png


知识点:jar文件

[攻防世界]看雪看雪看雪

分析

得到一个rar文件,里面有一张jpg

南方孩子羡慕

按照图片隐写思路:

  • 属性
  • 010editor(隐藏文件分离,宽高)
  • stegslove

解题

按照刚才思路,没有什么发现

回头看看题目“看雪看雪看雪”,好像有个东西叫雪隐写

后面看wp,其实属性里面有提及过,只是我没有注意到…….

所以压缩包内可能有其他我看不见的文件

于是乎

将后面这一大段复制进sublime

看吧,里面还是有东西的

将其全部复制下来进一个新的txt文件,用snow工具

得到flag


知识点:图片隐写,snow隐写

[攻防世界]碎纸机11

分析

下载得到一堆图片

{092E5846-7B9D-42FA-A7A3-313403091C5F}.png

打开看一眼,应该是一个二维码被“分尸”了

解题

碎片的排列应该有个顺序,010editor,属性暂时没有发现

可能是文件时间,大小

将图片按日期递增排序,随后放入网站

在线合并JPG、PNG、SVG、WEBP图片

{F93A3DE2-96C2-40A8-B7EE-12A4095A82CB}.png

注意选择水平

得到二维码

{CB991B87-C490-47C3-8514-18B5A5B17FEA}.png

{B850D017-3F4E-4072-918C-348466D439EF}.png

[攻防世界]我们的秘密是绿色的

分析

下载得到一张图片,图片隐写

{D108FF63-161F-4A4F-B598-5571F9A1DE6B}.png

解题

常用的图片隐写思路好像没发现什么,网上搜索原来有个工具就叫oursecret

Our Secret可以隐藏文本,视频,音频,图像还有其他格式的文件,它创建的初衷是为了隐藏和发送敏感文件或消息。

[攻防世界]信号不好先挂了

分析

又是图片隐写

我也先挂了……

解题

save bin

保存后的zip还需要修复一下才能解压缩

……怎么里面又是这张图片

Misc隐写术 - Scr1pt? - 博客园

两张一样图片还可在stegslove合成图片

BlindWaterMark这个工具一直报错(麻木)

直接打开puzzlesolve,得到图片


知识点:盲水印

信女愿一台不会报错的电脑

[攻防世界]再见李华

题目描述

李华的图片被弄脏了,你能帮忙看看弄脏的字符吗,要求不少于10000字,没有特殊字符

分析

得到一张图片

{935452E8-245B-42CD-AF99-B91CB148A2E3}.png

凡是去010里面看一眼

解题

{4F997A76-8D0D-403B-9620-A744BF7A6340}.png

在010里发现txt文件,foremost分离出来,得到压缩包,里面含有txt文件,需要密码

看一眼,也不是伪加密,使用爆破

掩码加密(离谱)

观察题目 不少于10000字

可能是?????LiHua 看了wp,题目提示错误,因该是????LiHua

{FB014BB6-C10E-4E8D-A0D3-EDBF4A94069D}.png

得到密码 15CCLiHua

打开得到

{24D435BF-BB98-43AC-81FB-DF894B491D0D}.png

[攻防世界]互相伤害!!!

{28A2BCC1-0C1E-4804-87F2-AA2257286E56}.png

解题

下载得到一个没有后缀的文件

去kail查看

{427E3DC8-223E-485B-935C-CDE3C7D7CAEE}.png

将其改成流量包后缀,打开

{20146678-BE08-4C31-B1CE-1B4BA230DC90}.png

发现http中很多jpg文件,将其导出

{EF39479F-5E81-437C-992C-663EF7477C0F}.png

在其中一张图中发现二维码

{78F915D5-82DD-47E5-AB98-EB5D5AB70245}.png

扫码得到

U2FsdGVkX1+VpmdLwwhbyNU80MDlK+8t61sewce2qCVztitDMKpQ4fUl5nsAZOI7\nbE9uL8lW/KLfbs33aC1XXw==

看似base64,但解码得到一堆乱码

{24951B91-6BDA-411D-8E33-165B7B97BA58}.png

看来是其他,看了wp,原来是AES解密

密钥猜测为图上的CTF

得到

668b13e0b0fc0944daf4c223b9831e49

输入flag,失败

再去看看那些图片

{3FE4FC78-E1E0-4C73-B5B9-6949D837371C}.png

发现一张与题目相同内容的图片,按照图片隐写思路

进行分离得到一个zip

{E1FABC0B-9CDA-4A8A-8D0D-2D623194FDB3}.png

里面有一个图片,但被加密了,用刚才的字符串做为密钥,得到一个二维码,解码

{9B72D1F9-1916-4BDE-9162-2E41BEFA1E67}.png

flag{97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758}

[攻防世界]misc_xor

{73D38BAC-9036-413D-AD5F-B01B0F564A3F}.png

一个只是巩固题

题目信息:异或

解题

得到一串字符

cidb~0f<f==0f634014`5g734c0=g34ag=f`fx

txt中只有该字符,无其他隐写等

根据题目中的异或提醒解题【CTF】异或运算符的利用_ctf 异或-CSDN博客

0 xor 1 = 1
0 xor 0 = 0
1 xor 1 = 0
1 xor 0 = 1

{A5208AB0-2051-4F40-9E33-4E32897E44EB}.png

大概过程:

先将字符转换成二进制,cidb即对应着flag,得出key

[26个字母的二进制代码](https://www.notion.so/26-15a8b1f47b6180d481c0fd87ffef8df7?pvs=21)

c 0 1 1 0 0 0 1 1
key 0 0 0 0 0 1 0 1
f 0 1 1 0 0 1 1 0
i 0 1 1 0 1 0 0 1
key 0 0 0 0 0 1 0 1
l 0 1 1 0 1 1 0 0

所有key=5(00000101)

{B186D166-4358-49A1-AB3B-C0BC33B7763D}.png

flag{5c9c885c361541e0b261f58b61db8cec}


知识点:异或运算

官方wp直接这样,又让我发现了厨师的新功能

{FC07B068-8B78-4DF3-ABC2-5B0BB1CFD777}.png

[攻防世界]北京地铁

{2856FB75-8DB1-4E09-9901-D403021506E5}.png

也是一个比较令人“惊喜”的题目

解题

获得一张北京地铁图片

{D3772A47-1E25-4722-9A97-CE79719F5A73}.png

不愧是大城市

首先进行图片分析,发现类似于base64

屏幕截图 2024-12-11 200539.png

根据题目提示的AES,但是缺少key

注意题目的“不要光记得隐写不看图片本身啊”

李大普

屏幕截图 2024-12-11 201403.png

猜测key就是weigongcun

然后再根据提示

在线AES加密解密 - 无双工具

屏幕截图 2024-12-11 212826.png

DDCTF{Q*2!x@B0}

[攻防世界][中等] QR1

{A1C3D7F0-5591-42E9-BA07-53814E209BA0}.png

解题

下载得到一张空白照片,根据平常的图片隐写并无什么发现

{6A3B9141-1317-4D41-80D2-AA95458BCE26}.png

观察图片,放大居然还有点东西

{FF2970A1-86BE-4BD6-89C4-E4C6758918DA}.png

放在画图工具中查看,是一张二维码

{7409E2DD-8571-439F-AB86-248DE8D72D9C}.png

将图片大小改为533X533

{616E1EAC-8363-4F08-86BC-48DF45F04CE8}.png

{EE64E005-1C46-4313-8634-8BC80DC64D38}.png

flag{AHA_U_Kn0w_QR_c0d3_312468ed-ea59-4fe9-9cd2-b5e9d8b39498}

[攻防世界]你猜他是什么文件

{C784E41F-30A3-4D38-9685-688E3EB2AF22}.png

解题

下载得到一个打不开的png

{21109E0E-059E-42B0-A1F5-28556AC82AB6}.png

根据题目,将文件头改成png形式,失败

{3E5D0741-C06E-41C7-8D41-749440D13EBE}.png

这意味着file命令无法确定misc.png文件的具体类型,它只能识别出这是一个数据文件。这可能是因为文件的内容不符合任何已知的文件格式,或者文件可能已损坏。通常,一个PNG文件(Portable Network Graphics)应该包含PNG文件格式的特定头部信息,这样file命令才能正确识别它。如果misc.png确实应该是一个PNG图片文件,那么这个结果表明文件可能已损坏或者被错误地命名

然后就挨个得改

发现是rar文件,将其修改

{4FB3D467-8F00-4439-A2E1-4BE0B17B4B89}.png

保存为rar,发现加密文件

{3441D02B-003B-4B75-B7FB-18A67C6A4F47}.png

无提示情况下尝试伪加密与暴力破解

暴力破解得到密钥123456

打开发现又有加密

{9391C641-B116-461E-91A3-E787E3EDFE58}.png

暴力破解失败

观察发现加密文件内得png的crc与外面png文件crc相同,猜测明文攻击

{DFDED00A-017C-41EC-B479-5A234FEC9C96}.png

{3F0D1702-8B15-4447-B6FF-FFD6860BD0CA}.png

将外面png打包成1.zip对flag进行明文破解,得到decrypted

{E2C16CF7-32F1-44A0-A548-F848BA7B1C72}.png

打开

{B1965906-5A4B-4C90-AEFB-81C728056BFB}.png

flag{3f76318f507fe7eb6422cd0703c64c88}

[攻防世界]7-2

{DF18A7C9-076F-4875-A230-AC3083A4F0FF}.png

解题

{D00AA2EE-0D34-4718-AC62-EDEB4850865B}.png

下载得到许多文件,里面内容如下:

{E696A67D-4EB9-45E2-839A-E4BACC08F62E}.png

先把名字与内容都提取出来

# 名字提取
import os

# 设置文件夹路径
folder_path = r"D:\CTF\重生之我是工商做题人\118956c97c7c4a3e9b1508c1f5ea44be\problem"  # 请将'your_folder_path_here'替换成你的文件夹路径

# 遍历文件夹中的文件
for filename in os.listdir(folder_path):
    # 检查文件是否有后缀
    if '.' not in filename:
        # 打印没有后缀的文件名
        print(filename)

再进行bese64解码

只有这个文件解码后不是乱码:YWluaWRleGluZ3podWFuZw(其实我并没有看到就直接下一步)

# 将一个文件夹内若干个文件内容提取出来
import os

def extract_file_contents(folder_path):
    # 遍历指定文件夹
    for filename in os.listdir(folder_path):
        # 构建完整的文件路径
        file_path = os.path.join(folder_path, filename)
        # 确保是文件而不是文件夹
        if os.path.isfile(file_path):
            try:
                # 打开并读取文件内容
                with open(file_path, 'r', encoding='utf-8') as file:
                    content = file.read()

                    print(content)
                     # 打印分隔线以区分不同文件的内容
            except Exception as e:
                print(f"Failed to read {filename}. Reason: {e}")

# 替换为你的文件夹路径
folder_path = r"D:\CTF\重生之我是工商做题人\118956c97c7c4a3e9b1508c1f5ea44be\problem"
extract_file_contents(folder_path)

内容如下,主要发现两段比较像flag

{8E7F8431-6DF1-44AB-A201-E4272D7B5845}.png

又因为文件名给的提示指定了一个文件,所以应该是下面这段字符

{CACC56BD-8DAF-433F-8355-9057EA0C0C69}.png

随波逐流一下,没啥发现,又卡住了

原来是这个:键盘密码 + 凯撒得到flag

74 94 22 42 91 23 {82 42 82 52 63 21 42 22 73 21 }

键盘密码:
例如 a-21 b-35 c-33
或者倒过来 a-12 b-53 c-33

w   d  f  l  a  g { y  l  y  o  s  e  l  f  v  e }

但确实实在想不通怎么就对应到这几个字符上了???

然后突然想到,莫不是这是九键??(难度题目7-2提示为9???)

szbhwc{uhujoahbra}

{8A6CBBB3-319E-47FB-AFC9-30A5765A78A9}.png


知识点:凯撒密码,键盘密码

[攻防世界]pyHAHA

{22518677-14C9-4930-A60C-552A01D8869A}.png

解题

{FF7C9E85-C81A-45BA-9EF4-7EF0D8BCDD5B}.png

得到一个pyc文件,反编译失败,用010看一下

{98C9DED4-3D45-4EA0-A49F-08DB7405C301}.png

发现倒序的两个flag与kp,猜测里面所有字符都倒序了

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

将其正序

flag1: ec8d57d820ad8c586e4be0122b442c871a3d71cd8036c45083d860caf1793
 ddc 
flag2: c40a0be335babcfbd8c47aa771f6a2ceca2c8638caa5924da58286d2a9426
 97e 

然后将zip分离出来

{D33DD2F2-DA22-4407-B670-2111F72DEC4A}.png

发现加密音频文件,试一下刚才的两个flag,失败了,试一下伪加密

{BAEC9522-3118-4DBB-8BEC-EAECAC52871C}.png

发现有信息,李大普了,为啥我电脑突然不能将其复制出来?????

在audacity与deepsound也没发现啥

原来还有一个音频工具DeEgger Embedder,又学到一个新工具

{A83DF998-9CC2-401B-BD41-CE481D3E96CB}.png

{D2983E63-7C07-4588-91FF-E0CAA763DC1B}.png

又是base64隐写

{D08C340B-04FB-43A8-80BB-F04FEA8B4B7D}.png

然而这些01暂时没什么用

(谁来救救孩子//)

想起来还没有反编译那个倒序后的pyc

{54BB1F35-AC52-4A09-9888-7ABFE5325AD2}.png

。。。。。。

文件头错了??

{712DCC33-BF87-4EEE-9C04-B4D658FCE0B6}.png

添加文件头03f30d0a,反编译

{1A000582-A0F7-4B75-B4F2-BE92923F1BED}.png

# uncompyle6 version 3.9.2
# Python bytecode version base 2.7 (62211)
# Decompiled from: Python 3.12.6 (main, Sep  7 2024, 14:20:15) [GCC 14.2.0]
# Embedded file name: Fl4g.py
# Compiled at: 2017-07-02 00:15:33
from os import urandom

def generate(m, k):
    result = 0
    for i in bin(m ^ k)[2:]:
        result = result << 1
        if int(i):
            result = result ^ m ^ k
        if result >> 256:
            result = result ^ P

    return result

def encrypt(seed):
    key = int(urandom(32).encode('hex'), 16)
    while True:
        yield key
        key = generate(key, seed) + 233333333333L

def convert(string):
    return int(string.encode('hex'), 16)

P = 115792089237316195423570985008687907853269984665640564039457584007913129640997L
flag1 = 'ThIs_Fl4g_Is_Ri9ht'
flag2 = 'Hey_Fl4g_Is_Not_HeRe'
key = int(urandom(32).encode('hex'), 16)
data = open('data.txt', 'r').read()
result = encrypt(key)
encrypt1 = bin(int(data, 2) ^ eval('0x' + hex(result.next())[2:-1] * 22))[2:]
encrypt2 = hex(convert(flag1) ^ result.next())[2:-1]
encrypt3 = hex(convert(flag2) ^ result.next())[2:-1]
print 'flag1:', encrypt2
print 'flag2:', encrypt3
f = open('encrypt.txt', 'w')
f.write(encrypt1)
f.close()

现在已知flag1,flag2,二进制以及一段python代码

看了wp发现这是otp加密(新知识)

{DB09A77D-16DD-4FB3-BEA1-D39B34D225FC}.png

以下为引用writeup内容
分析脚本发现flag1和flag2的密文在前面的zip注释信息已给出,脚本对三段明文使用了同个
Seed做了加密,其中后两段明文和密文还有第一段的密文已知,考虑OTP加密。
其中encrypt实现的是一个256bit随机数生成器的功能,generate实现的是在有限域GF(2^256)
下的平方运算:new_key=(old_key+seed)^2
因此,先由后两段明文和密文算出key2和key3,再在GF(2^256)下进行开方即可得到seed,
key3 = (key2+seed)^2
再由第一段密文(即base32隐藏的数据)key1和seed解得key1
Key2= (key1+seed)^2
最后对第一段密文(即base32隐藏的数据)和22次叠加的key1做异或得到原始二进制数据

然后运行代码

# Python2 
def generate(m, k): 
    result = 0 
    for i in bin(m ^ k)[2:]: 
        result = result << 1 
        if int(i): 
            result = result ^ m ^ k 
        if result >> 256: 
            result = result ^ P 
    return result 
 
def convert(string): 
    return int(string.encode('hex'), 16) 
 
# P = 11579208923731619542357098500868790785326998466564056403945758
 4007913129640997L 
P = 0x10000000000000000000000000000000000000000000000000000000000000
 425L 
flag1 = 'ThIs_Fl4g_Is_Ri9ht' 
flag2 = 'Hey_Fl4g_Is_Not_HeRe' 
 
encrypt1 = open('encrypt.txt', 'r').read() 
encrypt2 = 0xec8d57d820ad8c586e4be0122b442c871a3d71cd8036c45083d860c
 af1793ddc 
encrypt3 = 0xc40a0be335babcfbd8c47aa771f6a2ceca2c8638caa5924da58286d
 2a942697e 
 
key3 = encrypt3 ^ convert(flag2) 
key2 = encrypt2 ^ convert(flag1) 
print 'Found key2:',key2 
print 'Found key3:',key3 
 
tmp = key3 - 233333333333L 
for i in range(0,255): 
    tmp = generate(tmp,0) 
seed = tmp ^ key2 
print 'Found seed:',seed 
print 'use seed generate key3:',generate(key2,seed)+233333333333L 
 
tmp = key2 - 233333333333L 
for i in range(0,255): 
    tmp = generate(tmp,0) 
key1 = tmp ^ seed 
print 'Found key1:',key1 
print 'use key1 generate key2:',generate(key1,seed)+233333333333L 
 
result = eval(hex(int(encrypt1,2))[:-1]) ^ eval('0x'+hex(key1)[2:-1]
 *22) 
data = open('data.txt', 'w') 
data.write(bin(result)[2:]) 
data.close() 
“encrypt.txt”和“data.txt”中的二进制数据其实是二值图像,转化为png 
# Python3 
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")

得到

{0115320B-6302-4F13-B17A-6A190F7DBAAF}.png


其实后面那一段操作还是有些懵逼,太有难度了

知识点:pyc隐写,反编译,伪加密,DeEgger Embedder(新工具),base加密,otp加密

[攻防世界]picture3

{E9E7F6DE-BFBE-447D-97A6-102BD634646C}.png

解题

{714C5A97-C7BA-4771-9C40-347AC0EE091F}.png

foremost得到一个加密文件(不解的是binwalk得到的该txt无加密,直接可以打开)

{6F58490F-3AF0-4C2B-B0DC-04AB02192071}.png

无提示情况下直接爆破或者伪加密

该文件是伪加,打开txt

b2Q5dU==
aDk5Ni==
ZG8wOW==
ZzYxYh==
ZjU4NT==
aXBjNF==
Q3dTM2==
d1Y5c1==
dFA3WV==
ZDNQUP==
ejhBMT==
dUowaW==
OVQ2ZD==
aUM5ZU==
NnFFek==
ZGc0T/==
NGpWNE==
NVZpUW==
ejZDTm==
a1VEN5==
azNMUX==
TXlhNW==
bjZwWm==
Q2Q0b1==

好像base64

{0A8BD49E-8432-41A1-ADF8-366974D31203}.png

解码如下,好像也没有什么发现

直接粗鲁将其放进工具

{F50379F2-5125-48BB-8D33-D54B5EB4E26F}.png

原来是base64隐写

得到flag{Ba5e_64OFive}


知识点:图片文件分离,base64隐写

网上找到了一个base64隐写脚本

d='''b2Q5dU==
aDk5Ni==
ZG8wOW==
ZzYxYh==
ZjU4NT==
aXBjNF==
Q3dTM2==
d1Y5c1==
dFA3WV==
ZDNQUP==
ejhBMT==
dUowaW==
OVQ2ZD==
aUM5ZU==
NnFFek==
ZGc0T/==
NGpWNE==
NVZpUW==
ejZDTm==
a1VEN5==
azNMUX==
TXlhNW==
bjZwWm==
Q2Q0b1=='''
e=d.splitlines()
binstr=""
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in e :
    if i.find("==")>0:
        temp=bin((base64.find(i[-3])&15))[2:]
    #取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
        binstr=binstr + "0"*(4-len(temp))+temp #二进制字符补高位0后,连接字符到binstr
    elif i.find("=")>0:
        temp=bin((base64.find(i[-2])&3))[2:] #取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
        binstr=binstr + "0"*(2-len(temp))+temp #二进制字符补高位0后,连接字符到binstr
str=""
for i in range(0,len(binstr),8):
    str=str+chr(int(binstr[i:i+8],2)) #从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str) #结果是 Base_sixty_four_point_five转换为

[攻防世界]picture

解题

{69C7A725-7138-49A4-9BD6-00FD0E2E326E}.png

得到信息“CODE‘猜测会出来什么密码

https://img2023.cnblogs.com/blog/3511078/202412/3511078-20241217122450561-713559014.png

先分离一下

foremost无果,binwalk发现文件,其中文件存在

{A27EFD92-3804-4499-A4B1-6F92B5413367}.png

{E25E72AD-95D1-4321-ABA4-8256D57684FF}.png

发现base64

{509823A8-B5D8-4446-B627-2664910A177E}.png

保存下来,放进010,发现开头的kp,将其修改成为pk,保存为zip文件

{E17F3F3E-DF5F-4D60-A83E-4490F07C076B}.png

发现注释与加密文件

[Python 2.7]
>>> ▆▆▆

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    ▆▆▆
ZeroDivisionError: ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ <- password ;)
>>> 

啥玩意?像极了我python代码报错的样子……

遇事不决问ai

{D7E863C5-126D-406F-B20F-70996D459D9E}.png

{9865D3AD-19AD-4433-8CF5-79ED16BC5D26}.png

ZeroDivisionError: integer division or modulo by zero

尝试integer division or modulo by zero,还真打开了

{452AFB6E-FBF3-4F94-943C-05076E432DB1}.png

{96E12296-76F6-478E-99CA-4AEB2BF40F7E}.png

{8321229B-A805-4DB0-9350-F2DED2166DF0}.png


知识点:UUencode编码,文件头,base64转文件,文件分离

[攻防世界]4433

解题

得到一个指纹图片

{CA920BAE-5C76-4BAE-A093-44FD6A1235CB}.png

发现二维码

{16B70A60-8D68-40BC-BC95-B859D776400E}.png

得到摩斯密码

...--.----...--..

{F8B4740F-8D1D-48EE-81BC-634244AF10CB}.png

啊?

回到题目,4433

将摩斯按4 4 3 3分开

...- -.-- --. ..- -..

{BC084228-CE33-40AE-A0B1-D8B98BAB3E46}.png

然后上传,然后失败

{402A87B7-E398-4B87-9CA6-894DED717CC1}.png

得到flag{VERY GOOD}


知识点:图片隐写,摩斯电码的缩写

[攻防世界]侧信道初探

{F0621581-DD1C-42C3-8535-AEE76FCFD376}.png

解题

下载得到两张图片

https://img2023.cnblogs.com/blog/3511078/202412/3511078-20241217122706580-295052377.png

https://img2023.cnblogs.com/blog/3511078/202412/3511078-20241217122706162-481739997.png

有些懵逼,回到题目

首先,何为“测信道初探”?

{3D8419D4-9A91-4606-B9E8-3E138EBFCD99}.png

还有一种侧信道是通过图像的隐蔽信道来传递机密信息

{D02F330D-BA13-48C4-B0E4-607998ED45F6}.png

然后根据题目中“二进制形式读取出来”,猜测图像与二进制有关

https://img2023.cnblogs.com/blog/3511078/202412/3511078-20241217122704488-2015827172.png

得出flag{0110111010}


知识点:侧信道攻击

posted @ 2024-11-30 21:46  阿瑞LI  阅读(220)  评论(0)    收藏  举报