这周去打了DDCTF,花了一周做出了九道题,完成了1000分的梦想。也算是菜鸡打比赛这么久拿到分数最多的一次了,现记录如下:
MISC
1、(╯°□°)╯︵ ┻━┻
(╯°□°)╯︵ ┻━┻
d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1b2e2e5e2b5b4e4b8b7e6e1e1b6b9e4b5e3b8b1b1e3e5b5b6b4b1b0e4e6b2fd
刚开始拿到这道题的时候以为是base64,因为base64是可以解出来的,解出base64后以为是栅栏密码,解了半天无效,卡在这里。
之后观察字符特点发现字母最大没有超过f的,应该是16进制,可是转换成ascii还是乱码,又试过把整个文本倒序输出(因为题目颜文字名称为flipping table),依然无效。
之后尝试尝试各种方法,并在Wechall里面发现了类似的题目(Training: Crypto - Caesar II),还是做题少啊。。。。
其实题目就是一个16位表示的移位密码,写脚本跑flag:
s="d4 e8 e1 f4 a0 f7 e1 f3 a0 e6 e1 f3 f4 a1 a0 d4 e8 e5 a0 e6 ec e1 e7 a0 e9 f3 ba a0 c4 c4 c3 d4 c6 fb b7 b9 b8 e4 b5 b5 e4 e2 b7 b6 b5 b5 b2 e1 b9 b2 b2 e4 b0 b0 e4 b7 b7 b5 e5 b3 b3 b1 b1 b9 b0 b7 fd"
s=s.split()
for key in range(0,128+1,1):
for i in s:
i = int(i,16)
print (chr((i + key + 256) % 256 ), end = '')
print (key)
当跑到128的时候看到了flag
2、第四扩展FS
D公司正在调查一起内部数据泄露事件,锁定嫌疑人小明,取证人员从小明手机中获取了一张图片引起了怀疑。这是一道送分题,提示已经在题目里,日常违规审计中频次有时候非常重要。
题目附件是一个windows.jpg文件,binwalk发现内含有zip文件,使用foremost分离得到一个zip文件
zip文件经过加密,检查过发现并不是伪加密,于是有一次卡在了密码上。。。。。。
后来群里有人提示那张jpg文件里面有东西,查了半天隐写最后竟然发现密码是在属性->详细信息->备注里!!!
后来想想其实这样是比较符合实际情况的,很多人是会把不常用的密码写到文件的备注里,可以看出DD的这次赛题画风比较贴近实际了。
打开zip文件得到了一个file.txt,考虑到题目最后一句话中提到的频次,写个脚本来统计文件中字母出现的频次:
s=open('file.txt','r').read()
A="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789!{}"
for a in A:
times=s.count(a)
print (ti