Loading

BUUCTF MISC 方向全解 (巨坑待填)

博客已迁移: https://roadtothe.top/

01. 镜子里面的世界

无描述

下载到一张图片

steg.png

丢进 Stegsolve

image.png

典中典 LSB 隐写,直接看到了 flag (说实话,解法和题目、提示好像没什么关系?)

02. ningen

人类的科学日益发展,对自然的研究依然无法满足,传闻日本科学家秋明重组了基因序列,造出了名为ningen的超自然生物。某天特工小明偶然截获了日本与俄罗斯的秘密通信,文件就是一张ningen的特写,小明通过社工,知道了秋明特别讨厌中国的六位银行密码,喜欢四位数。你能找出黑暗科学家秋明的秘密么?

把图片丢进十六进制编辑器,拉到底部可以看到一个 ZIP 文件的文件头: PK..,导出选区

image.png

打开之后发现有密码,回想题干 小明通过社工,知道了秋明特别讨厌中国的六位银行密码,喜欢四位数,暴力破解得密码为 6368,打开压缩包即得 flag

ningen?有点像这个

image.png

03. 小明的保险箱

小明有一个保险箱,里面珍藏了小明的日记本,他记录了什么秘密呢?。。。告诉你,其实保险箱的密码四位纯数字密码。

和 ningen 一样,丢进十六进制编辑器,尾部有个 RAR 的文件头: Rar,导出选区

image.png

题干描述 密码四位纯数字密码,暴力破解得密码为 6873,打开压缩包即得 flag

04. 爱因斯坦

无描述

文件属性有个备注 this_is_not_password,那密码就是这个了。熟悉的配方,文件尾部有个 ZIP,提取出来发现有密码,用前面备注里的密码解开即得 flag

05. easycap

无描述

下载到一个 pcap 流量包,用 Wireshark 打开之后发现全是 TCP 包,随便右键一个 TCP 请求选择: 追踪流 -> TCP 流即得 flag

image.png

06. 隐藏的钥匙

路飞一行人千辛万苦来到了伟大航道的终点,找到了传说中的One piece,但是需要钥匙才能打开One Piece大门,钥匙就隐藏在下面的图片中,聪明的你能帮路飞拿到钥匙,打开One Piece的大门吗?

下载到一张图片,丢进林忆宁 Editor,文件尾部这回没有压缩包了,而是给了一串 BASE64,解码即得 flag

image.png

07. 另外一个世界

无描述

下载到的图片丢进十六进制编辑器,发现底部有一串二进制数字 01101011011011110110010101101011011010100011001101110011,用二进制转文字工具得到 koekj3s,加上 flag 即可

08. FLAG

请将 hctf 替换为 flag 提交,格式 flag{}

下载到一张图片,检查 LSB 隐写之后发现 ZIP 压缩,用 Stegsolve 导出压缩包

image.png

直接打开压缩包提示损坏,用 WinRAR 修复后正常打开,里面是 Linux 可执行文件,丢进 Kali 执行,输出 hctf{dd0gf4c3tok3yb0ard4g41n~~~},按照题干修改即得 flag

09. 神秘龙卷风

神秘龙卷风转转转,科学家用四位数字为它命名,但是发现解密后居然是一串外星人代码!!好可怕!

下载到一个 RAR,有密码,按照题干信息依旧暴力破解一下,得到密码是 5463,里面的 TXT 看似是乱码,实际是 Brainfuck 加密的文本,用 Brainfuck/Ook! Obfuscation/Encoding 解密即得 flag

10. 假如给我三天光明

无描述

下载到一个压缩包,里面有一张图片和一个加密的压缩包。图片的底部结合题干猜到是盲文,参考盲文对照表得出: kmdonowg

image.png

用 kmdonowg 解开第二个压缩包,里面是一段音频,猜测是摩斯电码,可以直接用声音编辑软件看,也可以听写,最后得到: CTFWPEI08732?23DZ,转成小写之后去掉 ctf 即得 flag

11. 数据包中的线索

公安机关近期截获到某网络犯罪团伙在线交流的数据包,但无法分析出具体的交流内容,聪明的你能帮公安机关找到线索吗?

下载到一个数据包,用 Wireshark 打开。有用的数据包只有 HTTP 和 TCP 类型的,先过滤并跟踪 HTTP 流,看到一串超极长的 BASE64 编码

image.png

因为太长,猜测是图片,加上图片标签 data:image/jpg;base64,BASE64编码内容,flag 就在图片中

image.png

12. 后门查杀

小白的网站被小黑攻击了,并且上传了Webshell,你能帮小白找到这个后门么?(Webshell中的密码(md5)即为答案)。

下载到一套网站源码,用 D盾 扫描即得 flag

image.png

13. webshell后门

朋友的网站被黑客上传了webshell后门,他把网站打包备份了,你能帮忙找到黑客的webshell在哪吗?(Webshell中的密码(md5)即为答案)。

利用文件包含把一句话木马藏在了上传的图片里。解题就和后门查杀一样的套路,用 D盾 扫描得 flag

image.png

image.png

14. 来首歌吧

无描述

下载到一个音频文件,丢进 AU 看波形,放大后能看到左声道有一串莫斯电码

image.png

参考对照表打出摩斯电码即可 (5BC925649CB0188F52E617D70929191C),注意 flag 格式为大写

15. 荷兰宽带数据泄露

无描述

下载到一个 conf.bin 文件,一开始不知道是什么文件,用林忆宁和 binwalk 均无果,偷看一眼百度才知道这是路由器生成的配置文件,是用于备份路由器的设置信息的,可以用 RouterPassView 打开

image.png

搜索 flag 无果,那就搜搜 username 和 password,最后试出来 username (053700357621) 就是 flag

16. 面具下的flag

无描述

下载到一个压缩包,压缩包里有张图片,而图片里还有个压缩包,压缩包里有个 VMDK 文件,key_part_one 和 key_part_two 代表了 flag 的前半段和后半段。这题其实巧妙利用了 Windows 下对于文件名的某些限制,导致在 Windows 中是无法操作这些文件的。key_part_one 里有一个文件名是 NUL 的文件,而 NUL 与 Windows 底层中的设备名冲突,因此 Windows 是不允许 NUL 这个文件名的 (如果在 7-Zip 中直接打开,则会先被重命名为 _NUL)

image.png

part_one 可以用压缩软件的相应优化来绕过 Windows 的限制,而 part_two 就必须使用 Linux 了。在 Linux 中解压 VMDK 文件,可以看到 part_two 中还有一个名为 where_is_flag_part_two.txt:flag_part_two_is_here.txt 的文件,这个文件名中包含一个冒号,而冒号在 Windows 的目录中也是不被允许的,因为会和盘符开头的冒号冲突

这个文件使用了 NTFS 的文件流,参见 [SWPU2019]我有一只马里奥

image.png

最后,part_one 和龙卷风一样,是用 Barinfuck 加密的编码,而 part_two 则是 Ook! 编码,用 Brainfuck/Ook! Obfuscation/Encoding 解密即得 flag

17. 九连环

无描述

下载到一张图,丢进林忆宁,发现尾部有个 ZIP,提取出来,发现有伪加密,再去除,得到一个加密的压缩包和一张图片。图片使用 steghide 隐写工具解密,得到文本

看到这个图片就是压缩包的密码:
bV1g6t5wZDJif^J7

用密码打开 qwe.zip,得到 flag

18. 被劫持的神秘礼物

某天小明收到了一件很特别的礼物,有奇怪的后缀,奇怪的名字和格式。小明找到了知心姐姐度娘,度娘好像知道这是啥,但是度娘也不知道里面是啥。。。你帮帮小明?找到帐号密码,串在一起,用32位小写MD5哈希一下得到的就是答案。

