毕竟初次接触正规比赛题,没什么经验,题型也没见多少,再加上基础知识方面还很欠缺,不了解原理题目变化就会很头疼。
下面总结一下本次解题思路:(参考官方wp)
misc
-
LPL:
- 下载附件是一个zip压缩包,直接解压得到.png和.zip文件
- 图片win可以打开(linux打不开),没有信息,再看压缩包需要密码(010观察是真加密),无法爆破,猜测密码应该隐藏在图片中
- 010打开图片发现提示,根据官方wp的方法,缺少IDAT模块引起错误
- CRC错误根据文本找出密码:以下面的一个crc为例,按顺序找出密码
- 得到密码:EDGnb!!(中文叹号,建议直接从文本上复制,免得被坑)
- 解压.zip得到.png和flag.txt(不破不立第1集-纪录片-高清独家在线观看-bilibili-哔哩哔哩) 日期和视频链接
7.打开链接视频,在评论区找到对应日期的那条评论 (顺便把纪录片也看了...)
ps:密码确实没想到(是在下的脑洞过时了),以为是crc的类型题,更改crc的十六进制值,没注意文本信息,但事实上方向就错了,根据LPL(英雄联盟职业联赛),联系之前EDG夺冠,应该有可能根据crc错误的文本内容联想到,但根本就没往那方面想,挺不错的原创题。
-
电信诈骗:
加密账户 qi]m^roVibdVbXUU`h
- 根据题目万军,指挥官之类的有可能暗示凯撒加密
- 但应该不会这么简单,看账户中有一些特殊字符(^这类的),可能是变异凯撒
- 转ASCII看十进制数值(113 105 93 109 94 114 111 86 105 98 100 86 98 88 85 85 96 104 10),首部对比unctf(117 110 99 116 102 )
- 前者ascii值逐个递增4,5,6.......最后再转为字符串得
附py脚本: 得到 unctf{yauoreright}
c = "qi]m^roVibdVbXUU`h" #对比unctf或者flag看出位移
move = 4 #位移
flag = ""
for i in c:
flag += chr(ord(i) + move)
move += 1
print(flag)
-
倒立洗头 :
- 下载得到.txt文件,打开是十六进制数据,看开头结尾是d9ff和ffd8(jpg文件标志),结合题目提示“倒立”,将文本倒叙(脚本,我用的在线工具将文本倒叙,分割再词倒叙)
f = open("key.txt", "rb") s = f.read() f.close() f = open("newtext.txt", "wb") f.write(s[::-1]) f.close()
- 结合暗示洗头,将D8FF改为FFD8,内容复制到010中,看文本信息发现base64加密内容(不知道怎么找出来的,反正打开图片是不完整的)
- base64解码
与佛论禅解密(日ri改成曰yue,虽说看起来一样,但是解不出来会很恼火,坑!)
简单日志审计:
- 下载得到juexue.log日志文件,notepad++打开,找到base64编码段
- 用自带插件base64解码,得到 'cat /CTF?YouShouJiuXing'
- flag:unctf{CTF?YouShouJiuXing}(本来以为是引号内全部内容,结果一直无法提交...无语)
Crypto
-
探秘中世纪城堡
- 下载附件得到 小纸条.txt,根据提示大帝(凯撒加密),64位(bsae64),双重阻拦(栅栏加密)
- 先凯撒所有可能跑一遍,放到base64中解密(在线工具即可,我这里用的CaptfEncoder)
- 找到明显的结构:UCFsbciet_inwnaoagNT{usrb_oXagadmwn} (其他解的都是乱码)
- 在线工具栅栏解密:UNCTF{subscribe_to_Xiangwandamowang}
-
easy_rsa
- 下载得到p,q,c,e(n=p*q),直接上脚本(py2)
import gmpy2
from Crypto.Util.number import long_to_bytes
q= 9961202707366965556741565662110710902919441271996809241009358666778850435448710324711706845973820669201482939820488174382325795134659313309606698334978471
p= 12525187149887628510447403881107442078833803097302579419605689530714690308437476207855511625840027119860834633695330551080761572835309850579517639206740101
c= 28587419802025513525354713621431206010395084854419372005671024739235625817936539010481222419824634956610184430308528941304950093228826213143262329902946812513518444587906469224383320964300417189270202019231856531012143472434842753891213128487132962453421971000901646523331476667655739056951415917218673801225
e = 65537
n=p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print (long_to_bytes(m))
-
电信诈骗pro
- 根据题目提示:四坑七排,罗马帝国—> rot47(凯撒位移为47位的加密)
- 对比ascii值(unctf),相差64位,CyberChef在线