[青少年CTF]misc-Simpleness writeup by q1jun

0x01 题目

image-20221007220707611

附件:simpleness .zip

0x02 解题

这题包含的知识点比较多,写wp真是累死我了,看过的师傅在下面留下点评论呗🥹

0x0201 弱口令爆破

解压了simpleness.zip,发现一共有三个文件:

  • flag.zip
  • hint.zip
  • key.zip

放到kali里面使用john进行爆破:

image-20221007221156285

hint.zip的解压密码为: 123456

其他两个包跑了一好一会儿没跑出来,那就先分析hint.zip里面的文件。

0x0202 RAR伪加密

hint.zip里面解出两个文件:

  • hint.png
  • hint.rar

这个hint.rar是伪加密,随便打开一个十六进制的编辑器:

image-20221007222530330

找到第24个字节,这里的0x24表示已加密,改成0x20表示未加密,改完:

image-20221007222739455

保存之后,成功解压hint.rar,得到一个hint.txt:

image-20221007222916489

这里得到

提示1:key.zip的密码范围是qsnctf大小写,且此密码可多次使用

提示2:要用到SilentEye0.3.1这个工具(之前做的时候没有这个提示,卡了好久

0x0203 图片隐写

再看第二个文件:hint.png

image-20221007223207637

是一张平平无奇的png图片,但是丢到foremost看一下发现里面藏了个zip

Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Fri Oct  7 22:33:18 2022
Invocation: foremost -i hint.png 
Output directory: /root/q1jun/markdown/simpleness/hint/output
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: hint.png
Start: Fri Oct  7 22:33:18 2022
Length: 82 KB (84884 bytes)
 
Num	 Name (bs=512)	       Size	 File Offset	 Comment 

0:	00000162.zip 	       1 KB 	      83284 	 
1:	00000000.png 	      81 KB 	          0 	  (371 x 225)
Finish: Fri Oct  7 22:33:18 2022

2 FILES EXTRACTED
	
zip:= 1
png:= 1
------------------------------------------------------------------

Foremost finished at Fri Oct  7 22:33:18 2022
foremost -i hint.png

提取出zip文件,解压发现没有密码,得到一张二维码:

image-20221007223553067

使用工具扫码得到另一个hint:

image-20221007223650243

提示3:最后一个压缩包是中文

0x0204 python生成字典爆破

通过提示1,我们可以知道key.zip的密码是qsnctf的大小写组合,通过写python脚本生成一个字典:

┌──(root㉿localhost)-[~/q1jun/markdown/simpleness]
└─# cat wordlist.txt 
qsnctf
qsnctF
qsncTf
qsncTF
qsnCtf
qsnCtF
qsnCTf
qsnCTF
qsNctf
qsNctF
qsNcTf
qsNcTF
qsNCtf
qsNCtF
qsNCTf
qsNCTF
qSnctf
qSnctF
qSncTf
qSncTF
qSnCtf
qSnCtF
qSnCTf
qSnCTF
qSNctf
qSNctF
qSNcTf
qSNcTF
qSNCtf
qSNCtF
qSNCTf
qSNCTF
Qsnctf
QsnctF
QsncTf
QsncTF
QsnCtf
QsnCtF
QsnCTf
QsnCTF
QsNctf
QsNctF
QsNcTf
QsNcTF
QsNCtf
QsNCtF
QsNCTf
QsNCTF
QSnctf
QSnctF
QSncTf
QSncTF
QSnCtf
QSnCtF
QSnCTf
QSnCTF
QSNctf
QSNctF
QSNcTf
QSNcTF
QSNCtf
QSNCtF
QSNCTf
QSNCTF

python脚本如下:

S = 'qsnctf'
word = ''
ans = [S]
word = ''
for i in range(len(S)):
    s = S[i]
    if s.isalpha():
        new = []
        for a in ans:
            new.append(a[:i] + s.lower() + a[i + 1:])
            new.append(a[:i] + s.upper() + a[i + 1:])
        ans = new
for a in ans:
    word += ''.join(a)
    word += ''.join('\n')
with open('wordlist.txt','w') as f:
    f.write(word)
    f.close

使用zip2john生成压缩包的hash:

zip2john key.zip >> key.txt

使用john根据上面生成的字典wordlist.txt进行爆破:

john key.txt --wordlist=wordlist.txt

立马得到压缩包key.zip的密码:QsNcTf

解压得到一个bmp文件:

image-20221007224516894

0x0205 LSB+AES隐写

看到bmp格式的图片,第一个想到这是LSB隐写,但是当我分析完了R- G- B低位隐写的所有数据之后并没有发现什么有用的东西。

想到前面的提示2:是用SilentEye0.3.1这个工具进行隐写的,用这个工具进行decode:

image-20221007225202925

还是不行。

想到前面的提示1说到QsNcTf这个密码可以多次使用,勾选Encrypted data使用AES128进行解密:

image-20221007225430633

发现图片里面隐藏了一个1.txt文件,提取出来:

image-20221007225608706

0x0206 零宽隐写

发现直接看并没有什么有用的信息,用Sublime text打开之后发现:

image-20221007225640079

发现是个零宽隐写。

image-20221007225750759

这里有个坑,这个网站并不能正确的现实里面隐藏的内容,

换了个网站:Zero Width Lib (yuanfux.github.io)

发现了里面隐藏的内容:

image-20221007225912594

这里得到了flag.zip的密码,但是试了半天Hello World,发现并不能解开压缩包

最后发现密码是这一整句话。。

The password is Hello World

0x0207 SNOW-无字天书

解压flag.zip之后,以为马上拿到了flag准备提交,结果发现又给了两个文件(我快崩溃了

  • flag.zip
  • key.txt

image-20221007230526111

打开key.txt后,发现什么也没有

image-20221007230602577

想到可能是SNOW的无字天书隐写,因为里面有很多空白制表符,但是没有任何内容。

通过SNOW.exe工具解出一串数字:

image-20221007230722671

0x0208 中文电码解码

得到一串数字:

66382508137843160834

想到提示3: 最后一个压缩包的密码是中文 ,想到这可能是中文电码(因为要让它变成汉字

打开中文电码查询网站:中文电码查询 Chinese Commercial Code

image-20221007231029902

得到最后一个压缩包的密码:

这是密码吗

解开最后一个flag.zip之后发现…又是一张图片flag.jpg

0x0209 JPG文件修复

发现flag.jpg并不能打开,丢到十六进制编辑器里面:

image-20221007231343379

在文件末尾,看到这些乱码是文件被逆序,而且奇偶互换了

通过python写一个脚本进行修复,脚本如下:

s = open("flag.jpg","rb").read()
a = open("flag1.jpg","wb")
for i in range(0 ,len(s), 4):#4位奇偶互换
    s1 = s[i:i+4][::-1]
    a.write(s1)
s = open("flag1.jpg","rb").read()[::-1] #逆序
a = open("flag2.jpg","wb")
a.write(s)

得到flag2.jpg可以正常打开:

image-20221007231949289

0x0210 图片宽高隐写

得到flag2.jpg之后还不能得到flag,分析flag2.jpg也并没有发现里面藏了其他文件。

想到可能是修改了高度,丢进010Editer:

image-20221007232646601

找到高度 WORD Y_image,把它改高一点,我这里改成600

image-20221007232735105

保存后再打开图片,得到flag:

image-20221007232803001

制作writeup不易,师傅们留下点评论或点赞吧🥺

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值