下载到一个数据包,用 Wireshark 打开,过滤 HTTP,发现是在登录某个网站。跟踪 HTTP 即得用户名和密码:

image.png

合在一起就是 adminaadminb,再计算 32 位小写 MD5: 1d240aafe21a86afc11f38a45b541a49,就是 flag

19. 刷新过的图片

浏览图片的时候刷新键有没有用呢

下载到一张图片。刷新键,联想到 F5,也就是说图片使用了 F5-steganography 隐写。下载后执行 java Extract 文件路径 解密图片,得到 output.txt,打开看见 PK 文件头,修改后缀为 ZIP 后重新打开,得到 flag.txt

20. [BJDCTF2020]认真你就输了

无描述

下载到一个 xls 的 Excel 表格,直接用 Excel 打开已经告诉我们这是改过格式的文件了

image.png

拖进十六进制编辑器,发现文件开头是 PK..,也就是 ZIP 压缩包,那么就改后缀用压缩软件打开

image.png

21. [BJDCTF2020]藏藏藏

无描述

下载到一张图片和一个文本文档,不用想 flag 肯定再图片里,丢进林忆宁发现尾部有个 ZIP 包,另存为选区

image.png

打开压缩包,里面是个 docx 文件,docx 里面是个二维码,扫码即得 flag

image.png

22. 被偷走的文件

一黑客入侵了某公司盗取了重要的机密文件,还好管理员记录了文件被盗走时的流量,请分析该流量,分析出该黑客盗走了什么文件。

流量包丢进 Wireshark,粗略看一下,文件应该是通过 FTP 被传走的

image.png

既然有请求 flag.rar,那么文件在哪里?直接搜索 RAR 的文件头 Rar,发现了文件

image.png

最后提取字节流就得到了包含 flag 的 RAR 压缩包了 (貌似也可以通过 binwalk 分解到压缩包),发现有密码,用软件爆破得密码为 5790,打开即得 flag

23. snake

无描述

下载到一张图片,丢进林忆宁发现又是典中典 ZIP

image.png

提取出 ZIP,发现有两个文件: cipher (密文) 和 key (密码),key 中的东西一看就是 BASE64 编码,解码后得到

What is Nicki Minaj's favorite song that refers to snakes?

搜索关键词 Nicki Minaj 关于蛇的歌曲,得到一首歌 Anaconda。关于密文,联想题干,有一种叫做 Serpent (大蛇) 的加密工具,上传 cipher,密码 anaconda,解密后得到 flag

image.png

24. [GXYCTF2019]佛系青年

无描述

下载到一个压缩包,里面一张图片和一个加密的文本文档,研究半天发现图片没什么特别的,怀疑压缩包是伪加密,用 WinRAR 修复后成功打开

image.png

把佛曰部分用 与佛论禅 解密,得 flag

25. [BJDCTF2020]你猜我是个啥

无描述

下载到一个看似是压缩包,实际是 PNG 图片的东西,把 ZIP 后缀改为 PNG 就可以打开图片了,得到一个二维码,可惜扫码结果是 flag 不在这

image.png

继续把图片拖进十六进制编辑器,发现文件尾部有 flag 明文

image.png

26. 菜刀666

流量分析,你能找到flag吗

下载到一个流量包,简单分析之后发现是客户端在操纵服务器的 WebShell 获取文件。过滤 HTTP 后发现包含 flag.txt 的压缩包

image.png

导出字节流后得到压缩包,压缩包有密码,继续分析流量包。结合题干和数据包可以分析出这是再通过菜刀工具操纵服务器 WebShell,而菜刀工具的数据是通过 POST 请求发送的,那么就先过滤 HTTP POST,发现一个很长的数据包

image.png

请求的参数被分为了三部分,action 就是混淆过的命令,直接看 z1 和 z2,z1 用 BASE64 解密后得: D:\wamp64\www\upload\6666.jpg

image.png

而 z2 的头部正好符合 JPG 文件的文件头 FFD8FF,复制出 z2,粘贴到十六进制编辑器中并另存为,得到一张图片,打开即得压缩包的密码,解压即得 flag

a.jpg

27. 秘密文件

深夜里,Hack偷偷的潜入了某公司的内网,趁着深夜偷走了公司的秘密文件,公司的网络管理员通过通过监控工具成功的截取Hack入侵时数据流量,但是却无法分析出Hack到底偷走了什么机密文件,你能帮帮管理员分析出Hack到底偷走了什么机密文件吗?

这题的解法和思路和前面的 被偷走的文件 是一模一样的

下载到一个流量包,简单分析之后发现黑客是通过 FTP 把文件传走的

image.png

那么直接搜索 RAR 压缩包的文件头 Rar,成功找到文件,导出字节流

image.png

发现压缩包有密码,爆破得密码为 1903,打开压缩包即得 flag

28. [BJDCTF2020]just_a_rar

无描述

下载到一个 4位数.rar,暴力破解得密码为 2016,打开压缩包发现一张图片,图片属性的备注即为 flag

image.png

29. [BJDCTF2020]鸡你太美

无描述

下载到两张 GIF,副本那张缺少 GIF 文件头,补上之后打开即得 flag

30. [BJDCTF2020]一叶障目

无描述

下载到一张 CRC 被篡改的图片,使用 工具 修复后即可看到全图,获得 flag

31. [SWPU2019]神奇的二维码

无描述

下载到一张图片,丢进 binwalk 分解出四个 RAR 文件

image.png

打开 17012.rar,里面有一个 docx 文档,里面有个超长的 BASE64,解码后得到 comEON_YOuAreSOSoS0great

用解得的内容作为密码打开 18394.rar,解压出 good.mp3,丢进 AU 看波形,发现摩斯电码,解码后得到 morseisveryveryeasy,即为 flag

716A 真的只是图片!

32. 梅花香之苦寒来

无描述

下载到一张图片,拖进林忆宁发现底部有一大串十六进制

image.png

导出这串十六进制,写个小脚本转成 ASCII

hexFile = open('C:\\Users\\azwhikaru\\Downloads\\Compressed\\a.txt', 'r').read()
newFile = open('C:\\Users\\azwhikaru\\Downloads\\Compressed\\ascii.txt', 'w')

for i in range(0, len(hexFile), 2):
    item = '0x' + hexFile[i] + hexFile[i + 1]
    item = int(item, base=16)
    print (chr (item), end='', file = newFile)

转换后长这样,是一堆坐标

image.png

一看就是 XY 轴的坐标嘛!结合图片属性里的备注: 会画图吗?肯定是要把这堆坐标画出来。这里似乎可以用一个叫 Gnuplot 的软件直接画,我还是选择自己写个 (为什么用易语言?因为简单啊)

image.png

最后扫码就可以得到 flag 了

这题只是处理那一大堆东西有点麻烦

33. [BJDCTF2020]纳尼

无描述

下载到一个 GIF,因为缺少文件头所以打不开,在文件头部补上 GIF 文件头即可 47 49 46 38。打开 GIF 文件,发现有 4 帧图像,打出来之后发现是 BASE64 编码,解码即得 flag

34. 穿越时空的思念

嫦娥当年奔月后,非常后悔,因为月宫太冷清,她想:早知道让后羿自己上来了,带了只兔子真是不理智。于是她就写了一首曲子,诉说的是怀念后羿在的日子。无数年后,小明听到了这首曲子,毅然决定冒充后羿。然而小明从曲子中听不出啥来,咋办。。

下载到一个 MP3 文件,丢进 AU,发现右声道有摩斯电码,听写出摩斯电码即为 flag

image.png

35. [ACTF新生赛2020]outguess

无描述

下载到一个 huhuhu.zip,里面有一张图片和加密的 flag.txt。先解压出图片,图片属性的备注里有一串 核心价值观编码,解码得到 abc

