2

第二届“金盾杯”题目总结与复现

 2 years ago
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.

第二届“金盾杯”题目总结与复现

发布时间 :2020-12-21 19:30
字数:1.8k 阅读 :236

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。解密得到flag
在这里插入图片描述
在这里插入图片描述

MISC2:小火龙冲啊

考点:winhex末尾隐藏信息
下载题目压缩包并解压。使用解压工具winRAR打开“小火龙.jpg”,发现加密的flag.txt文件
使用winhex打开“小火龙.jpg”,在末尾发现解压密码:111111
解压,输入解压密码,解压成功得到flag.txt文件,打开得到flag

MISC3:五瓶药水

考点:CRC32碰撞+Base64解码并排序+Base64转图片+winhex末尾隐藏flag
下载压缩包题目文件,并解压,得到
发现橙色.zip、红色.zip、黄色.zip、绿色.zip、青色.zip的文件大小都很小,里边压缩文件大小都是4字节

在这里插入图片描述
在这里插入图片描述
于是想到4字节的CRC32碰撞,将这五个压缩包里的压缩文件的crc32,填到下列脚本的对应位置,进行碰撞
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)
py python复制代码
在这里插入图片描述
在这里插入图片描述
将这五部分分别进行Base64解码:
aW9u解码得ion
cG90解码得pot
Z2Vu解码得gen
YjEy解码得b12
Mw==解码得3
按照一定顺序进行拼接得到flag.zip压缩包的解压密码:potiongenb123
打开解压得到的flag.txt文件,得到
在这里插入图片描述
在这里插入图片描述
很明显,Base64转图片,得到一个jpg图片,使用winhex打开jpg 图片,在最后边发现flag
在这里插入图片描述
在这里插入图片描述

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()
py python复制代码
在这里插入图片描述
在这里插入图片描述
成功转换,在winhex里新建文件,将这些16进制粘贴到winhex里,并保存。打开发现是缺少二维码标志位的二维码主体部分
在这里插入图片描述
在这里插入图片描述
将刚才得到的二维码标志位和这个主体部分进行拼图
在这里插入图片描述
在这里插入图片描述
使用支付宝进行二维码扫描,得到flag

MISC5:One_piece

考点:压缩包暴力破解+社会主义核心价值观加密+BrainFuck编码+维吉尼亚密码+解读c语言代码得到密钥
下载题目压缩包文件并解压,发现需要密码,由文件名四位数字,想到对压缩包口令进行暴力破解,得到压缩包解压密码:9156
解压得到secret.c和路飞海贼团的烦恼.txt文件,打开路飞海贼团的烦恼.txt文件,发现一串密文:

在这里插入图片描述
在这里插入图片描述
很明显是社会主义核心价值观加密,解密得
在这里插入图片描述
在这里插入图片描述
解密结果,很明显是BrainFuck编码,解码得glbe{pnf_njedc_js_ufjs_kmvrocz!}
解码结果感觉是维吉尼亚密码,但没有密钥。打开secret .c文件
,根据代码意思得到密钥的四个字符的ASCII码值:
在这里插入图片描述
在这里插入图片描述
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]
bash复制代码

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]
bash复制代码

转字符串,很明显有问题,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}
bash复制代码

Crypto3:今天是个好日子

考点:unicode编码+Base64编码+脑洞+AES解密
下载题目压缩包文件并解压,得到一个二维码,扫描结果,很明显是unicode编码,解码得

在这里插入图片描述
在这里插入图片描述
解码结果是Base64编码,解码得:
U2FsdGVkX1+ehXdDuA3EC7Tcr5bOHNhzbEPOz55Gdy5StZU7RDzY7Hfr5M1JoNtz
然后再进行Base64解码发现
在这里插入图片描述
在这里插入图片描述
加盐了,于是需要找到密钥,然后进行下面这些解密的其中一个
在这里插入图片描述
在这里插入图片描述
由题目“今天是个好日子”想到今天(比赛那天)的日期20201220,即密钥
然后进行AES解密,得到flag
在这里插入图片描述
在这里插入图片描述

Web1:web_checkin

考点:命令执行+绕过黑名单
打开题目,发现题目源码:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_cXd6Zg==,size_16,color_FFFFFF,t_70
绕过ls关键字过滤可使用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
php复制代码

参考博客:河南省第二届金盾杯CTF web官方wp


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK