短短的签到题都透露着丝丝杀气
打开压缩包,发现一张png图片和一个加了密的压缩包,看到png小菜鸡就下意识要去用tweakpng.exe打开图片文件,结果果然不出菜鸡所料(打开tw是个好习惯)
原来是CRC校验出错了啊,于是菜鸡拿出定制珍藏版脚本(小菜鸡才刚刚开始学爬虫所以只能先当一个粘贴侠喽)来通过图片CRC校验值测量出高度了
import os
import binascii
import struct
crcbp=open("1.png","rb").read() #1.png是待测图片文件名
for i in range(1024):
for j in range(1024):
data=crcbp[12:16]+struct.pack('>i',i)+struct.pack('>i',j)+crcbp[24:29]
crc32=binascii.crc32(data) & 0xffffffff
if crc32 == 0x6ad5cafe: # 0x6ad5cafe是待测图片原始的CRC校验值,即tweakpng里出现的前一个CRC值
print i,j
print "hex",hex(i),hex(j)
很快就得到了图片的高度
发现高度0xe3,马上打开010 Editor
高度位居然是0xaa,飞速改成0xe3,保存后重新打开图片,压缩包密码就出现了!!!!
打开压缩包,又是一张png图片,以小菜鸡对出题师傅友善度的理解,可以合理推测是LSB隐写,于是小菜鸡打算放到Kali里去康康,,,(kali里的zsteg工具真好用,专门对付png图片的LSB隐写)
flag出现了!!!
打开文件发现一个微信公众号平台的二维码和一份密文文件,密文文件中是以换行符分割的多个base64编码字符串(小菜鸡当场懵逼OoO)后来看了hint,在此特别鸣谢提供定制脚本的微信公众平台“中南极光实验室“(小菜鸡留下了不学无术的泪水[T^T])
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s1)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('1.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)
pads_num = steg_line.count('=')
if diff:
#print bin(diff)
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i+8], 2))
print res_str
solve_stego()
运行这个python脚本,可以得到
flag被脚本跑出来了!(小菜鸡一定好好学爬虫T^T)
这次的文件是一段啥音乐播放器都放不出的名叫vip的m4a文件,小菜鸡真的去百度了名叫vip的这首歌,还真的有!(目瞪口呆OoO)小菜鸡又懵了,最后又是hint给小菜鸡力量。。。
其实它只是被异或加密了[T^T],用小菜鸡的010打开文件,发现了许多相同字符,看来就是被0xa1从中作祟了(真相只有一个)文件被0xa1异或加密了,用010里自带的工具还原,用010里菜单栏的Tools----->Hex Operations------>Binary Xor… 在对话窗口这样设置
保存之后重新打开它,听出flag吧!
题目又开始欺骗我,简单的流量题。。。(吗?)
解开压缩包,是一个流量包,二话不说,放到wireshark里先用语句过滤一下
瞧我发现了啥,居然有一个zip, 果断文件----->导出对象,然后点击zip压缩包保存
打开一瞧
又是一个加了密的压缩包,先考虑一下是不是伪加密,事实证明:
标志位应该改为0x0000,就可解除伪加密态
于是小菜鸡摩拳擦掌准备改的时候,出题人给了小菜鸡当头一棒-----------
小菜鸡真高兴(强颜欢笑),search了一下,将文件从只读状态改为可编辑状态应该在zip文件所在文件夹中,右键—>属性—>安全—>高级,然后禁用继承就可以啦
然后就是010展现真正的技术的时候啦
可算把这个伪加密的zip打开了,但是貌似情况变成了一山放过一山拦的窘境中,出题人来点题了------------SWP文件到底是啥?小菜鸡不是很清楚,但是小菜鸡突然想起了强大的kali,linux系统中有一个很强大的功能——文本编辑vi,试试看,输入命令行:
vi flag
看到这里小菜鸡也还是有点迷茫,先回车跳过看看
小菜鸡突然激动,于是就一页一页找下去,n页翻过去了,flag没有半点消息[T^T]
是不是哪里出了什么问题呢?
小菜鸡突然想起刚刚那张图里有一条提示命令:
vim -r flag
不管怎样先试了再说,没想到真的有效,(刚开始可能还不会出现最底下那行选择文件编号,得先多敲几下回车跳过)选择在压缩包里看到的flag.swp对应的文件编号
下面是见证奇迹的时刻(要一页一页仔细排查哦)flag看到了么?
打开压缩包,它又被加密了,老套路,看看它是不是被伪加密了,一用010打开,果然。。。
因为在上一题对此方面有详细的阐述,所以小菜鸡这里就不多说啦
编辑完成,解除伪加密态,在zip里发现了一个txt文档和一张jpg图片
打开猫咪图片的属性,发现了一条被核心价值观加密的“可疑物”:
放到解密网站上解密得到字符串abc,然后,,,,,,就没有然后了。。。。这里小菜鸡也卡了好久好久[T^T],最后又是hint给小菜鸡力量
guess的意思原来是jpg图片的outguess加密!恍然大悟!!!原来abc是outguess算法的密钥!
把图片放到kali里,敲下命令行:
outguess -k “secret key” -r 解密的文件名 解密结果的存放文件名
flag的光芒普照大地,小菜鸡欣喜若狂(心情难以用语言描述)
这道题绝对是良心出题人,填问卷就给flag
不过小菜鸡填了三回才拿到flag是为什么呢?(这是一个问题。。。尴尬而不失礼貌的微笑0v0)
这道题让小菜鸡深刻明白了什么叫“一切以题目实物际为准”---------------
这道题的题目跟题真的一点关系都没有
回归主题,解压压缩包,发现了非常非常多的txt文件
大部分打开都是这样的:
通过CRC值发现了一股“清流”
没错293.txt就是这股“清流”,打开一看:
就知道没那么简单-----------小菜鸡又去search了一下,ADS涉及到流隐写的问题,于是用流隐写工具ntfsstreamseditor.exe
小菜鸡温馨提示:流隐写时若有压缩包要解压只能用winrar解压哦!
果然藏着宝藏,导出来康一康:
flag和盘托出了【^ v ^】
打开压缩包,发现一张图片和一个加密的压缩包,看到这里确实应该形成一个基本思路:看到加了密的压缩包文件先看看是不是伪加密,用010打开,发现这个压缩包确实是真加密了,所以开始找密码,可是密码在哪儿呢?
小菜鸡用kali里的一条文件分析命令:
binwalk 文件名
发现了不得了的东西
诶,怎么只有一个Zip文件尾呢?此时小菜鸡就开始合理外推:难道是文件头出错了?
把图片放到010里面,果然。。。。
更改完毕,将它提取出来保存,命名为flag.zip,重新打开,发现了奇妙的事,小菜鸡在图片中得到的压缩包中的文件居然和加密压缩包里的部分文件一模一样,出题人又来点题了,果真是双子。。。。
既然如此,小菜鸡就考虑应该是用明文攻击暴破压缩包了
点击确定,保存成zip文件,加密压缩包解开啦
flag唾手可得[^ v ^]
密码学只解出一道题,惭愧啊[0^0]
打开压缩包,是一个加密的密码和一个hint的文本文档和一个密文的文本文档,hint里说压缩包是小Z同学的生日,于是用Ziperello暴破,生日的话一定是8位数字(小菜鸡真没看答案),这不就解开了:
然后得到加密算法
简单分析一下算法,应该就是把flag的每个字符的ASCII码减3之后得到的新字符,再被0x07异或加密。
解密过程实际是加密的逆过程,即将密文先解异或再对应每个ASCII码加3
由于小菜鸡的写脚本能力实在有限,只能巧取flag喽!(灵感来自Music For Free 那道题,小菜鸡想采用010来辅助解密)
首先把密文的后缀名.txt改成.bin,变成二进制文件,再用010打开:
很好,这样就出现了字符对应的十六进制数了,我们模仿前面那个题用010里菜单栏的Tools----->Hex Operations------>Binary Xor… 在对话窗口这样设置:
小菜鸡温馨提示:这次Treat Data As选Signed Byte(可打印字符)
变换后的密文变成这样:
再将这个字符串放在转换工具或网站上转换成ASCII码
最后再将这个ASCII码每个都加3
小菜鸡不会告诉你其实ta就是一个一个查表的
也是一个很不错的体验呢。。。[强颜欢笑0v0]
事实证明flag是actf{my_naive_encrytion}(字很丑 无辜脸[o-o])
小菜鸡不会告诉你写这道题只是看中它的分------------------
打开压缩包,是一个Sign up.exe,放到ida里去
然后键盘Shift+F12打开字符串窗口
Here_you_are…小菜鸡来点题了。。。