image.png

把图片拖进 Kali,用 outguess 工具解密 outguess -k abc -r ./mmm.jpg -t ./out.txt,得到 flag

36. [HBNIS2018]excel破解

无描述

下载到一个 XLS 表格,丢进十六进制编辑器搜索 flag

image.png

37. [HBNIS2018]来题中等的吧

无描述

下载到一张图片,一眼看出是摩斯电码,打出来得到 ALPHALAB,转为小写即为 flag

38. 谁赢了比赛?

小光非常喜欢下围棋。一天,他找到了一张棋谱,但是看不出到底是谁赢了。你能帮他看看到底是谁赢了么?

下载到一张图片,检查文件尾部发现一个 RAR 压缩包,分离出来压缩包,发现有密码,爆破得密码为 1020,解压后得到一张 GIF,逐帧分析后发现一帧写着 do_you_know_where_is_the_flag

image.png

分离出这一帧,用 Stegsolve 分析后发现 Red plane 0 通道有一个二维码,扫码即得 flag

39. [SWPU2019]我有一只马里奥

无描述

这道题用到了 NTFS 数据流,运行 attachment.exe 会解压出一个 1.txt 文件,上书

ntfs      
flag.txt

随后运行 notepad 1.txt:flag.txt 就可以看到 flag。至于什么是 NTFS 数据流,参见这里

40. [WUSTCTF2020]find_me

无描述

下载到一张图片,右击属性,在备注处发现一些盲文

image.png

使用 工具 解密即得 flag

41. [GXYCTF2019]gakki

无描述

下载到一张新垣结衣的照片,用林忆宁分析发现尾部有个 RAR 压缩包,提取后发现有密码,再用软件爆破得密码为 8864

image.png

发现大量无规则文本,用 字频统计 工具,字母中按出现顺序从高到低排以此是 GXY{gaki_IsMyw1fe},得到 flag

image.png

42. [ACTF新生赛2020]base64隐写

无描述

得到一个 ComeOn!.txt 和 hint.jpeg,hint 扫码后是个公众号,目测没什么用,打开 ComeOn!.txt 发现每行都是 base64 编码

image.png

按照标题 base64隐写,用现成的脚本即可解密

# base64隐写
import base64
def get_diff(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def b64_stego_decode():
    file = open("ComeOn!.txt","rb")
    x = ''
    lines =  file.readlines()
    for line in lines:
        l = str(line, encoding = "utf-8")
        stego = l.replace('\n','')
        #print(stego)
        realtext = base64.b64decode(l)
        #print(realtext)
        realtext = str(base64.b64encode(realtext),encoding = "utf-8")
        #print(realtext)
        diff = get_diff(stego, realtext)
        n = stego.count('=')
        if diff:
            x += bin(diff)[2:].zfill(n*2)
        else:
            x += '0' * n*2
            
    i = 0
    flag = ''
    while i < len(x):
        if int(x[i:i+8],2):
            flag += chr(int(x[i:i+8],2))
        i += 8
    print(flag)

if __name__ == '__main__':
    b64_stego_decode()

43. [GUET-CTF2019]KO

无描述

得到一个 TXT 文件,打开后发现是 Ook 编码,用 工具 解密即得 flag

44. [MRCTF2020]ezmisc

无描述

得到一张图片,用林忆宁打开报 CRC 错误,用 脚本 修复即得 flag

45. [SWPU2019]伟大的侦探

无描述

下载到一个加密的压缩包,密码.txt 需要解码

image.png

用林忆宁切换编码为 EBCDIC,得到压缩包密码 wllm_is_the_best_team!

image.png

解压出一堆图片,然后按照顺序排列

image.png

发现这是福尔摩斯中的 跳舞小人编码,解码后即得: flag{iloveholmesandwllm}

image.png

46. 黑客帝国

Jack很喜欢看黑客帝国电影,一天他正在上网时突然发现屏幕不受控制,出现了很多数据再滚屏,结束后留下了一份神秘的数据文件,难道这是另一个世界给Jack留下的信息?聪明的你能帮Jack破解这份数据的意义吗?

下载到一个 TXT,发现文件头是 RAR 压缩包的,丢进十六进制编辑器,果然是,保存为 RAR

image.png

发现 RAR 有密码,爆破得密码为 3690,解压后得到一张图片。发现图片是打不开的,因为 JPG 格式的图片被改成了 PNG 文件头,改回来即可打开,即得 flag

image.png

47. [MRCTF2020]你能看懂音符吗

无描述

下载到一个 RAR 压缩包,发现不能直接打开,丢进十六进制编辑器发现文件头被修改成了 aRr,改回来即可

image.png

打开后发现一个 Word 文档,提示不小心弄没了 (恼),那就让他显示出来吧

image.png

然后还需要选中隐藏的部分,右键 -> 字体里面去掉隐藏

image.png

最后就可以解密了,复制出音符,用 工具 解密即得 flag

48. [HBNIS2018]caesar

无描述

题目其实写得很清楚了,下载到一个 TXT

题目:caesar

描述:gmbhjtdbftbs

flag格式:XXX 明文

提交:直接提交明文 (小写)

描述肯定就是凯撒密码了,偏移 1 解密后得到 flagiscaesar

49. [HBNIS2018]低个头

无描述

flag 为 CTF

image.png

这是否有点抽象

50. [SUCTF2018]single dog

无描述

下载到一张图片,拖进十六进制编辑器发现尾部有 ZIP 压缩包,提取后获得 1.txt,内部为 AAEncode (一种 JavaScript 混淆算法),用 工具 解密后即得 flag

function a()
{
var a="SUCTF{happy double eleven}";
alert("双十一快乐");
}
a();

51. 我吃三明治

无描述

下载到一张图片,拖进十六进制编辑器发现文件是由两张图片拼接而成的,中间有一段 BASE32 编码,用 工具 解密即得 flag

image.png

52. sqltest

网站遭受到攻击了,还好我们获取到了全部网络流量。

百度网盘?挖坑待填

53. [SWPU2019]你有没有好好看网课?

无描述

得到两个压缩包,flag2.zip 和 flag3.zip,flag3.zip 备注写着 呀!我把压缩包密码忘记了,依稀记得是6位数字,用软件暴力破解得到密码是 183792,解开之后发现一个 DOCX 文档和一个 影 流 之 主 的视频

image.png

结合 DOCX 里的数字,看 影 流 之 主 视频,发现在第五秒、第七秒左右,在吊灯上分别有两串文字

image.png

image.png

第一段由点和斜杠组成,应该是敲击码,用 脚本 解密后得到 WLLM。第二段很明显是 BASE64 了,解码后得到 up_up_up,组合一下就是 wllmup_up_up,用密码成功解开 flag2.zip,得到 Real flag.jpg,拖进十六进制编辑器,发现尾部有 flag 明文

image.png

54. [ACTF新生赛2020]NTFS数据流

无描述

下载到 flag.rar,里面一堆 TXT,以 CRC 排序发现 293.txt 不同,打开后显示

flag就在这里哦,找找看吧ADS:)

结合题目,和之前的 马里奥 和 面具下的flag 一样,用 notepad 293.txt:flag.txt,打开附加的文件,即得 flag

55. john-in-the-middle

无描述

下载到一个 pcap 数据包,用 Wireshark 打开,简单分析后发现关键部分在 HTTP 请求中,导出所有 HTTP 数据包

image.png

发现了一些图片。关键在于 logo.png,这里有两种解法,logo.png 的左下角能看到淡淡的 flag 字迹,所以第一种就是直接拖进 PS 里面拉曲线

image.png

第二种是用 Stegsolve 打开 scanlines.png 和 logo.png,在某些通道中也会出现 flag

