文章目录
- 被劫持的神秘礼物
- 刷新过的图片
- [BJDCTF2020]认真你就输了
- [BJDCTF2020]藏藏藏
- 被偷走的文件
- snake
- [GXYCTF2019]佛系青年
- [BJDCTF2020]你猜我是个啥
- 秘密文件
- 菜刀666
- [BJDCTF2020]just_a_rar
- [BJDCTF2020]鸡你太美
- [BJDCTF2020]一叶障目
- [SWPU2019]神奇的二维码
- 梅花香之苦寒来
- [BJDCTF2020]纳尼
- 穿越时空的思念
- [ACTF新生赛2020]outguess
- [HBNIS2018]excel破解
- [HBNIS2018]来题中等的吧
- 谁赢了比赛?
- [SWPU2019]我有一只马里奥
- [WUSTCTF2020]find_me
- [GXYCTF2019]gakki
- [ACTF新生赛2020]base64隐写
- [GUET-CTF2019]KO
- [MRCTF2020]ezmisc
- [SWPU2019]伟大的侦探
- 黑客帝国
- 关于二进制转换
- [MRCTF2020]你能看懂音符吗
- [HBNIS2018]caesar
- [HBNIS2018]低个头
- [HBNIS2018]caesar
- [HBNIS2018]低个头
被劫持的神秘礼物
hint:某天小明收到了一件很特别的礼物,有奇怪的后缀,奇怪的名字和格式。小明找到了知心姐姐度娘,度娘好像知道这是啥,但是度娘也不知道里面是啥。。。你帮帮小明?找到帐号密码,串在一起,用32位小写MD5哈希一下得到的就是答案。
下载文件得到 pcapng
文件,使用 wireshark
分析。 我们查看http协议,追踪http数据流,发现账号密码:

根据提示,将账号,密码串在一起,然后md5加密得到flag

刷新过的图片
hint:浏览图片的时候刷新键有没有用呢
下载后得到一张jpg图片,然后进行binwalk等操作,发现都没有用
这个时候,观察题目,刷新键是F5,我们经过查询,发现有一个 F5隐写
全称:F5-steganography
然后有一款 F5隐写工具:F5-steganography
这款工具是基于java的
我们下载之后在命令行使用:
java Extract /xxx/yyy //图片路径
payload:
java Extract C://Users//LIKE//Desktop//Misc.jpg
然后工具会将分割的文件放在 F5目录下的 output.txt中:

打开发现是zip文件,改后缀为zip即可,打开发现zip伪加密,修改即可打开压缩包:

[BJDCTF2020]认真你就输了
下载得到一个 xls 表格文件,拖进 010Editor 发现是zip格式:

于是我们把 xls
后缀 改为zip 。发现里面很多文件:
我们在 010Editor
搜 flag
关键字

发现了 flag 的路径,找到打开得到 flag
[BJDCTF2020]藏藏藏
将图片拖进kali,使用 foremost
进行分离,得到zip文件,里面有一个 docx文档,打开有一个二维码,扫码得到flag

被偷走的文件
hint:一黑客入侵了某公司盗取了重要的机密文件,还好管理员记录了文件被盗走时的流量,请分析该流量,分析出该黑客盗走了什么文件。
下载得到 pcapng
流量包文件,使用 wireshark
分析 ,由于hint说,盗走的是文件,于是我们锁定 ftp 协议
(文件传输协议)
发现流量包存在 flag.rar
文件,于是我们使用 binwalk
分离数据包:

分离得到一个rar文件,但是打开需要密码,由于没有任何线索,所以我们使用 ARCHPR
进行爆破
得到四位数密码,打开即flag
snake
下载后发现一张图片,使用foremost
分离图片,得到两个文件:

key中内容为base64编码,解密后:
What is Nicki Minaj’s favorite song that refers to snakes?
查了一下,发现歌名:anaconda
,猜测歌名可能是某个密码。
但是 cipher 文件不知道什么东西。经过查阅得知,蛇snake还有另一个单词:serpent
serpent 是一种编码
我们使用网站解密:serpent解密

key就是之前base64解密之后找到的:anacoda
解密即可得到flag
[GXYCTF2019]佛系青年
下载后得到 zip压缩包,解压需要密码,我们使用 Ziperello
扫一下,发现并无加密,为zip伪加密
于是我们使用 010Editor 打开对应zip,修改对应部分为 00:

打开txt文件,发现是一串佛语:
于是我们想到了与佛论禅
加密,使用网站解密即可

[BJDCTF2020]你猜我是个啥
将文件使用 010Editor 打开,最底下就是flag

秘密文件
hint:深夜里,Hack偷偷的潜入了某公司的内网,趁着深夜偷走了公司的秘密文件,公司的网络管理员通过通过监控工具成功的截取Hack入侵时数据流量,但是却无法分析出Hack到底偷走了什么机密文件,你能帮帮管理员分析出Hack到底偷走了什么机密文件吗?
直接使用 wireshark
分析 pcapng
流量包,由于提示:偷走的为文件,所以我们查找ftp协议
发现数据包中存在rar压缩包,于是使用 foremost
提取rar压缩包

得到rar压缩包后,使用 爆破工具 ARCHPR 爆破得到密码,打开得到flag
菜刀666
hint:流量分析,你能找到flag吗
使用 wireshark
打开, 题目说菜刀,我们过滤POST流量包:
http.request.method==POST

打开数据包,发现有一个 zip压缩包,我们使用 foremost
分离

得到zip压缩包,但是需要密码:

我们在tcp.stream eq 7
中发现大量数据,参数 z1 的值是base64编码,我们先url解码一下再base64解码:
得到16进制数据,但是我们不能直接保存为 jpg 图片,我们使用脚本:
import binascii
hex_data= '这里填16进制数据'
out=open('result.jpg','wb')
out.write(binascii.unhexlify(hex_data))
out.close()
# 16进制转图片
得到图片:

使用密码打开zip压缩包得到flag
[BJDCTF2020]just_a_rar
爆破压缩包,解压得到图片,flag在图片exif中:

[BJDCTF2020]鸡你太美
下载得到两张gif图片,篮球副本图片显示不出来,我们使用 010Editor 打开两张GIF图片,
发现 副本图片缺少了 GIF 头:47 49 46 38

我们加上并保存:

得到 flag
[BJDCTF2020]一叶障目

使用 010Editor 打开图片,发现图片 crc校验
不匹配
我们使用大佬写的crc校验脚本,修改宽高:
import zlib
import struct
with open(r'C:\\Users\\LIKE\Desktop\\1.png', 'rb') as image_data:
bin_data = image_data.read()
data = bytearray(bin_data[12:29]) # 这段数据就是png图中IHDR段的16进制数据,不包括开始的length和最后CRC
crc32key = eval(str(bin_data[29:33]).replace(r'\x', '').replace("b'", '0x').replace("'", ''))
# 理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
n = 4096
# 高和宽一起爆破
for w in range(n):
# q为8字节,i为4字节,h为2字节
width = bytearray(struct.pack('>i', w))
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x + 4] = width[x]
data[x + 8] = height[x]
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print("width:%s height:%s" % (bytearray(width).hex(), bytearray(height).hex()))
exit()


修改一下得到flag
[SWPU2019]神奇的二维码
将二维码使用 binwalk 分离,获得很多压缩包和文件,

打开flag.doc
发现很多base64编码,由于被编码多次,我们使用脚本跑一下解码:
import base64
def decode(f):
n = 0
while True:
try:
f = base64.b64decode(f)
n += 1
except:
print('[+]Base64共decode了{0}次,最终解码结果如下:'.format(n))
print(str(f, 'utf-8'))
break
if __name__ == '__main__':
f = open('C://Users//LIKE//Desktop//flag.txt', 'r').read()
decode(f)
得到: comEON_YOuAreSOSoS0great
我们用得到的密码可以打开音频压缩包:
使用 Audacity
去分析,发现是莫斯电码

解密莫斯电码得到 flag(转小写)
梅花香之苦寒来
下载后得到一张jpg图片,末尾有一串16进制数据:

将 16进制转文本 ,得:

根据图片的 exif
信息,提示要画图:

因此,这可能是一串坐标。我们可以使用:gnuplot
绘图工具进行绘图
我们先把坐标转换为 gnuplot
可以识别的形式

然后我们使用 gnuplot
画图:
plot "C://Users//LIKE//Desktop//1.txt"

得到二维码,扫码得flag
[BJDCTF2020]纳尼
查看gif文件,发现缺少gif文件头

我们添加文件头:
47 49 46 38

得到一张gif,里面有base64编码,我们使用 StegSolve
的 Data Extract
模式

获得每一帧编码:

拼起来,然后base64解码得flag
穿越时空的思念
hint:嫦娥当年奔月后,非常后悔,因为月宫太冷清,她想:早知道让后羿自己上来了,带了只兔子真是不理智。于是她就写了一首曲子,诉说的是怀念后羿在的日子。无数年后,小明听到了这首曲子,毅然决定冒充后羿。然而小明从曲子中听不出啥来,咋办。。(该题目为小写的32位字符,提交即可)
使用 Audacity
分析,莫斯电码
[ACTF新生赛2020]outguess
下载后得到一堆东西:

我们发现 mmm.jpg 的 exif 属性中有社会主义核心价值观,猜测是 社会主义核心价值观加密

解密得到: abc
然后就无思路了,然后题目 : outguess
查询得知,有一种 outguess隐写:
kali下安装 outguess 隐写工具
使用outguess
输入outguess -help即可获得相关命令。
加密:
outguess -k “my secret key” -d hidden.txt demo.jpg out.jpg
加密之后,demo.jpg会覆盖out.jpg,hidden.txt的内容是要隐藏的东西。
解密:
outguess -k “my secret key” -r out.jpg hidden.txt
解密之后,紧密内容放在hidden.txt中
key就是前面解码得到的 abc
[HBNIS2018]excel破解
下载得到一个excel,打开需要密码,我们用 010Editor 打开,直接搜索flag:

[HBNIS2018]来题中等的吧
打开下载的图片:

使用莫斯电码解密即可
谁赢了比赛?
hint:小光非常喜欢下围棋。一天,他找到了一张棋谱,但是看不出到底是谁赢了。你能帮他看看到底是谁赢了么?
下载得到一张围棋图片:

直接使用 binwalk
分离

得到一个需要密码的 rar压缩包,我们使用 ARCHPR
爆破 ,得到密码,打开发现一张gif图片:

我们使用 stegsolve(或者使用 GIFFrame ) 逐帧分析:

发现第309帧不一样,我们保存这一张图片,然后使用 stegsolve 打开:

切换通道发现出现一张二维码,扫码得到flag
[SWPU2019]我有一只马里奥
下载得到一个 exe 文件,执行发现生成了1个txt文件:


txt提示 ntfs,查阅资料知:ntfs流隐写

查看方式:
notepad 1.txt:flag.txt
notepad 查看的文件:隐写的文件
[WUSTCTF2020]find_me
查看图片 exif 属性:

发现是盲文,盲文解密 ,得到flag

[GXYCTF2019]gakki
下载后打开jpg图片,发现末尾藏有rar压缩包:

使用 binwalk 分离,将分离后存在密码的rar文件爆破得到密码:

打开txt文件:
发现了毫无规律的字符组成
通过查询,我们知道可能是根据字符出现频率得到flag
# 统计txt文件中给符号的频率。按降序排列
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
strings = open('flag.txt').read();
result = {}
for i in alphabet:
counts = strings.count(i)
# i = '{0}'.format(i)
result[i] = counts
res = sorted(result.items(),key=lambda x:x[1],reverse=True)
for data in res:
print(data)
for i in res: #将结果一行输出
flag = str(i[0])
print(flag,end="")
使用大神脚本,可以得到:频率降序排列字符
前面几个几位flag
[ACTF新生赛2020]base64隐写
观察题目,并查阅资料,我们了解到 base64隐写
这么个东西
我们打开txt文件,发现很多base64编码:

