看雪 KCTF GMAE 闯关记"/>
看雪 KCTF GMAE 闯关记
第一关:闯关游戏
-.--/---/..-/.--/../-.
摩斯密码,Morse code,放到在线网站上:.html
如果不能识别把 / 替换成空格
第二关
二维码修复,三个角为定位标志,固定形式,找个正常的二维码替换掉三个角的图标
识别修复后的二维码得到flag
flag{62d0cbb2c69133b52f386701726f29c1}
第三关:错误的MD5
base64解码得flag,直接提交是错识误的,题中说"错误的md5",一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,所以把里面的唯一可能有问题的字符修改一下提交,正确
正确的flag{b9768a37b47beb2d88e2db0e76a39bb3}
第四关:盲文参照
这题卡的有点久,开始一直想0和1去替换,最后发现以列为观察,盲文对照解出
答案:IKANXUE
第五关:看雪的历史
下载附件得到一个txt文件,字符实有列数目明显不对,用vim打开可见
很显然是零宽度字符隐写,在上图中可以看到共有(<200c><200d><202c><feff>)四种零宽度字符,在线网站弄一下:.html
勾选对应的字符编码
得到flag:flag{6af971a42782115a594ba2318c0417ad}
第六关:凯撒留下了什么?
下载info.txt文件,全部为二进制,放到CyberCher会自动转码为文本:iodj{7115i261eig7i42d5fg7412fh86ded7h},{}有这两个符号,位置也对,题意很明确,凯撒加密,放到在线网站,偏移量可以根提第一个字符对应f去计算,也可以一个个数字去试,最后是3
flag{7115f261bfd7f42a5cd7412ce86aba7e}
第七关:110米要跨几个栏?
下载文本文件,根据提示想到栅栏密码,栅栏密码有传统形和W型,这个是W型
key为10的时候=号在最后,可base64解码得到flag
第八关:WinXor
逆向题,取字符集进行异或,超哥解出
第九关:请看附件,一位土著告诉了你应该去哪里寻找你想要的当地特产 “振金”
下载png图片,010查正常,无隐写
图片的名字为wakanda,找到一张瓦坎达文字对照表
找到图案对应文字即为答案:YOUGOTIT
第十关:中午时分,云的影子比其它时刻小了许多。提交格式:flag{}.
821010841088421108841022104084210884021084210841
下载txt文件,只含有5个数字01248,题目中又有云和影的提示,云影编码无疑
python脚本跑出来
#!/usr/bin/python
# -*- coding=utf8 -*-
def de_code(c):dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]flag = []c2 = [i for i in c.split("0")]for i in c2:c3 = 0for j in i:c3 += int(j)flag.append(dic[c3 - 1])return ''.join(flag)def encode(plaintext):dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]m = [i for i in plaintext]tmp = [];flag = []for i in range(len(m)):for j in range(len(dic)):if m[i] == dic[j]:tmp.append(j + 1)for i in tmp:res = ""if i >= 8:res += int(i/8)*"8"if i%8 >=4:res += int(i%8/4)*"4"if i%4 >=2:res += int(i%4/2)*"2"if i%2 >= 1:res += int(i%2/1)*"1"flag.append(res + "0")print ("".join(flag)[:-1])c = input("输入要解密的数字串:")
print (de_code(c))
#m_code = input("请输入要加密的数字串:")
#encode(m_code)
KAMXUEDOTCOM直接提交还是不对,这个题目提示很有深意,我当时是“看”的拼音不对,就把M改为N,提交正确KANXUEDOTCOM
第十一关
还需要密码吗?看题目想到伪加密
用010editor打开,修改压缩文件加密标志位为00,保存后就没有密码了
flag{d9ae4d859de9b941af40f91f69b13f31}
第十二关:经典RSA
p=1074058774204108249701494602945344702257295575959111855899071
q=88986629334781577655493187325102894512564116681307655782184342573939069819137
e=9540011292252897217c=41548063605430288432470295597098485988788870848095534515875709414720207762389334011819123356492264118935214420228741427986850823373300101
已知N、e、c或已知p、q、e、c求m,直接上代码
import gmpy2
p = 1074058774204108249701494602945344702257295575959111855899071
q = 88986629334781577655493187325102894512564116681307655782184342573939069819137
e = 9540011292252897217
c = 41548063605430288432470295597098485988788870848095534515875709414720207762389334011819123356492264118935214420228741427986850823373300101
n = p * q
fn = (p - 1) * (q - 1)
d = gmpy2.invert(e, fn)
h = hex(gmpy2.powmod(c, d, n))[2:]
if len(h) % 2 == 1:h = '0' + h
s = str(bytes.fromhex(h))
print(s)
第十三关:流量分析
下载流量包文件,wireshack打开,FTP流量。统计--》协议分级
data上右键,查找,找到对应数据包,追踪TCP流直接出flag
或者直接过虑:tcp contains flag
第十四关
逆向题,不会,求助超哥
第十五关:幸福的小羊,快乐的狼
下载题目附件,解压后有1296张小图片,很明显的CTF拼图题,主要用到了montage和gaps,这两个工具安装是重点:
安装好后,执行命令先把所有小图片拼合成一张图片
montage ./*.png -tile 36x36 -geometry +0+0 flag.png
由于这些小图片不是正方形,需要把生成的图片调整到长和宽一样的,便于后续操作,这期间做了很多操作,最后都没有得到正常的图片,可能跟小图片数量或者小图片颜色非常相近有关,后面换了一种思路,观察montag生成的图片发现含有flag字符的大概就在两行中(sheep649.png-sheep720.png),共72张小图片,我把拿跟这两行有关的图片复制到一个文件中来生成
montage ./*.png -tile 36x2 -geometry +0+0 flag.png
调整图片高度为1584*88
gaps run ./flag.png newfalg.png --generations=72 --population=20 --size=44
最后得到正常显示flag的图片
第十六关
更多推荐
看雪 KCTF GMAE 闯关记
发布评论