用010editor打开图片,然后看到jpg图片,把后缀修改成zip
有个压缩包是加密过的,还有张图片,我们看看图片
看到了flag.txt,再次把图片后缀修改成zip
发现可以解压,得到一个 flag.txt 文件,咦,,,,,刚才解压chayidian.zip文件时,目录下也有一个flag.txt 文件,很明显这是一个明文攻击,又已知
是.zip加密,上工具 Advanced Zip Password Recover。
在这里我跑出密码 z$^58a4w
Fial.zip里面的文件
打开whoami.zip文件,发现有个加密文本,需要密码,猜想flag就在里面。
说就差一点点了
打开 world/media/task/writeup/cn/miscmisc/1.png图片
根据提示 pass in world 猜想 world.doc 文件里不可能那么简单 可能还会有隐藏文字,ctrl+A 全选,右击—字体—取消勾选隐藏。发现了隐藏字符。
最后的密码是 pass内容+world里每行字符串的最后一个字符
解压后就得到flag{12sad7eaf46a84fe9q4fasf48e6q4f6as4f864q9e48f9q4fa6sf6f48}
数据里面有一些图片
复制原始数据存到一个txt文档中,用010编辑器导入十六进制在存为png图片即可
把图片都dump下来后有一张图片lsb隐写,得到flag
看到txt文件,把后缀修改成zip
我这里把1解压出来
又看到了.txt文件,再次把1修改后缀
里面就是flag了
把每个TTL值二进制码的高两位拿下来,每4个TTL值凑出一个字节的二进制数来
用脚本实现
with open('ttl.txt') as f:
lines = f.readlines()
n_num = []#分析出所有的数for i in lines:
if i!='\n':
n_num.append(int(i.replace('TTL=','')))#拿到每个TTL值的高位
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('fi.txt','w') as f:
f.write(rlt2.rstrip())
得到文件
以FFD8开头,FFD9结束。所以,是jpeg格式的图片无疑了
把这些16进制字符粘贴到winhex里并保存为jpeg格式的图片,得到了一张残缺二维码。于是就搜了下FFD8和FFD9的数量,正好6对
可以用替换搜索,这样可以计数
接着就是把图片拆出来了,使用binwalk,会分出6张二维码图片,用PPT的插图和对齐的功能拼接一下,得到一个二维码
使用autokey解开密文
http://www.practicalcryptography.com/ciphers/classical-era/autokey
flag{2028ab39927df1d96e6a12b03e58002e}
打开发现图片损坏了,用010editor打开
发现头部和宽度都不对
恢复png头为 89 50 4e 47 0d 0a 1a 0a
宽度通过pyhton跑出来
import os
import binascii
import struct
misc = open("12.png","rb").read()
for i in range(1024):
data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x932f8a6b:
print (i)
得到709,十六进制转换后得到,0x2c5。
从wireshark打开,导出图片,发现一二维码,图片说了AES加密密码CTF,我们解密出来
668b13e0b0fc0944daf4c223b9831e49
接着发现这张图有密码,把后缀改成zip,输入密码
扫描里面的二维码即可
97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758
我们用oursecret分解出压缩包,密码是图片的绿色的数字
根据提示生日,爆破压缩包,密码19950822
发现txt文件和flag.zip压缩包里的txt文件CRC32一样即可用明文爆破
发现里面有flag.txt,这里用的是伪加密,在PK处把01修改成00即可
爆破栅栏密码
爆破凯撒密码
flag{ssctf_@seclover%coffee_*}
用Stegsolve打开图片,相应操作,然后第一串就是,根据题目所说是倒写的
flag{9102_cCsI}
首先8进制转换ascii码,然后base64转换即可
首先安装rockstar
pip3 install rockstar-py
然后获取python代码。跑一下即可
Leonard_Adleman = "star"
Problem_Makers = 76
Problem_Makers = "NCTF{"
def God(World):
a_boy = "flag"
the_boy = 3
def Evil(your_mind):
a_girl = "no flag"
the_girl = 5
Truths = 3694
Bob = "ar"
Adi_Shamir = "rock"
def Love(Alice, Bob):
Mallory = 13
Mallory = 24
Everything = 114514
Alice = "you"
def Reality(God, Evil):
God = 26
Evil = 235
Ron_Rivest = "nice"
def You_Want_To(Alice, Love, Anything):
You = 5.75428
your_heart = input()
You = 5
your_mind = input()
Nothing = 31
if Truths * Nothing == Everything:
RSA = Ron_Rivest + Adi_Shamir + Leonard_Adleman
if Everything / Nothing == Truths:
Problem_Makers = Problem_Makers + Alice + Bob
print(Problem_Makers)
the_flag = 245
the_confusion = 244
print(RSA)
Mysterious_One = "}"
print(Mysterious_One)
This = 4
This = 35
This = 7
This = 3
This = 3
This = 37
NCTF{youarnicerockstar}
用binwalk发现还有图片没有显示出来
直接foremost分离出来
有个flag.png图片,但是foremost分离不出来,这里我们用tcpxtract分离
先安装
apt-get install tcpxtract
Tcpxtract -f
分离出来,flag就出来了
HITB{95700d8aefdc1648b90a92f3a8460a2c}
用stegsolver打开,发现PK头,于是分离出zip文件
发现一样的图片,于是利用盲水印
python bwm.py decode apple.png pen.png apple_pen.png
unctf{9d0649505b702643}
我们用工具Freemake Video Converter慢慢打开,发现两个二维码拿去扫描下
我们用工具Freemake Video Converter慢慢打开,发现两个二维码拿去扫描下
解密出来
key2:want
key3:play
接着我们用winhex打开发现一串base64加密的字符串
用python跑出压缩包
import base64a='UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=='
f=open('111.rar','wb')
f.write(base64.b64decode(a))
f.close()
根据给出的2和3的key,我们猜测1和4的key为i、ctf,构成
iwantplayctf
把04后面修改成FF
把这张图片后缀修改成zip,然后用这图片下方的密码打开,导出所有的html文件
看到了一串base64加密的字符串
flag{Oz_4nd_Hir0_lov3_For3ver}
直接在线解密
https://quipqiup.com/
flag{classical-cipher_is_not_security_hs}
import os
c = open("cipher",'rb').read()
key = "GoodLuckToYou"
def xor(c,k):
keylen = len(k)
res = ""
for pos,c in enumerate(c):
res +=chr(ord(c) ^ ord(k[pos % keylen]))
return res
print xor(c,key)
运行代码即可获取二维码
import PIL.Image as Image
img = Image.open('low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width,height = img_tmp.size
for w in range(width):
for h in range(height):
if pix[w,h]&1 == 0:
pix[w,h] = 0
else:
pix[w,h] = 255
img_tmp.show()
flag{139711e8e9ed545e}