要是我们直接去解码的话,结果是不对的,只有一小串base64被解出来。
我们参考网上大佬写的脚本:
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s2)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('base64.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)
print diff
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
print goflag(bin_str)
def goflag(bin_str):
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
return res_str
if __name__ == '__main__':
solve_stego()
运行时,我们在python2环境下,我们使用dos来运行:
D:\Applications\CTF\phpstudy_pro\WWW\scripts_py>python base64_diff_value.py

结果跑出来了
[GUET-CTF2019]KO

打开txt,发现很多 ook ,于是想起了 ook编码,ook解密

使用网站解密即可。
[MRCTF2020]ezmisc
将图片使用 010Editor 打开,发现crc校验失败:

import struct
import binascii
import os
m = open("C:\\Users\\LIKE\\Desktop\\flag.png", "rb").read()
k = 0
for i in range(5000):
if k == 1:
break
for j in range(5000):
c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + m[24:29]
crc = binascii.crc32(c) & 0xffffffff
if crc == 0x370c8f0b:
k = 1
print(hex(i), hex(j))
break
使用脚本跑一下,算出宽高:


修改一下得到flag
[SWPU2019]伟大的侦探
将txt文件使用 010Editor 打开,然后更换编码为: EBCDIC

发现可以正常显示了:

然后使用此密码去解压压缩包,发现文件夹里面有很多跳舞的小人:
我们经过查阅,发现有一个福尔莫斯跳舞的小人密码
对照一下,得到flag
黑客帝国
hint:Jack很喜欢看黑客帝国电影,一天他正在上网时突然发现屏幕不受控制,出现了很多数据再滚屏,结束后留下了一份神秘的数据文件,难道这是另一个世界给Jack留下的信息?聪明的你能帮Jack破解这份数据的意义吗?
打开txt文件,发现很多16进制:
发现前面的数字好像是rar文件头
由于这都是16进制的,我们想要得到rar压缩包必须使用二进制,所以我们可以写一个脚本实现转换为2进制
关于二进制转换
binascii.b2a_hex(data)和binascii.hexlify(data):返回二进制数据的十六进制表示。每个字节被转换成相应的2位十六进制表示形式。因此,得到的字符串是是原数据长度的两倍。
binascii.a2b_hex(hexstr) 和binascii.unhexlify(hexstr):从十六进制字符串hexstr返回二进制数据。是b2a_hex的逆向操作。 hexstr必须包含偶数个十六进制数字(可以是大写或小写),否则报TypeError。
import binascii
# 16进制转图片
hex_data = open("C://Users//LIKE//Desktop//flag.txt").read()
out=open('result.rar','wb')
out.write(binascii.unhexlify(hex_data))
out.close()
运行后得到rar压缩包,发现需要密码,我们爆破即可得到密码。解压一下得到一张打不开的png图片
使用 010Editor 打开:

发现图片末尾是 FF D9
说明图片可能是 jpg图片,我们改一下文件头为 FF D8

就可以正常打开了
[MRCTF2020]你能看懂音符吗
使用 010Editor 打开压缩包,发现

rar文件头反了,改一下:52 61 72 21
解压rar,发现一个文档,打开:
发现里面很多音符,但是好像复制不了。。
于是我们使用 010Editor 打开:

发现是zip压缩包。然后后缀改成 zip,解压一下,有很多文件。
我们在 这个文件中发现了音符:

我们查询资料得知,有一种音符编码
直接解密 一下就行
[HBNIS2018]caesar

打开文件,题目是 : caesar
就是凯撒的意思,于是我们知道,这是凯撒密码,直接解密就行:
我使用 CTFCrack
解密:

[HBNIS2018]低个头

题目说低个头
,并且有一些字母,我知道这个是键盘加密,但是由于之前只遇到过:键盘包围得出字母的题目,一时间不知道这是什么东西。
然后查资料知道了,这个是很多字母去组成字母的情况,然后就可以知道flag了:
11055959" style=“zoom: 25%;” />
我们查询资料得知,有一种音符编码
直接解密 一下就行
[外链图片转存中…(img-f6IuXNdg-1672285122376)]
[HBNIS2018]caesar

打开文件,题目是 : caesar
就是凯撒的意思,于是我们知道,这是凯撒密码,直接解密就行:
我使用 CTFCrack
解密:

[HBNIS2018]低个头

题目说低个头
,并且有一些字母,我知道这个是键盘加密,但是由于之前只遇到过:键盘包围得出字母的题目,一时间不知道这是什么东西。
然后查资料知道了,这个是很多字母去组成字母的情况,然后就可以知道flag了:
[外链图片转存中…(img-JUUhdzsQ-1672285122376)]
[外链图片转存中…(img-30M97o4T-1672285122377)]