CTF show misc之旅 (wp详解一部分)

前言

首先感谢ctf show平台提供题目

其次感谢各位读者,对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我

废话不多话开启你们的CTF之旅吧

希望你们在旅途中玩的开心,学的开心✌( •̀ ω •́ )y

目录

1.杂项签到

2.misc2

3.Miscx

4.misc50

5.misc30

6.stega1

7. misc3

8. misc40

9.misc30

10. 红包题第一弹

11.stega10

12.stega11

13.misc4

14. misc31

15.misc49

16.misc6

17.misc7

18.misc8

19.红包题第五弹

20.stega2

21.stega3

加油各位( •̀ ω •́ )y 期待与君再相逢



1.杂项签到

就让这个签到题来开启我们的CTF misc之旅吧

下载附件发现是个压缩包  但解压需要密码

但没有找到任何提示

所以有理由怀疑是伪密码

拖到010里发现确实是伪密码

经过修改

 解压得到flag

 flag{79ddfa61bda03defa7bfd8d702a656e4}  ( •̀ ω •́ )y


2.misc2

 下载附件得到应该无后缀的file文件

 根据提示

 知道是个软盘

所以直接新建虚拟机并载入软盘镜像

 

 

 运行直接得到flag

 flag{ctfshow}   ( •̀ ω •́ )y


3.Miscx

 

 下载附件里面 未加密的misc1.zip  加密的flag.txt  加密的hint.txt

还有 

附加文本:

2020快乐!
rat?or?

 后俩都需要密码所以先研究misc1.zip   

查看misc1压缩包 内含加密的music.doc文件跟一个png后缀的图片

 

 将图片拖进010里发现

 判断为误导信息

结合前面提示 猜想doc文件解压密码为2020

解压music.doc出来是音符编码

 提供在线网站https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyuehttps://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue

盲猜Base64 继续转码 结果不是

想起前面的附加文本提示 猜想是rabbit加密

 

 密钥是2020

得到welcome_to_payhelp

想到有俩加密的txt文档

以此为密码只解压出了hint.txt

 看见这种代码先base64 发现有效果 最后多次base64转码得到

 这一看就是url编码

成功得到密码

 hello 2020!

给flag.txt解压得到flag

 flag{g00d_f0r_y0u}  ( •̀ ω •́ )y


4.misc50

 下载附件里面只有一张图片

 废话不多说010拖一波 发现中间有一串代码

 Sk5DVlM2Mk1NRjVIU1gyTk1GWEgyQ1E9Cg==

Base64再来一波

 JNCVS62MMF5HSX2NMFXH2CQ=

然后base32

得到

KEY{Lazy_Man}

很明显了  肯定是哪个压缩包的解压密码或者那种隐写的密钥

所以图片foremost一下  得到一个压缩包 应证之前的猜想

 打开压缩包发现有提示

GEZDGNBVGYFA====

Base32来一下得到123456

是压缩包的密码

解压得到thienc.txt 里面是一大堆数字

仔细观察这一堆数字,发现3078重复出现 后面跟两个十六进制的字符

你如果用心去找发现3078 就是0x

所以思路就来了 删除0x 转化成压缩包格式

在这里就必须用到脚本了(python不好的朋友可要好好学习哦)

import re

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

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

strings =''
for i in result:
    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('test.txt', 'w') as f:
    f.write(strings)

得到一个压缩包

但需要密码,便想到之前解出的KEY{Lazy_Man}

解压出来是一个txt文本

在文本结尾发现==

废话不多说直接上base64

因为文本太长了所以只能用脚本

Base64脚本

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

url = read_file('1.txt')
url = re.findall("b'(.*?)'",url)[0]
url = base64.b64decode(url)

with open('2.txt', 'w') as f:
    f.write(str(url))

Base32脚本

import base64
import re

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

url = read_file('2.txt')
url = re.findall("b'(.*?)'",url)[0]
url = base64.b32decode(url)

with open('3.txt', 'w') as f:
    f.write(str(url))

经过多次转换这串字符总共经历了16次的base64与base32混合加密

得到这种编码

 但因为有\n所以不是很规范

