2020金盾信安杯wp

  • CRYPTO
    • 0x01-base
    • 0x02-不一样的凯撒
    • 0x03-今天是个好日子
  • MISC
    • 0x01-注意数字
    • 0x02-小火龙冲啊
    • 0x03-五瓶药水
    • 0x04-我和十六有个约定
    • 0x05-One_piece

CRYPTO

0x01-base

内容:链接: https://pan.baidu.com/s/18oejcVD2ywcSuHo5mqTP1A 密码: hbg4

下载附件解压,用记事本打开
2020金盾信安杯wp_第1张图片

在线base64转图片,另存为png
2020金盾信安杯wp_第2张图片
是张二维码
2020金盾信安杯wp_第3张图片

扫描二维码

F#S

在线Base92解码,得到flag

2020金盾信安杯wp_第4张图片

0x02-不一样的凯撒

内容:链接: https://pan.baidu.com/s/1vwAzXwpttfflbqojLWgdpQ 密码: w913

这道题当时没有做出来,复现一下

#密文
bhag{asb_zsz_vtsz_aszw}

转化成Ascll码

98 104 97 103 123 97 115 98 95 122 115 122 95 118 116 115 122 95 97 115 122 119 125

flag的格式为flag{}

 f   l  a   g   {
102 108 97 103 123

从密文得到flag,密文前两位ascll码98和104均+4,后面三位字母的ascll码103 123 97保持不变.

规律为

ascll码为偶数数值加4,奇数则保持不变

写个脚本

m='bhag{asb_zsz_vtsz_aszw}'
for i in m:
    if  ord(i)%2 == 0:
        print(chr((ord(i)+4)),end="")  
    else:
        print(i,end="")

运行结果

flag{asf_~s~_zxs~_as~w}

~显然不是想要的结果,其ascll码为126,超出了范围,ascll减去26,对应的字母是d
所以最后的结果为 flag{asf_dsd_zxsd_asdw}

改进后的脚本

m='bhag{asb_zsz_vtsz_aszw}'
for i in m:
    if  i>'a' and i<'z' and ord(i)%2 == 0:
        print(chr(((ord(i)+4-97))%26+97),end="")  
    else:
        print(i,end="")

0x03-今天是个好日子

内容:链接: https://pan.baidu.com/s/1BUqo-j2HtXcvrx4kXEEmeQ 密码: l3hl

下载附件
2020金盾信安杯wp_第5张图片

扫描二维码

\u0056\u0054\u004a\u0047\u0063\u0032\u0052\u0048\u0056\u006d\u0074\u0059\u004d\u0053\u0074\u006c\u0061\u0046\u0068\u006b\u0052\u0048\u0056\u0042\u004d\u0030\u0056\u0044\u004e\u0031\u0052\u006a\u0063\u006a\u0056\u0069\u0054\u0030\u0068\u004f\u0061\u0048\u0070\u0069\u0052\u0056\u0042\u0050\u0065\u006a\u0055\u0031\u0052\u0032\u0052\u0035\u004e\u0056\u004e\u0030\u0057\u006c\u0055\u0033\u0055\u006b\u0052\u0036\u0057\u0054\u0064\u0049\u005a\u006e\u0049\u0031\u0054\u0054\u0046\u004b\u0062\u0030\u0035\u0030\u0065\u0067\u006f\u0067

在线unicode解码

VTJGc2RHVmtYMStlaFhkRHVBM0VDN1RjcjViT0hOaHpiRVBPejU1R2R5NVN0WlU3UkR6WTdIZnI1TTFKb050egog

Base64解码

U2FsdGVkX1+ehXdDuA3EC7Tcr5bOHNhzbEPOz55Gdy5StZU7RDzY7Hfr5M1JoNtz

尝试了各种解码,最后AES解码,题目是今天是个好日子,所以密钥为20201220,拿到flag

2020金盾信安杯wp_第6张图片

MISC

0x01-注意数字

内容:链接: https://pan.baidu.com/s/14yqufylp_V4iviXUQLm4Nw 密码: k0ji

2020金盾信安杯wp_第7张图片

图中的数字是3和9,binwalk查看,发现隐藏文件,分离

2020金盾信安杯wp_第8张图片

得到压缩包,解压到一个文档
2020金盾信安杯wp_第9张图片

去掉前面的b’和后面的’,然后进行base64解码,一直解码,大概解了31次,快吐了,最后得到

yqjb{lha-drwohjw-ekf}

前面的数字是3和9,进行仿射密码解码
2020金盾信安杯wp_第10张图片

0x02-小火龙冲啊

内容:链接: https://pan.baidu.com/s/1_Te9_NvNrJywyUt6T8YFWA 密码: o0rm

下载附件
2020金盾信安杯wp_第11张图片

用010 editor图片,发现pass:111111
2020金盾信安杯wp_第12张图片
binwalk一下,发现有隐藏文件
2020金盾信安杯wp_第13张图片

分离文件,分离出1B377.rar
2020金盾信安杯wp_第14张图片
上面的111111为压缩包密码

2020金盾信安杯wp_第15张图片

0x03-五瓶药水

内容:链接: https://pan.baidu.com/s/1Hq-WmLrX2Su4RyOcileDUg 密码: lw7u

下载附件,都是压缩包
2020金盾信安杯wp_第16张图片

CRC碰撞,根据彩虹排序颜色排序,红橙黄绿青,CRC32值分别为

555FA1A2E5C67F466E957E45
绿 76D6A31A2B042586

补充上0x开头,使用脚本进行碰撞

import binascii
import string

dic=string.printable  
crc1 = 0xe5c67f46  
crc2 = 0x555fa1a2
crc3 = 0x6e957e45
crc4 = 0x76d6a31a
crc5 = 0x2b042586

def CrackCrc4(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
CrackCrc4(crc1)
CrackCrc4(crc2)
CrackCrc4(crc3)
CrackCrc4(crc4)
CrackCrc4(crc5)

脚本跑出来

cG90
aW9u
Z2Vu
YjEy
Mw==

Base64解码

potiongenb123

解压flag.zip,密码为potiongenb123
2020金盾信安杯wp_第17张图片
上面那个网站不行,换了个网站,Base64转图片
2020金盾信安杯wp_第18张图片
用010打开图片,拖到最后,看到了flag
2020金盾信安杯wp_第19张图片

0x04-我和十六有个约定

内容:链接: https://pan.baidu.com/s/1LJiUaVyANUZBN4bb1SHiCQ 密码: u5sr

下载附件,得到ababab.png和flag.zip
010打开ababab.png,发现其实是GIF,不过没什么用,拖到最后,看到keyis7034735377307244
2020金盾信安杯wp_第20张图片

十六进制转字符串,得到p4sSw0rD,这就是压缩包密码解压文件flag.txt和splice.txt
flag.txt内容为

2020金盾信安杯wp_第21张图片

发现第一行FF D8 FF E0,倒着读是jpg的文件头,找到一个脚本将flag.txt反转,生成output.txt

#coding=utf-8
import re
f=open("flag.txt")
out = open("output.txt","w")
out.close()
out = open("output.txt","a")

for fl in f.readlines():
    temp=re.findall(r'.{2}',fl)
    order=[]
    for i in temp:
        order.append(i)
    order.reverse()   
    print(''.join(order))
    out.write(''.join(order)+'\n')

f.close()
out.close()

2020金盾信安杯wp_第22张图片

去掉空格
2020金盾信安杯wp_第23张图片

打开010,新建一个Hex file,把编辑后的output.txt内容粘贴进去

2020金盾信安杯wp_第24张图片

文件头是FF D8 FF E0,是jpg文件,另存为output.jpg,得到一张残缺的二维码
2020金盾信安杯wp_第25张图片

splice.txt内容为
2020金盾信安杯wp_第26张图片

Base64转换为图片
2020金盾信安杯wp_第27张图片

补全二维码
2020金盾信安杯wp_第28张图片

扫码得到flag
2020金盾信安杯wp_第29张图片

0x05-One_piece

内容:链接: https://pan.baidu.com/s/16XRUA9HFBENqoHdRSNdFNA 密码: dpfj

一开始以为是伪加密,后来直接爆破压缩包密码
2020金盾信安杯wp_第30张图片
口令为9156,解压文件,得到一个C语言代码和一个记事本

#include 
#include 
#include 

int main(int argc, char* argv[]) {

    unsigned int first, second, thirdly, fourthly;

    if (first + 2 != 100)   //first=b
    {
        printf("wrong!\n");
    }

    if (second * second != 9409)  //second=a
    {
        printf("Made a mistake!\n");
    }

    if (thirdly / 7 == 14 && thirdly < 100)  //thirdly=b
    {
        printf("yes! You got it\n");
    }

    if (fourthly != 121)//fourthly=y
    {
        printf("not this!\n");
    }

    int p[4] = {first,second,thirdly,fourthly};
    int i;

    printf("key:");
    for ( i = 0; i < 4; i++)
    {
        printf("%c", p[i]);
    }

    printf("\n");
    return 0;
}

读这段代码,绕过四个if语句可以得到key

1.first + 2 != 100,得first=98
2.second * second != 9409,得second=97
3.thirdly / 7 == 14 && thirdly < 100,得thirdly=98
4.fourthly != 121,得fourthly=121

把first=98,second=97,thirdly=98,fourthly=121待人入运行程序,得到key为baby

记事本的内容为
2020金盾信安杯wp_第31张图片

直接社会主义核心价值观加密解密

++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>+++++++.>----.<-----.+++.>>-----.<++++.--.<+.-------.>.----.-----.-.-.<.>+++++++.>--------.<<.>>++.<----.++++.>--.<<.>+.++.>+++.----.<++.<++++.>>++++++++.<<<<<<+.>>>>>>+++.

brinkfuck解码

glbe{pnf_njedc_js_ufjs_kmvrocz!}

维吉尼亚解码,密钥为baby

flag{one_piece_is_this_journey!}

你可能感兴趣的:(CTF,WriteUp,信息安全,密码学)