image.png

56. 喵喵喵

喵喵喵,扫一扫

下载到一张猫猫,检查 BGR 通道发现 LSB 隐写,藏了一张 PNG 图片,将其导出

image.png

发现文件头被篡改,改回正常 PNG 头后即可正常打开

image.png

打开后发现半个二维码,用 CRC 工具 修复后得到整个二维码,扫码获得一个百度网盘链接,下载到一个 flag.rar,里面的 flag.txt 中写道 flag 不在这。结合 WinRAR 解压时出现的报错联想到 NTFS 流,用工具扫描后发现一个 pyc 文件

image.png

导出并反编译 pyc 文件,得到一段 Python 代码,重写后即得 flag

import base64
 
ciphertext = ['96','65','93','123','91','97','22', '93','70','102','94','132','46','112','64','97','88','80','82','137','90','109','99','112']
ciphertext = ciphertext[::-1]
 
def decode():
    code = ''
    for i in range(24):
        if(i%2 == 0):
            a = int(ciphertext[i]) - 10
        else:
            a = int(ciphertext[i]) + 10
        a = i ^ a
        code = code + chr(a)
    return(code)
    
print(decode())

57. [ACTF新生赛2020]swp

无描述

下载到一个 pcapng 数据包,用 Wireshark 打开后导出所有 HTTP 数据包,数据包中发现一个 secret.zip

image.png

直接打开发现有密码,暴力破解无果,猜测是伪加密,用 WinRAR 修复后成功打开

image.png

得到一个 swp 文件和一个 Linux 二进制可执行文件,直接把 flag 丢进 IDA 查看字符串,获得 flag

image.png

本来以为这道题既然叫 swp,可能会让我们恢复 swp 文件什么的?但是没有!方法就是查看明文 String

58. [GXYCTF2019]SXMgdGhpcyBiYXNlPw==

无描述

题目就是 BASE64 编码,解码之后的意思是: Is this base?

下载到一个 flag.txt,一行一串 BASE64 编码,联想到 之前 做到过的 BASE64 隐写题,用脚本解密即得 flag

# base64隐写
import base64
def get_diff(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def b64_stego_decode():
    file = open("flag.txt","rb")
    x = ''
    lines =  file.readlines()
    for line in lines:
        l = str(line, encoding = "utf-8")
        stego = l.replace('\n','')
        #print(stego)
        realtext = base64.b64decode(l)
        #print(realtext)
        realtext = str(base64.b64encode(realtext),encoding = "utf-8")
        #print(realtext)
        diff = get_diff(stego, realtext)
        n = stego.count('=')
        if diff:
            x += bin(diff)[2:].zfill(n*2)
        else:
            x += '0' * n*2
            
    i = 0
    flag = ''
    while i < len(x):
        if int(x[i:i+8],2):
            flag += chr(int(x[i:i+8],2))
        i += 8
    print(flag)

if __name__ == '__main__':
    b64_stego_decode()

59. 间谍启示录

在城际公路的小道上,罪犯G正在被警方追赶。警官X眼看他正要逃脱,于是不得已开枪击中了罪犯G。罪犯G情急之下将一个物体抛到了前方湍急的河流中,便头一歪突然倒地。警官X接近一看,目标服毒身亡。数分钟后,警方找到了罪犯遗失物体,是一个U盘,可惜警方只来得及复制镜像,U盘便报废了。警方现在拜托你在这个镜像中找到罪犯似乎想隐藏的秘密。

下载到一个 ISO 文件,打开后发现一个 autorun,里面写着

[AutoRun] 
OPEN=systemz.exe
shellexecute=systemz.exe
shell\Auto\command=systemz.exe

解压出 systemz.exe,发现是一个自解压压缩包,直接用 WinRAR 或者 7-Zip 打开这个 EXE 都能提取文件

image.png

发现一个 flag.exe,冒死双击打开后发现它写出了一个 机密文件.txt (这个文件是隐藏的,需要开启显示隐藏的文件才能看见)

image.png

打开后发现 flag 明文

60. Mysterious

自从报名了CTF竞赛后,小明就辗转于各大论坛,但是对于逆向题目仍是一知半解。有一天,一个论坛老鸟给小明发了一个神秘的盒子,里面有开启逆向思维的秘密。小明如获至宝,三天三夜,终于解答出来了,聪明的你能搞定这个神秘盒子么?

下载到一个 EXE 可执行文件,先查壳,发现没壳,丢进 IDA 分析

image.png

发现核心代码,把这段挖出来重写一遍

int main() {
	char String[] = ""; // 输入的文本
	char Text[260];
	char Source[260];
	
    if (strlen(String) > 6) { // 如果长度大于 6
    	return 0; // 则退出
	}
    
    /*
    atoi 方法: 把 ASCII 字符串转为整型,只会转换数字和正负号,
    碰到数字和正负号以外的东西会自动停下。
    
    例如输入 123abc456,则会转换为 123
    */
    
	int v4 = atoi(String); // v4 = 122
    int Value = v4 + 1; // Value = v4 + 1 = 123
	
    /*
    这里才是关键部分
	v4 = 122, String[3] = x, String[4] = y, String[5] = z
	String = 122xyz
	*/
 	if ( v4 == 122 && String[3] == 120 && String[5] == 122 && String[4] == 121 ) {
        strcpy(Text, "flag");
        _itoa(Value, Source, 10);
        strcat(Text, "{");
        strcat(Text, Source);
        strcat(Text, "_");
        strcat(Text, "Buff3r_0v3rf|0w");
        strcat(Text, "}");
    }
    
    cout << Text << endl;
    
    // flag{123_Buff3r_0v3rf|0w}
    
	return 0;
}

从代码中可以看出 String 须为 122xyz,输入 122xyz 即得 flag,或者直接按照代码的逻辑走一遍也可以获得 flag

当不知道变量对应的值是什么的时候,可以试试动态调试!

61. [UTCTF2020]docx

无描述

下载到一个 DOCX 文档,打开是 Wikipedia 对于 Hack 的介绍,看了一圈文档内容似乎没什么特别的。但是众所周知一般来说,PPT、DOC、XLS 等等的文档其实都是一个 ZIP 压缩包,所以用 ZIP 打开 DOCX,来到 word/media 目录,发现一堆图片,按大小排列后发现 flag

image.png

62. 弱口令

老菜鸡,伤了神,别灰心,莫放弃,试试弱口令

下载到一个压缩包,发现有密码,而且有一段奇怪的注释。联系题目名称,用弱口令字典爆破,然并卵。

image.png

把这段奇怪的东西复制出来,因为有长短规律,猜测为摩斯电码,开启 Notepad3 的显示空格后,看到了空格和制表符组成的摩斯电码,打出来之后即得压缩包密码

image.png

解压出图片后发现没什么特别的,继续联系题目,猜测是加密的 LSB 隐写,用 工具 解密即可

┌──(root㉿azwhikaru)-[~/cloacked-pixel]
└─# python2 ./lsb.py extract a.png flag 123456
[+] Image size: 500x500 pixels.
[+] Written extracted data to new.
                                                                                                                                    
┌──(root㉿azwhikaru)-[~/cloacked-pixel]
└─# cat flag       
flag{jsy09-wytg5-wius8} 

原来是 LSB 隐写的弱口令

63. [RoarCTF2019]黄金6年

无描述

下载到一个 MP4,拖进林忆宁发现尾部有一串 BASE64 编码,解码后带有 RAR 的文件头,所以写个脚本提取出这个 RAR

import base64

outFile = open('flag.rar', 'wb')

b64Code = 'UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=='

b64decode = base64.b64decode(b64Code)

outFile.write(b64decode)

提取出来之后发现有密码,回看视频,发现在 《C++ Primer Plus》、《白帽子讲 Web 安全》、《逆向工程核心原理》、《活着》处分别有四个二维码,扫码结果分别是 key1:i,key2:want,key3:play,key4:ctf,iwantplayctf,使用密码解开压缩包获得 flag

最后《活着》那里的码有点难找,一开始我用 Kinovea 怎么都看不到最后几帧,后来换其他剪辑软件才看到的

46. 小易的U盘

小易的U盘中了一个奇怪的病毒,电脑中莫名其妙会多出来东西。小易重装了系统,把U盘送到了攻防实验室,希望借各位的知识分析出里面有啥。请大家加油噢,不过他特别关照,千万别乱点他U盘中的资料,那是机密。

下载到一个 ISO,打开后发现一堆 autoflag.exe,想到之前的 间谍启示录,查看 autorun

[AutoRun]
Open=autoflag - 副本 (32)

autoflag 32 的大小也和其他 autoflag 不一样,那么就解压 autoflag 32 吧,需要注意这个文件是隐藏的,需要开启相关选项才能看见,依旧是参见 间谍启示录。没壳,直接丢进 IDA,查看 String 就看到了 flag 明文

image.png

65. [WUSTCTF2020]alison_likes_jojo

无描述

得到两张图片,检查后发现 boki.jpg 的尾部藏了一个 ZIP 压缩包,解压出来,发现有密码,爆破之,密码为 888866,得到 biesi.txt,里面是一串 BASE64 编码,解码后得到 killerqueen;联想到之前做过的加密图片隐写,JPG + 加密,可能是 outguess 隐写,遂

┌──(root㉿azwhikaru)-[~/cloacked-pixel]
└─# outguess -k killerqueen -r jljy.jpg flag.txt
Reading jljy.jpg....
Extracting usable bits:   5580 bits
Steg retrieve: seed: 127, len: 40
                                                                                                             
┌──(root㉿azwhikaru)-[~/cloacked-pixel]
└─# cat flag.txt
wctf2020{pretty_girl_alison_likes_jojo}

66. [安洵杯 2019]吹着贝斯扫二维码

无描述

得到一堆没有后缀的文件和一个加密的 flag.zip,查看文件头得知没有后缀的文件都 JPG,把它们解压到 code 文件夹中,然后用命令行给它们加上后缀

ren * *.jpg

文件看起来是二维码,但是并没有什么顺序,总不可能一张张试过去吧。检查 JPG 文件尾部,发现带有序号,写个脚本给他们重命名一下

import os

file_path = r'code'
folder = os.listdir(file_path)

for file in folder:
    openFile = open('code/' + file, 'rb').read()

    fileLen = len(openFile)

    num = ''
    num_1 = chr(openFile[fileLen - 2])
    num_2 = chr(openFile[fileLen - 1])

    if (num_1.isdigit() == False): # 是否为个位数
        num = '0' + num_2
    else:
        num = num_1 + num_2

    os.rename('code/' + file, 'code/' + num + '.jpg')

print('OK')

重命名之后就可以组合图片了,用脚本或者 PS 都行,我比较笨就用 PS 了。组合之后得到二维码,扫码得

BASE Family Bucket ??? 
85->64->85->13->16->32

回看 flag.zip 的注释,里面有一段奇怪的东西,应该是按照这个顺序加密的,那么逆向解密即可

BASE32 -> BASE16 -> ROT13 -> BASE85 -> BASE64 -> BASE85

解码得 ThisIsSecret!233,用密码解开 flag.zip 获得 flag

67. [WUSTCTF2020]爬

无描述

言简意赅的题目,下载到一个没扩展名的文件,用十六进制编辑器查看文件头后发现是 PDF,加上 PDF 后缀之后打开文件,提示 flag 被盖住了,那么把图片移开就行了

image.png

下面是一堆十六进制文本,转成正常文本后得到 flag

68. zip

拼在一起解下base64就有flag

下载到 68 个 ZIP,ZIP 全部加密,并且并不是伪加密和弱密。每个 ZIP 里的 data.txt 都是 4 字节大小的,那么可以使用 CRC 爆破来得到文件里的内容

# https://shawroot.hatenablog.com/entry/2019/09/13/BUUCTF-zip%EF%BC%88CRC%E7%A2%B0%E6%92%9E%E8%84%9A%E6%9C%AC%E3%80%81RAR%E6%96%87%E4%BB%B6%E5%B0%BE%EF%BC%89

import zipfile 
import string
from binascii import crc32
stR = string.printable
finOut = ""
for i in range(0,68): 
    #直接从zip中读取CRC32
    zip_name = "out"+str(i)+".zip" 
    if zip_name.lower().endswith(('.zip')): 
        z = zipfile.ZipFile(zip_name, "r") 
    for info in z.infolist(): 
        crc = format(info.CRC & 0xFFFFFFFF, '08x')  #75f90d3a
        for c in stR:
            for j in stR:
                for k in stR:
                    for q in stR:
                        s = c+j+k+q
                        if crc32(s.encode())==int(crc,16):
                            print("out"+str(i)+': '+s)
                            finOut = finOut + s
print(finOut)

爆破后得到一串 BASE64 文本,解码后发现并不是文本,而应该是某种文件,继续用 Python 脚本解密

import base64
base64Str = "z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA=="
base64Byte = base64.b64decode(base64Str)

with open("C:\\Users\\azwhikaru\\Downloads\\Compressed\\b2ca8799-13d7-45df-a707-94373bf2800c\\out.bin", 'wb') as f :
    f.write(base64Byte)

用十六进制编辑器打开文件,发现文件尾部是 C4 3D 7B 00 40 07 00,百度一下,说是 RAR 的文件尾,那么就再给这个文件加上 RAR 的文件头 52 61 72 21 1A 07 00,最后用 WinRAR 成功打开,flag 就在 RAR 文件的注释里

image.png

69. [GUET-CTF2019]zips

无描述

下载到 222.zip,用 WinRAR 修复发现不是伪加密,用软件暴力破解得密码为 723456,解开后获得 111.zip,伪加密用 WinRAR 修复后成功打开,获得 setup.sh 和 flag.zip,setup.sh 就是对 flag.zip 进行加密的脚本了

#!/bin/bash
#
zip -e --password=`python -c "print(__import__('time').time())"` flag.zip flag

发现这里使用了 Python 计算的当前时间作为密码,那么试试获取 flag.zip 最后修改的时间吧

C:\Users\azwhikaru\Downloads\Compressed\111>python -c "print(__import__('os').path.getmtime('flag.zip'))"
1558052728.0

C:\Users\azwhikaru\Downloads\Compressed\111>python -c "print(__import__('time').time())"
1671068918.8110218

好像并不能获取到详细时间啊,那么就用 ARCHPR 掩码攻击吧

image.png

得到密码后打开 flag.zip,flag 明文就在 flag 文件中

70. 从娃娃抓起

伟人的一句话,标志着一个时代的开始。那句熟悉的话,改变了许多人的一生,为中国三十年来计算机产业发展铺垫了道路。两种不同的汉字编码分别代表了汉字信息化道路上的两座伟大里程碑。请将你得到的话转为md5提交,md5统一为32位小写。

从娃娃抓起.txt

0086 1562 2535 5174
bnhn s wwy vffg vffg rrhy fhnv

第一行是中文电码,用 工具 查询得: 人工智能。第二行一眼就是五笔,用五笔打出来后得到: 也要从娃娃抓起。再把 人工智能也要从娃娃抓起 用 工具 转换为 32 位小写 MD5 后得到 flag

71. [DDCTF2018](╯°□°)╯︵ ┻━┻

无描述

得到一个 TXT 文档,下面有一串编码,两两成对,一个字母一个数字,有点像十六进制

image.png

写个脚本全部转换成 ASCII

code = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'
hex = []
plainText = ''

for i in range(0, len(code) - 1, 2):
    hex.append(code[i : i + 2])

for j in range(len(hex)):
    asciiCode = hex[j]
    plainText += chr(int(int(asciiCode,16)) - 128)

print(plainText)

得到 flag 明文

72. [WUSTCTF2020]girlfriend

I want a girl friend !!!

下载到一个 WAV 音频文件,听起来是拨号音,用 dtmf2num 识别后得到

999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777

可能是 手机键盘编码,解码得 youaremygirlfriends

73. [MRCTF2020]千层套路

无描述

下载到一个 ZIP,大 ZIP 套小 ZIP,最外面的 ZIP 注释

Hint:密码均为四位数字 和压缩包名字有关联哦

Python真好用233

那看来每个压缩包的密码就是这个压缩包的名字了,写个脚本全部解开

import zipfile
import os

filePwd = '0573' # 第一个 ZIP 的密码
filePath = 'C:\\Users\\azwhikaru\\Downloads\\Compressed\\' + filePwd + '.zip' # 第一个 ZIP 的路径

outputPath = os.getcwd() + '\\zipfiles'
os.mkdir(outputPath)

while True:
    startFile = zipfile.ZipFile(filePath, 'r')
    fileList = startFile.namelist()

    if(len(fileList) == 1 and fileList[0].find('.zip') != -1): # 如果只有一个 ZIP 文件
        filePwd = os.path.basename(filePath).split('.')[0]
        try:
            startFile.extract(fileList[0], pwd=bytes(filePwd.encode('utf-8')), path=outputPath)
            print('Zipfile "' + filePath + '" is extracted with password ' + filePwd)
            filePath = outputPath + '\\' + os.path.basename(fileList[0]).split('.')[0] + '.zip'
            continue
        except Exception:
            print('Unzip error.')
            break
    else:
        print('All done.')
        break

真解了挺久才解开的,总共 637 个压缩包,不到一千个?差评!

image.png

最后得到一个 qr.zip,里面有个 qr.txt,里面一堆坐标,又要画图了,懒得画,上网抄了一个脚本

from PIL import Image

file = open('qr.txt')
MAX = 200

picture = Image.new("RGB", (MAX, MAX))
for y in range(MAX):
    for x in range(MAX):
        string = file.readline()
        picture.putpixel([x, y], eval(string))  # 直接使用eval()可以转为元组
picture.show()

最后得到一个二维码,扫码得到 flag 明文

74. [XMAN2018排位赛]通行证

无描述

得到一堆文本 a2FuYmJyZ2doamx7emJfX19ffXZ0bGFsbg==,看出来是 BASE64,先用 BASE64 解密,得到 kanbbrgghjl{zb____}vtlaln,用栅栏密码加密,试到 7 栏的时候出现比较规律的文本 kzna{blnl_abj_lbh_trg_vg},再进行凯撒解密,偏移 13 时出现 flag 明文

75. 百里挑一

好多漂亮的壁纸,赶快挑一张吧!

下载到一个 pcap 数据包,参考题目描述,里面应该包含图片。用 Wireshark 导出所有图片

image.png

HTTP 对象里还有三个 HTML,但是里面并没有什么特别的。主要还是关注图片吧,用 exiftool 检查一遍图片,过滤可能出现 flag 的字符

exiftool * | grep {

果然,返回了 flag,但是只有一半

image.png

那么另一半肯定还在数据包里了。跟踪 TCP 流,在流 114 发现 flag

image.png

76. [SUCTF2018]followme

无描述

下载到一个 pcap 数据包,用 Wireshark 打开,查看 HTTP 请求,发现一堆登录的请求

image.png

很明显这是在爆破后台密码。过滤一下,再搜索题目相关字符,发现 flag

image.png

77. [UTCTF2020]file header

无描述

下载到一个 PNG 文件,按照题目名字,肯定是在文件头动了手脚,用十六进制编辑器打开后发现文件头部的 4 个字节是 00 00 00 00,补上正常的 PNG 文件头 89 50 4E 47 后成功打开文件

attachment.png

78. [MRCTF2020]CyberPunk

无描述

下载到一个 cyberpunk! .exe,打开后提示

I love cyberpunk2077!
It will on 2020.9.17
Since it has been open,I will give you the flag
每隔10s刷新一次
当前时间:
月: 2
日: 7

意思就是说只有在 2020 年 9 月 17 日打开才能得到 flag 咯,那么就用 RunAsDate 软件修改时间为 2020 年 9 月 17 日

image.png

成功得到 flag

79. [安洵杯 2019]Attack

下载到的 pcap 数据包很大,有 30 多 M,第一时间猜测里面有很多文件,或者有一个大文件

image.png

发现一个 lsass.dmp 文件,百度一下发现是 Windows 的转储文件,里面含有账户的明文密码,留作备用。继续在 pcap 中搜索,发现一个可疑的压缩包

image.png

导出压缩包,打开后发现压缩包备注写着

这可是administrator的秘密,怎么能随便给人看呢?

Administrator 是 Windows 默认的管理员账户的名称,联系之前的 lsass.dmp,猜测解压密码就是 dmp 文件中的密码。用 mimikatz 解析文件

PS C:\Users\azwhikaru\Downloads\Compressed\x64> .\mimikatz.exe

  .#####.   mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > https://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
  '#####'        > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz # privilege::debug
Privilege '20' OK

mimikatz # sekurlsa::minidump C:\Users\azwhikaru\Downloads\Compressed\lsass.dmp
Switch to MINIDUMP : 'C:\Users\azwhikaru\Downloads\Compressed\lsass.dmp'

mimikatz # sekurlsa::logonpasswords full
Opening : 'C:\Users\azwhikaru\Downloads\Compressed\lsass.dmp' file for minidump...

Authentication Id : 0 ; 347784 (00000000:00054e88)
Session           : Interactive from 1
User Name         : Administrator
Domain            : WIN7
Logon Server      : WIN7
Logon Time        : 2019/11/14 9:38:33
SID               : S-1-5-21-1539156736-1959120456-2224594862-500
        msv :
         [00000003] Primary
         * Username : Administrator
         * Domain   : WIN7
         * LM       : c4d0515fb12046a475113b7737dc0019
         * NTLM     : aafdad330f5a9f4fbf562ed3d25f97de
         * SHA1     : 8b9a7ca86970d1392b6fa0b94b8694c2b919469f
        tspkg :
         * Username : Administrator
         * Domain   : WIN7
         * Password : W3lc0meToD0g3
        wdigest :
         * Username : Administrator
         * Domain   : WIN7
         * Password : W3lc0meToD0g3
        kerberos :
         * Username : Administrator
         * Domain   : WIN7
         * Password : W3lc0meToD0g3
        ssp :
        credman :

mimikatz #

发现密码 W3lc0meToD0g3,用密码解开压缩包里的 flag.txt,里面写着 This is the secret of the administrator!。拉到最下面一行,发现 flag

还有一种解法是用 foremost 直接 dump 出 pcap 里面的 ZIP

80. [SUCTF 2019]Game

下载到一个 src.zip 和一张图片,src 里面是一个网页,打开 index.html 后发现 flag

image.png

这段是 BASE32 编码,解密后得到 suctf{hAHaha_Fak3_F1ag}。Fake flag?那么再看看那张图片,检查 LSB 隐写后发现一串 BASE64

image.png

解码后得到一串字符,字符开头是 Salted,猜测是 AES 或者 DES 加密,使用之前得到的 suctf{hAHaha_Fak3_F1ag} 当作密码解密后得到正确的 flag

image.png

81. USB

Do your konw usb??

挖坑待填

82. [GUET-CTF2019]虚假的压缩包

无描述

挖坑待填

83. [BSidesSF2019]zippy

无描述

下载到一个 pcap 数据包,用 Wireshark 打开,从题干看出里面应该有 ZIP 压缩包,搜索文件头后果然发现了 ZIP,导出

image.png

打卡 ZIP 后发现有密码,并且不是伪加密,纯数字爆破无果,猜测密码还在数据包里,追踪 TCP 流后发现压缩用的命令和密码,打开压缩包即获得 flag

image.png

84. [SWPU2019]Network

无描述

下载到一个很大的 TXT 文本文档,打开发现是一些有规律但不完全有的数字

63
255
127
127
63
255
63
63
63
255
127
63
127
191

因为这里面的最大值始终是 255,第一眼以为是十六进制,但后来转了几个十六进制发现并无规律,那看来不是了。继续往下看,发现这些数字是 63、127、191、255 循环,将他们转为二进制后,二进制数的前两个数字分别是 00、01、10、11,这种隐写方式叫做 TTL 隐写,用 Python 脚本把他还原成十六进制

# https://www.cnblogs.com/yunqian2017/p/14671031.html

import binascii
f=open("attachment.txt","r")
f2=open("result.zip","wb")
num=''
res=''
for i in f:
    if int(i)==63:
        num+="00"
    if int(i)==127:
        num+="01"
    if int(i)==191:
        num+="10"
    if int(i)==255:
        num+="11"
for j in range(0,len(num),8):
    res += chr(int(num[j:j+8],2))#转换为字符
res = binascii.unhexlify(res)#unhexlify:从十六进制字符串返回二进制数据
f2.write(res)

还原后的文件头部是 PK,也就是 ZIP 压缩包,打开后发现有密码,十六进制编辑器下查看发现这个 ZIP 是有多个压缩包嵌套的,用 WinRAR 修复后成功打开,得到一串很长的 BASE64 编码,数次解码后即得 flag

85. [UTCTF2020]basic-forensics

无描述

下载到一个 JPG 文件,发现不能用找照片查看器打开,用十六进制编辑器检查后发现更像是一个文本文件,直接用 Notepad 打开,里面是唐吉可德的电子书。直接搜索 flag

image.png

86. [RCTF2019]draw

无描述

下载到一个文本文档,结合题目来看应该是要把里面的东西画出来,但是文本里并没有坐标点和 RGB 值

cs pu lt 90 fd 500 rt 90 pd fd 100 rt 90 repeat 18[fd 5 rt 10] lt 135 fd 50 lt 135 pu bk 100 pd setcolor pick [ red orange yellow green blue violet ] repeat 18[fd 5 rt 10] rt 90 fd 60 rt 90 bk 30 rt 90 fd 60 pu lt 90 fd 100 pd rt 90 fd 50 bk 50 setcolor pick [ red orange yellow green blue violet ] lt 90 fd 50 rt 90 fd 50 pu fd 50 pd fd 25 bk 50 fd 25 rt 90 fd 50 pu setcolor pick [ red orange yellow green blue violet ] fd 100 rt 90 fd 30 rt 45 pd fd 50 bk 50 rt 90 fd 50 bk 100 fd 50 rt 45 pu fd 50 lt 90 pd fd 50 bk 50 rt 90 setcolor pick [ red orange yellow green blue violet ] fd 50 pu lt 90 fd 100 pd fd 50 rt 90 fd 25 bk 25 lt 90 bk 25 rt 90 fd 25 setcolor pick [ red orange yellow green blue violet ] pu fd 25 lt 90 bk 30 pd rt 90 fd 25 pu fd 25 lt 90 pd fd 50 bk 25 rt 90 fd 25 lt 90 fd 25 bk 50 pu bk 100 lt 90 setcolor pick [ red orange yellow green blue violet ] fd 100 pd rt 90 arc 360 20 pu rt 90 fd 50 pd arc 360 15 pu fd 15 setcolor pick [ red orange yellow green blue violet ] lt 90 pd bk 50 lt 90 fd 25 pu home bk 100 lt 90 fd 100 pd arc 360 20 pu home

从没什么规律的单词里硬要看出一点规律的话,那就是这是个绘画的流程,而不是图片本身,用 Logo 解释器 画出 Logo 即得 flag

image.png

87. [ACTF新生赛2020]明文攻击

无描述

下载到一个 none.zip,里面有一张图片和一个加密的压缩包 res.zip,res.zip 里面有 flag.txt 和 secret.txt。既然题目是明文攻击,那么肯定是要用明文攻击来破解加密的压缩包了,简单来说就是一个加密压缩包里有多个无法被解压文件,但恰巧你手上有个文件和压缩包里的某个文件一样,那么就可以通过把这个文件当作明文,来把加密压缩包的密钥撞出来。

很显然,图片并不是明文,但是明文一定在图片里。把图片放进十六进制编辑器,在文件尾部又发现了一个 ZIP

image.png

导出这段后先将头部的 2 全部删掉,头部就变成了 03 04,加上 50 4B 就变成了 ZIP 的文件头,改完文件头后顺利打开压缩包,得到 flag.txt,这个 flag.txt 和 CRC32 和 res.zip 里的 flag.txt 是一样的

image.png

得到了明文部分,就可以用 ARCHPR 明文攻击了,最后导出压缩包内容,secret.txt 内部即为 flag

88. [MRCTF2020]Hello_ misc

无描述

下载到一个 try to restore it.png 和加密的 flag.rar,flag.rar 里面还有一个 fffflag.rar,先看图片。图片看起来就是带隐写的,用 Stegsolve 查看红色通道,发现一张 PNG,导出

image.png

导出的图片上书 zip-passwd: !@#$%67*()-+

image.png

可惜这个密码并不是 flag.rar 的,猜测 try to restore it.png 里还隐藏了压缩包,用 foremost 导出

image.png

又得到一个 ZIP,可以用刚才的密码打开,里面的文本一看就是 [TTL 隐写](#84. [SWPU2019]Network),用脚本解密

# https://blog.csdn.net/weixin_45485719/article/details/107642970

with open("C:\\Users\\azwhikaru\\Downloads\\Compressed\\out.txt") as f:
    lines = f.readlines()
n_num = []
for i in lines:
    if i!='\n':
        n_num.append(int(i))
rlt = ''
for i in range(0,len(lines)):
    tmp = bin(n_num[i])[2:]
    tmp = '0'*(8-len(tmp)) + tmp
    rlt += tmp[0:2]
rlt2 = ''
for i in range(0,len(rlt),8):
    rlt2 += chr(int(rlt[i:i+8],2))
with open('C:\\Users\\azwhikaru\\Downloads\\Compressed\\fi.txt','w') as f:
    f.write(rlt2.rstrip())

解密后得到

rar-passwd:0ac1fe6b77be5dbe

这个 rar-passwd 总算是 flag.rar 的了,打开 RAR 之后发现似乎是 DOCX 文件,改后缀后用 Word 打开,发现底部有一段不明意义的空号,看字体设置不是隐藏文字,那可能是颜色问题,更换颜色后发现一堆 BASE64 编码

image.png

用脚本解码 BASE64

print('\n')
s = ""
s = s + bytes.decode(base.b64decode('MTEwMTEwMTExMTExMTEwMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTEwMDAwMDAxMTExMTExMTExMDAxMTAx')) + '\n'
s = s + bytes.decode(base.b64decode('MTEwMTEwMTEwMDAxMTAxMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMTExMTExMTEwMTEwMDEx')) + '\n'
s = s + bytes.decode(base.b64decode('MTEwMDAwMTAxMTEwMTExMDExMTEwMTExMTExMTAwMDExMTExMTExMTExMDAxMDAxMTAxMTEwMDAwMDExMTExMDAwMDExMTExMTEx')) + '\n'
s = s + bytes.decode(base.b64decode('MTEwMTEwMTAwMDAxMTExMDExMTEwMTExMTExMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTExMTExMTAwMTEwMTExMTExMTExMTEx')) + '\n'
s = s + bytes.decode(base.b64decode('MTEwMTEwMTAxMTExMTExMDExMTEwMTExMTAxMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTAxMTExMTAwMTEwMTExMTExMTExMTEx')) + '\n'
s = s + bytes.decode(base.b64decode('MTEwMTEwMTAwMDAxMTAwMDAwMTEwMDAwMDAxMTAwMDExMTAwMDAwMTEwMTEwMTEwMTAxMTEwMDAwMDAxMTExMDAwMDExMTExMTEx')) + '\n'

print(s)

得到一堆莫名其妙的 0 和 1,猜测是字符画,把 1 都替换成空格后就出现了 flag: He1Lo_mi5c~

  0  0        00    0                            0   000000          00  0
  0  0  000  0 0    0                               0               0  00
  0000 0   0   0    0       000           00 00  0   00000     0000
  0  0 0000    0    0      0   0         0  0  0 0        00  0
  0  0 0       0    0    0 0   0         0  0  0 0  0     00  0
  0  0 0000  00000  000000  000   00000  0  0  0 0   000000    0000

套娃

89. [WUSTCTF2020]spaceclub

无描述

下载到一个 TXT,里面全是空格,一开始猜测是摩斯电码,结果发现摩斯电码对不上,又猜是二进制,长的是 1 短的是 0,抄个脚本

image.png

# https://www.threeyear.com.cn/archives/5088

with open("C:\\Users\\azwhikaru\\Downloads\\Compressed\\attachment.txt", 'r', encoding='UTF-8') as f:
    for i in f.readlines():
        line = len(i)
        ff = open("exp.txt", 'a')
        if line == 7:
            ff.write('0')
        elif line == 13:
            ff.write('1')
        else:
            break

再把转出来的二进制转 ASCII 文本即得 flag

90. [MRCTF2020]Unravel!!

无描述

下载到三个文件,一个加密的 win-win.zip,一个 JM.png,一个 Look_at_the_file_ending.wav

image.png

WAV 文件的文件名让我看文件尾部,提示得这么明显了那就恭敬不如从命咯

image.png

尾部有一串 key=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=,Key 的内容用 BASE64 解码后发现又是 Salted 开头的,和之前的 [80. [SUCTF 2019]Game](#80. [SUCTF 2019]Game) 一样,应该是 DES 或者 AES 加密的文本。

有了密文还没密钥,密钥应该就在 JM.png 里。用十六进制编辑器打开,发现尾部有一个 ZIP 文件,用 foremost 导出

image.png

导出后得到 ase.png,上书: Tokyo,这个应该就是密码了。试了下 DES 加密,解不出来,那就是 AES 了

image.png

再用这个密码解开 win-win.zip,得到 Ending.wav,可惜这次文件尾部并没有什么东西。猜测是隐写,用 SlientEye 查看,获得 flag

image.png

好痛

91. [ACTF新生赛2020]music

无描述

挖坑待填,https://blog.csdn.net/mochu7777777/article/details/109806994

92. 二维码

一不小心把存放flag的二维码给撕破了,各位大侠帮忙想想办法吧

待补充

93. [GKCTF 2021]签到

无描述

挖坑待填

94. [CFI-CTF 2018]webLogon capture

无描述

下载到 PACPNG 数据包,很短,直接追踪 HTTP 流,把 password URL 解码之后即得 flag

image.png

95. [MRCTF2020]pyFlag

无描述

下载到三张图片,用十六进制编辑器打开图片,发现尾部都有类似的标记:

[Secret File Part 1:]

看起来分别把三个 Part 组合起来就能获得 ZIP 文件了。组合之后获得的 ZIP 文件有密码,用 WinRAR 修复后发现并不是伪加密,再用 ARCHPR 破解后得到密码 1234,打开后里面有两个文件

flag.txt

G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(j~tG&eOdGcq+aG(t5oG(j~qG&eIeGcq+aG)6Q<G(j~rG&eOdH9<5qG&eLvG(j~sG&nRdH9<8rG%++qG%__eG&eIeGc+|cG(t5oG(j~sG&eOlH9<8rH8C_qH9<8oG&eOhGc+_bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(j~tG&wXxGcq+aH8V6sH9<8rG&eOhH9<5qG(<E-H8M3eG&wXiGcq(ZG)6Q<G(j~tG&eOtG%+<aG&wagG%__cG&eIeGcq+aG&M9uH8V6cG&eOlH9<8rG(<HrG(j~qG&eLcH9<8sG&wUwGek2)

hint.txt

我用各种baseXX编码把flag套娃加密了,你应该也有看出来。
但我只用了一些常用的base编码哦,毕竟我的智力水平你也知道...像什么base36base58听都没听过
提示:0x10,0x20,0x30,0x55

按照提示所说,flag.txt 里面的文本被多重 BASE 嵌套编码了,提示里的四个十六进制数分别是 16、32、48、85,因为是 "常用编码",那么把 BASE48 这个奇怪的东西当做 BASE64 来解吧。在线工具均解不出这堆 BASE,于是用 Python 脚本解码 (抄了一个脚本,用正则匹配编码类型,因为提示里的并不是正确顺序)

#!/usr/bin/env python

import base64
import re

def baseDec(text,type):
    if type == 1:
        return base64.b16decode(text)
    elif type == 2:
        return base64.b32decode(text)
    elif type == 3:
        return base64.b64decode(text)
    elif type == 4:
        return base64.b85decode(text)
    else:
        pass

def detect(text):
    try:
        if re.match("^[0-9A-F=]+$",text.decode()) is not None:
            return 1
    except:
        pass
    
    try:
        if re.match("^[A-Z2-7=]+$",text.decode()) is not None:
            return 2
    except:
        pass

    try:
        if re.match("^[A-Za-z0-9+/=]+$",text.decode()) is not None:
            return 3
    except:
        pass
    
    return 4

def autoDec(text):
    while True:
        if b"MRCTF{" in text:
            print("\n"+text.decode())
            break

        code = detect(text)
        text = baseDec(text,code)


flag = b"G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(j~tG&eOdGcq+aG(t5oG(j~qG&eIeGcq+aG)6Q<G(j~rG&eOdH9<5qG&eLvG(j~sG&nRdH9<8rG%++qG%__eG&eIeGc+|cG(t5oG(j~sG&eOlH9<8rH8C_qH9<8oG&eOhGc+_bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(j~tG&wXxGcq+aH8V6sH9<8rG&eOhH9<5qG(<E-H8M3eG&wXiGcq(ZG)6Q<G(j~tG&eOtG%+<aG&wagG%__cG&eIeGcq+aG&M9uH8V6cG&eOlH9<8rG(<HrG(j~qG&eLcH9<8sG&wUwGek2)"

autoDec(flag)

解码后即得 flag

原来题目里的 pyFlag 的意思是要用 Python 解码

96. [MRCTF2020]不眠之夜

无描述

万恶拼图,挖坑待填

flag{Why_4re_U_5o_ShuL1an??}

97. 派大星的烦恼

无描述

挖坑待填

98. [UTCTF2020]File Carving

无描述

下载到一张图片,拖进十六进制编辑器发现底部有一个 ZIP,提取出来

image.png

从 ZIP 里解压出一个 hidden_binary,十六进制编辑器查看,是 Linux 可执行文件,DIE 查壳发现没壳,丢进 IDA,找到 flag

image.png

posted @ 2022-12-06 22:40  20206675  阅读(2812)  评论(0编辑  收藏  举报