从网上找个脚本

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

result = read_file('test15.txt')

result = result.replace(r'\n',' ')

with open('test16.txt', 'w') as f:
    f.write(result)

 

 提供一个在线网站

Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]https://www.splitbrain.org/services/ook

 继续

 得到flag

 flag{Welc0me_tO_cTf_3how!}    ( •̀ ω •́ )y


5.misc30

下载附件是一个无后缀的rar文件

根据提示自然要加上rar的后缀

解压之后里面是  没有加密一个星空.jpg  加密的flag.png  加密的眼见不一定为实.doc

所以先从星空.jpg下手

 二话不说010走一波

little stars 盲猜是解压密码

直解开了眼见不一定为实.doc

 你会发现底下是有东西的

所以先尝试改变颜色成功

Hello friend!  怀疑是另一个的解压密码

成功解压出一张二维码

扫码得到flag

flag{welcome_to_ctfshow}   ( •̀ ω •́ )y


6.stega1

 下载附件解压得到jpg图片一张

在尝试多种隐写分离无果时

想到了jphs隐写

工具下载https://download.csdn.net/download/m0_68012373/85682293

在软件里打开

没有密钥直接点OK

 直接得到含有flag的文本

 flag{3c87fb959e5910b40a04e0491bf230fb}   ( •̀ ω •́ )y


7. misc3

 

密文:zse4rfvsdf 6yjmko0

最开始没看提示各种解密试半天

看吧提示才想到有可能是键盘布局

再根据提示得到flag  

flag{av}   ( •̀ ω •́ )y



8. misc40

下载附件解压  得到一个txt文件 一个mp3文件 一个png二维码 还有一个加密的wav文件

打开txt

盲猜进制转换

提供在线网站https://www.osgeo.cn/app/s1653

二进制 到 四进制 到 八进制 到 十进制

110001010100011101 到 301110131

到 612435 到 202013

202013盲猜是密码或密钥

不着急先看看别

扫码得到 flag不在这里

可能没有这么简单 所以010拖一波

果然在尾部发现了一串编码

在线网站https://www.splitbrain.org/services/ook%C2%A0

 

得到 和谐民主和谐文明和谐和谐和谐自由和谐平等和谐公正

社会主义核心价值观编码http://xn--http-uea//www.hiencode.com/cvencode.html

 

得到123456

还有一个音频 经过尝试MP3Stego隐写 秘密是刚刚的123456

工具下载地址

MP3Stego音频隐写工具-编解码文档类资源-CSDN下载MP3Stego算法主要集中于编码参数域的隐写MP3压缩原理和MP3Stego算法概述MP更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/m0_68012373/85681907

 得到一个文本

提示说密码是abc123 先解压

还有提示说hint是静默之眼不知道是什么 后来百度才知道是silent eye

工具下载https://download.csdn.net/download/m0_68012373/85681939

 silent eye

 

 Key是之前解出来的202013

flag{C0ngr4tul4ti0n!}   ( •̀ ω •́ )y


9.misc30

 

下载附件 发现压缩包需要密码  

因为没有提示所以第一想到的是伪加密

先用win修复一下

成功得到里面的音频

 又是各种隐写发现没用 就想到可能是藏东西所以Kali   foremost一下

分理出一张图片

看见图片就试试常规操作改高度

得到

这一看典型的猪圈密码

这是对照表

最后得到

flag{well done}     ( •̀ ω •́ )y


10. 红包题第一弹

 

 下载附件解压得到86个压缩包 每个压缩包里面还有图片

这是不能慌

我们先打开一个图片放进010里分析分析

看头这可能是一个GIF的文件给分割成一块一块的

 再看尾

明显的base64代码

再去看看其他图片和这一样除了代码不一样

所以思路来了 把所以代码整合到一起然后破译

当然肯定要用脚本

import zipfile

for i in range(1, 87):
    # 读取压缩包
    z = zipfile.ZipFile('D:\py\flag.zip/' + str(i) + '.zip', 'r')

    # 读取压缩包内的图片内容
    filename = z.namelist()[0]
    content = str(z.read(filename))

    # 把base64编码部分打印出来
    len1 = len(content)
    content1 = content[len1 - 101:len1 - 1]
    print(content1)

