第二届“金盾杯”题目总结与复现
source link: https://qwzf.github.io/2020/12/21/%E7%AC%AC%E4%BA%8C%E5%B1%8A%E2%80%9C%E9%87%91%E7%9B%BE%E6%9D%AF%E2%80%9D%E9%A2%98%E7%9B%AE%E6%80%BB%E7%BB%93%E4%B8%8E%E5%A4%8D%E7%8E%B0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
第二届“金盾杯”题目总结与复现
Web手,再次玩起了杂项。因为是省赛,所以题目除Web题外,并不太难(当然Web听说也不难,只不过对于我这个Web小菜鸡来说有点难)。上午ak了MISC,下午差一道题没有ak Crypto。然后就被Web第一题100分的题卡死,没去做下面的Web题,以为下边200分、300分的比100分的更难。比赛结束后,听说100分的第一道题做出来的人最少,emmmmm,我直接针不戳!好了先总结一下吧:
MISC1:注意数字
考点:文件分离+伪加密+多层Base64编码+仿射密码和脑洞
下载题目压缩包并解压。对“此图没有提示.jpg”文件,使用foremost进行文件分离,得到一个zip压缩包
解压发现需要密码,使用winhex打开,发现是伪加密,于是将504B0304 后的3、4位,将504B0102后的5、6位的0900改为0000,即可破解伪加密
解压得到1.txt文件,1.txt文件内容是Base64编码的。进行若干次Base64解码后,得到
yqjb{lha-drwohjw-ekf}
进行仿射密码解密。由“飞流直下三千尺,疑是银河落九天”,想到key1(a)为3,key2(b)为9。解密得到flagMISC2:小火龙冲啊
考点:winhex末尾隐藏信息
下载题目压缩包并解压。使用解压工具winRAR打开“小火龙.jpg”,发现加密的flag.txt文件
使用winhex打开“小火龙.jpg”,在末尾发现解压密码:111111
解压,输入解压密码,解压成功得到flag.txt文件,打开得到flag
MISC3:五瓶药水
考点:CRC32碰撞+Base64解码并排序+Base64转图片+winhex末尾隐藏flag
下载压缩包题目文件,并解压,得到
发现橙色.zip、红色.zip、黄色.zip、绿色.zip、青色.zip的文件大小都很小,里边压缩文件大小都是4字节
import binascii
import string
dic=string.printable
crc1 = 0xe5c67f46
crc2 = 0x555fa1a2
crc3 = 0x6e957e45
crc4 = 0x76d6a31a
crc5 = 0x2b042586
def crc32_4(crc):
for i in dic :
for j in dic:
for p in dic:
for q in dic:
s=i+j+p+q
if crc == (binascii.crc32(s.encode("ascii"))):
print (s)
return 1
crc32_4(crc1)
crc32_4(crc2)
crc32_4(crc3)
crc32_4(crc4)
crc32_4(crc5)
aW9u解码得
ion
cG90解码得
pot
Z2Vu解码得
gen
YjEy解码得
b12
Mw==解码得
3
按照一定顺序进行拼接得到flag.zip压缩包的解压密码:
potiongenb123
打开解压得到的flag.txt文件,得到
MISC4:我和十六有个约定
考点:winhex末尾隐藏信息+16进制转字符串+Base64转图片+16进制每行2位一组逆序保存为图片+二维码拼图
下载题目压缩包文件并解压,得到ababab.jpg和flag.zip文件。使用winhex打开ababab.jpg文件,在最后边发现keyis7034735377307244
,将7034735377307244进行16进制转字符串得到p4sSw0rD
p4sSw0rD
即是flag.zip的解压密码,解压得到flag.txt和splice.txt文件。
将splice.txt的文件内容进行Base64转图片,得到二维码标志位
打开flag.txt,发现每一行是jpg图片的16进制的逆序
input = open('flag.txt', 'r')
input_all = input.readlines()
for lins in input_all:
ss = lins[::-1]
num=ss.split(' ')
for i in num:
xx=i[::-1]
print(xx,end=' ')
input.close()
MISC5:One_piece
考点:压缩包暴力破解+社会主义核心价值观加密+BrainFuck编码+维吉尼亚密码+解读c语言代码得到密钥
下载题目压缩包文件并解压,发现需要密码,由文件名四位数字,想到对压缩包口令进行暴力破解,得到压缩包解压密码:9156
解压得到secret.c和路飞海贼团的烦恼.txt文件,打开路飞海贼团的烦恼.txt文件,发现一串密文:
glbe{pnf_njedc_js_ufjs_kmvrocz!}
解码结果感觉是维吉尼亚密码,但没有密钥。打开secret .c文件
,根据代码意思得到密钥的四个字符的ASCII码值:
\aby
于是对glbe{pnf_njedc_js_ufjs_kmvrocz!}进行维吉尼亚解密,得到flag
Crypto
Crypto1:Base
考点:Base64转图片+Base92解码
下载题目压缩包文件并解压,打开base文件
于是Base64转图片,得到png图片,打开发现是二维码
扫描得到
对F#S<YReBy{f.WwU{CSv^e^'n*D
进行Base92解码,得到flag
Crypto2:不一样的凯撒*
考点:脑洞+找规律+凯撒变形+十进制转字符
题目密文是bhag{asb_zsz_vtsz_aszw}
,将字符串转ASCII得:
[98,104,97,103,123,97,115,98,95,122,115,122,95,118,116,115,122,95,97,115,122,119,125]
bh
对应的ASCII为98 104
,如果变成fl
则变成102
108
,为偶数ag
对应的ASCII为97 103
,不变,为奇数
所以,偶数+4,奇数不变,得到:
[102,108,97,103,123,97,115,102,95,126,115,126,95,122,120,115,126,95,97,115,126,119,125]
转字符串,很明显有问题,126已经超出可见字符范围了,便减去26,转字符串得到flag
[102,108,97,103,123,97,115,102,95,100,115,100,95,122,120,115,100,95,97,115,100,119,125]
转字符串得到flag:flag{asf_dsd_zxsd_asdw}
Crypto3:今天是个好日子
考点:unicode编码+Base64编码+脑洞+AES解密
下载题目压缩包文件并解压,得到一个二维码,扫描结果,很明显是unicode编码,解码得
U2FsdGVkX1+ehXdDuA3EC7Tcr5bOHNhzbEPOz55Gdy5StZU7RDzY7Hfr5M1JoNtz
然后再进行Base64解码发现
20201220
,即密钥然后进行AES解密,得到flag
Web1:web_checkin
考点:命令执行+绕过黑名单
打开题目,发现题目源码:
dir
命令绕过(但是没想到被坑了,dir
没有列出当前目录下的文件,必须用dir .
,我无语了emmmm。。。。)绕过空格过滤可使用
%09
绕过绕过文件读取过滤可使用
cut读取文件
、sed读取文件
和file -f读取文件
于是就产生了三种解:
dir .
列出当前目录下的文件,得到flag文件F14g_1s_h4rehaha.php
cut%09-c%091-10000%09F14g_1s_h4rehaha.php
sed%09-n%092p%09F14g_1s_h4rehaha.php
file%09-f%09F14g_1s_h4rehaha.php
参考博客:河南省第二届金盾杯CTF web官方wp
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK