大连海事大学第一届“启航杯”DLMU CTF部分题解

大连海事大学第一届“启航杯”CTF校园网络安全竞赛

签到题

0. dlmuctf2020

flag{welcome_to_dlmuctf2020}
dlmuctf{welcome_to_dlmuctf2020}

1. 早安,贝丝人

TVJXRzI1TERPUlRIV1NCV09aU1Y2TlM3TTRZREFaQzdNUTNIU0lMNQ==

​ 很明显的Base64编码,解密后得到MRWG25LDORTHWSBWOZSV6NS7M4YDAZC7MQ3HSIL5,在进行Base32解码,拿到flag:dlmuctf{H6ve_6_g00d_d6y!}

Misc

2. lsp了

​ 题目叫lsp,第一反应想到的就是LSB加密。
image-20201206204813556

可以看到,PK开头,可知是zip压缩文件,保存,打开,得到flag:flag{Good_Job_kkk}

3. base2sth

​ 打开flag.txt,里边有一堆代码,简单看一下,字母全是小写,最高位没有超过f,推测是HEX编码,解码一下。解码后,可以在开头位置看到data:image/png;base64 说明是Base64加密的图片,Base64转图片得到flag。

index

4. docz

​ 下载下来是docx文件,但是打不开,第一反应看16进制,用010editor打开
image-20201206210026771
​ 明显PK开头,改后缀名为zip,打开后里边又是一层zip,打开里边有一个密码.zip,打开后内部是加密的,结合注释“真的有密码?”猜测是伪加密,用010editor打开,去除伪加密,打开里边的爆破.zip,根据提示6位数字密码,进行zip爆破,爆破得到密码233333(过程不展示了,工具到处都是),打开得到flag。

5. jigsaw

​ 题目叫做jigsaw,翻译一下就是拼图的意思,打开压缩包,里边有黑白图片一共10000张,推测是拼起来是个二维码,这里用的工具是ImageMagick 下的montage (具体安装方法百度吧)

​ 在终端下输入:

montage *.png -tile 100X100 -geometry +0+0 flag.png

​ 运行后得到flag.png
flag1

直接扫扫不出来,我当时是拖到word里加个滤镜,缩小一下扫出来的。。。
image-20201206211918825

P.S.这道题做得我血压飙升,一万张图,在虚拟机跑好久,切一下后台kali就给我杀进程。。。期间卡死无数次。。。

Crypto

6. 经典三合一

o{rnhBuRcj_Hjb_uN?p_auJ}

​ 先栅栏得oujp{Rb_rc_anjuuh_NJBH?},再凯撒得到flag{Is_it_really_EASY?}

7. XOR

​ 题目XOR,肯定就是异或了,百度查阅了好多异或加密的资料,写代码:

    #include <stdio.h>
    main()
    {
       char a[]="DsfvD-jZ|,+p}sX.zIfvzYrh|pSvWMX'";
       char c[100];
       int i;

       for(int j=1;j<200;j++)
        {
       for(i=0;a[i];i++)
          c[i]=a[i]^j;
       printf("You Password: %s\n",c);
        }
    }

运行结果:

image-20201206213300730

这个时候就要看你对Base64的敏感度了,最后一行很像Base64,直接一手解码,啪!很快啊,拿到flag:flag{Congratulations!!!}

8. RSA

​ RSA是一种很经典的加密算法,以前只听说过没有研究过,查了好多资料后,大概了解了,用Python写代码:

import gmpy2
p=0xEB4360DF0E0C824D57AE20700BBF6C1BA8324A94DB7B3608DDA40DE07A59082F
q=0xA5B8BA7304F15C70BA82FF60F8A4A5F156ED04896EC94A7E99B96B4E11727A8F
e=0x10001
c=5849414025349869533962909975439563212209275395646853474539897994585461763870010917408284076946095324877247807213532724048271531587570791138002392138818496
n=p*q
s = (p-1)*(q-1)
d = gmpy2.invert(e,s)
m = pow(c,d,n)
print ("hex: " +  hex(m))

​ 把得到的16进制的明文HEX转码,拿到flag

9. RSA_plus

​ 这道题给出了dp的值,查阅资料后,发现这叫dp泄露,进行简单的公式推导之后,写代码:

import gmpy2
import binascii
n
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值