得到base64代码

直接用base64转图片

在线网站https://tool.jisuapi.com/base642pic.html

得到二维码

扫码得到flag

flag{gif_is_so_easy} ( •̀ ω •́ )y


11.stega10

 下载附件 解压得到一张图片

老规矩010里走一波

发现了一串编码

 

 盲猜base64

得到一个https://www.lanzous.com/i9b0ksd

根据经验把s改成i

得到下载页面

 

 都需要密码所以只能从文本下手

 所以上脚本 上网找的

import zipfile
import string
import binascii

crc = []
zip = zipfile.ZipFile('C:/ctfshow/misc/flag.zip', 'r')
for i in zip.namelist():
    crc += [zip.getinfo(i).CRC]
crc = crc[1:10]

for i in range(9):
    for j in string.printable:
        c = binascii.crc32(j.encode('utf-8'))
        if c == crc[i]:
            print(j, end='')

运行得到

447^*5#)7  怀疑是压缩包密码

解开了n.zip的压缩包

却得到了你无法打开的图片

那就010走一下

仔细观察头和尾发现代码反了

 

 所以找脚本

f = open('C:/Users/lujin/Desktop/n.png', 'rb').read()
res = open('C:/Users/lujin/Desktop/1n.png', 'wb')
res.write(f[::-1])

运行得到二维码一张

扫码得到flag

flag{我好难啊}    ( •̀ ω •́ )y

12.stega11

 下载附件得到图片

 老规矩010走

发现一串编码

直接base32

没想到直接出来了

 flag{6f1797d4080b29b64da5897780463e30}   ( •̀ ω •́ )y

13.misc4

下载附件是一个无后缀的rar文件 

 不要想后缀rar加上

解压得到一个文档

 

虽然是乱码,但发现PK开头,zip格式压缩包 ,修改后缀后解压得到一推东西

只能一个一个找替你们排坑了

最后在办公文档\Documents\1\Pages\1.txt得到线索

最后得到flag{xps?Oh,Go0d!}   ( •̀ ω •́ )y 


14. misc31

下载附件得到

file , hint.txt ,听歌识曲 是没有加密的 剩下的需要加密所以从这几个入手

解密file

拖010

看尾巴像base64

因为文本太多了 想到了base64转图片

在线网站https://tool.jisuapi.com/base642pic.html

 

得到dlddddhm

解密pdf

得到小花

花朵符号解密

得到qwertyuiop

发现目前没什么用

所以肯定没那么简单

猜测pdf可能还有隐写

经过多次尝试

工具下载https://download.csdn.net/download/m0_68012373/85681966

wbStego4.3open 进行pdf 解密,没有秘钥

得到

只剩下xiaomotuo.wav

这两个信息提示的是关键字

所以就想到了关键字密码

在线网站http://www.hiencode.com/keyword.html

 

得到CVEFVWETBVDVESFB13287484

是xiaomotuo.wav的密码

各种音频隐写没用

来一波steghide分离

得到flag

flag{du_du_du_du}   ( •̀ ω •́ )y 


15.misc49

 下载附件发现里面只有一个txt的文本打开

打开发现文件的头是PK  尝试更改后缀zip 并解压

发现只有hint.txt可以解压  1.png 2.png需要密码

打开hint.txt

有大写字母有=号尝试base32 64都没有用

所以尝试文本加密为字母

提供一个在线网站https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=zimu

 

发现是音符编码
在线网站https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue

文本加密为音乐符号

发现是个套中套

花朵编码 在线网站https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=huaduo

找到压缩包密码key{welcome_to_ctf}

解压出两张图片

想到前面有提示

所以尝试盲水印 利用盲水印工具或者脚本

得到flag  flag{y0u_are_we1l}  ( •̀ ω •́ )y


16.misc6

 下载附件得到文本

 

发现=字母所以首先尝试base32 64,但发现无果

碰码不慌千千秀字

 最后得到flag  flag{ctfshow_nice!}  ( •̀ ω •́ )y


17.misc7

 下载附件得到一个无后缀的文件

 查看属性无果 拖进010里查格式发现文件头是D0 CF 11 E0 A1 B1 1A E1

 查询了一下这是旧版offic的文件的格式

 所以尝试添加后缀,发现pdf可以打开

但文档被加密了所以尝试使用Advanced Office Password Recovery爆破

 

使用密码打开后直接搜索字符得到flag

 

 改变字体颜色

 得到Flag{okYOUWIN}  ( •̀ ω •́ )y


18.misc8

下载附件得到flagnothere.jpg跟org.zip  且压缩包加密 压缩包中也含有flagnothere.jpg

根据之前经验盲猜明文破解

工具下载https://download.csdn.net/download/m0_68012373/85681995

成功了

得到二维码

扫码得到flag

flag{ctf_show_ok}   ( •̀ ω •́ )y


19.红包题第五弹

 下载附件发现里面是一个音频

根据提示利用各种音频工具去破解 才发现自己被骗了

所以废话不多说压缩包直接进行分析

 在查找之后发现有压缩包里可能有图片 所以直接kali分离

先不试别的在进行一次foremost分离发现没有用

所以换一种分离方式steghide

 分离出一个txt文本

 有大小写有= 先来一波base64

 发现网址但打不开

根据经验吧s改成i  

https://www.lanzoui.com/i9dpjxe

 下载附件 发现里面是一个十六进制的文本

首先想到的是直接转进制或者转文本但都以失败告终

后来仔细观察里面的字母并没有大于f的 按正常思路,每俩个字符,转文本

经过多次尝试 十六进制转换得到坐标

提供一个在线网站https://gchq.github.io/CyberChef/#recipe=From_Hex('None')To_Binary('Space',8/breakpoint)

 

看这个结构,我们应该可以确定,是坐标与颜色值,

发现是(255, 255, 255)和(0, 0, 0),这不是R.G.B嘛,(255, 255, 255)代表白色,(0, 0, 0)代表黑色

所以必须用脚本把这个文本画出来

使用脚本格式化,整理成坐标,让文本规范起来

import re

# 正则规则 [1-9][0-9]{1,2}匹配三位数和两位数 \s匹配空格
f1 = open('2.txt', 'w+')
reg = re.compile(r'[0-9]*,\s[0-9]*,\s[0-9]*')

with open('1.txt') as f:
    data = f.read()
    f.close()
    result = reg.findall(data)
    for i in result:
        print(i)
        f1.write(i + '\n')

再使用gbk脚本解出来 用脚本把这个文本画出来

rom PIL import Image

x = 72  # x坐标  通过对txt里的行数进行整数分解
y = 74  # y坐标  x * y = 行数

im = Image.new("RGB", (x, y))  # 创建图片
file = open('2.txt')  # 打开rbg值的文件

# 通过每个rgb点生成图片

for i in range(0, x):
    for j in range(0, y):
        line = file.readline()  # 获取一行的rgb值
        rgb = line.split(", ")  # 分离rgb,文本中逗号后面有空格
        if (rgb[0]):
            im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2])))  # 将rgb转化为像素

im.save('flag.jpg')  # 也可用im.save('flag.jpg')保存下来

得到jpg图片

一看就知道需要重新拼接图片

这时候就需要用到PS了

 用剪切得到完整的二维码

最后扫码得到flag

flag{ctf_show_fight}  ( •̀ ω •́ )y


20.stega2

下载附件得到一张png格式的图片

最开始是我想复杂还用了分离

后来发现直接改高度就行

 最后拿到flag  flag{na yi nian wo ye bian cheng le guang}   ( •̀ ω •́ )y


21.stega3

 下载附件解压发现里面只有一张图片

所以便尝试了各种隐写 结果以失败告终

于是便想到了NTFS数据流隐写

便利用Ntfs Streams Editor2工具

工具下载https://download.csdn.net/download/m0_68012373/85682238

 找到了txt文件拿到了flag

 flag{ntfs_is_so_cool}  ( •̀ ω •́ )y

加油各位( •̀ ω •́ )y 期待与君再相逢

猜你喜欢

转载自blog.csdn.net/m0_68012373/article/details/125343319