BUUCTF CRYPTO 1-20
BUUCTF CRYPTO 1-20
1.MD5
下载压缩包解压得到e00cf25ad42683b3df678c61f42c6bda
直接在线解密https://cmd5.com/
message-digest algorithm 5 消息摘要算法5
什么是消息摘要算法?
消息摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。消息摘要算法也被称为哈希(Hash)算法或散列算法。
用途
- 防止被篡改:作为消息传输后的验证
- 防止直接被看到明文:替换明文密码储存在网站中
- 防止抵赖(数字签名):对含标识的文件的摘要信息记录进行记录,对其他的文件(消息)产生的摘要信息比对,可以唯一确定是否是相同文件(消息)
功能
输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);
不同的输入得到的不同的结果(唯一性);
算法详解
传送门https://zpano.gitee.io/2020/12/19/6/
2.URL编码
%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
URL
URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)
URL编码
- URL 只能使用 ASCII 字符集来通过因特网进行发送。
- 由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
- URL 编码使用 “%” 其后跟随两位的十六进制数来替换非 ASCII 字符。
- URL 不能包含空格。URL 编码通常使用 + 来替换空格(%2b)或者用%20代替
3.一眼就解密
ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= base64解密
BASE64
Base64编码是基于64个字符A-Z,a-z,0-9,+,/的编码方式
编码过程
- 第一步,将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。
- 第二步,将上面的24个二进制位每6个一组,共分为4组。
- 第三步,在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。
- 第四步,根据Base64编码对照表(见下图)获得对应的值。
1 | 0 A 17 R 34 i 51 z |
解码过程
解码原理是将4个字节转换成3个字节.先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位,这样就还原了
4.看我回旋踢
synt{5pq1004q-86n5-46q8-o720-oro5on0417r1} 凯撒加密 rot-13
顺手写一个循环脚本
1 | string = input("Enter a string\n") |
原理
对明文的每一位字母进行位移得到密文
5.摩丝
.. .-.. —- …- . -.— —- ..-
在线解密得到 iloveyou
6.签到-y1ng
QkpEe1czbGMwbWVfVDBfQkpEQ1RGfQ==
base64解密
7.PASSWORD
打开题目看到
姓名:张三
生日:19900315
key{xxxxxxxxxx}
双括号内x的数量为10,生日为8,加姓名缩写,尝试姓名头字母加数字得到flag
8.变异凯撒
加密密文:AFZ_R9VYFSCOEO_UL^RWUC
格式:FLAG{ }
观察可知AFZ_R与FLAG{ 存在对应关系
利用PYTHON ORD()函数,得到AFZ_R与FLAG{ 对应的ASCII值
AFZ_R | 97 | 102 | 90 | 95 | 114 |
---|---|---|---|---|---|
FALG{ | 102 | 108 | 97 | 103 | 123 |
相差 | 5 | 6 | 7 | 8 | 9 |
得出规律,写PYTHON脚本解得FLAG{CAESAR_VARIATION}
1 | #coding=utf-8 |
9.Quoted-printable
=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
Quoted-printable在线解密http://ctf.ssleye.com/
什么是Quoted-printable
quoted-printable 编码方法适用于所传送的数据中只有少量的非 ASCII 码,例如汉字。这种编码方法的要点就是对于可打印的 ASCII 码,除特殊字符等号 “=” 外,都不改变。
编码方法
等号 “=” 和不可打印的 ASCII 码以及非 ASCII 码的数据的编码方法是:现将每个字节的二进制代码用两个十六进制数字表示,然后在前面加上一个等号 “=”。
10.RABBIT
U2FSDGVKX1/+YDNDPOWGBJJJXHZXM2MP2AGI
在线解密
11.篱笆墙的影子
FELHAAGV{EWTEHTEHFILNAKGW}
根据提示是栅栏密码
在线解密,写个循坏脚本
1 | def zhalan(s): |
什么是栅栏密码
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的相同位置的连起来,形成一段无规律的话
举个简单的例子
对FALG{ABCDEF}按照三个一组分类
FLA | G{A | BCD | EF} |
---|---|---|---|
FGBE | L{CE | AAD} |
进行串联变成上面表格第二行的样子
12.RSA
题目给出:在一次RSA密钥对生成中,假设P=473398607161,Q=4511491,E=17 求解出D作为FLAG提交
附上RSA脚本,后面会出一个RSA总结,这里不再赘述
1 | import gmpy2 |
13.丢失的MD5
题目给出脚本,尝试运行直接出结果
14.老文盲了
打开题目看到 “罼雧締眔擴灝淛匶襫黼瀬鎶軄鶛驕鳓哵眔鞹鰝”
繁体字朗读一下,提示这就是flag直接交。与佛伦禅需要有佛曰开头
15.ALICE与BOB
N=98554799767分解得到
101999 * 966233
在线分解大整数网站http://www.factordb.com/
之后对101999966233进行MD5加密得到flag
16.RSA
1 | from Crypto.Until.number import * |
17.大帝的武器密码
对FRPHEVGL使用题四的脚本发现偏移等于13时得到单词security
COMECHINA加密,得FLAG{PBZRPUVAN}
18.WINDOWS系统密码
HTTPS://WWW.CMD5.COM/在线解密,试出来一个有解
A7FCB22A88038F35A8F39D503E7F0062解出来是GOOD-LUCK,得FLAG{GOOD-LUCK}
19.CAT_FLAG
对于这种只有两种组成的,培根密码,二进制转字符串,摩斯密码
上面显然是二进制转字符串
01000010010010100100010001111011010011010010000101100001001100000111111001111101
转成十六进制424a447b4d2161307e7d
在进行hex编码得到BJD{M!A0~}
20.燕言燕语-Y1NG
79616E7A69205A4A517B78696C7A765F6971737375686F635F73757A6A677D20
hex编码一下yanzi ZJQ{xilzv_iqssuhoc_suzjg}
维吉尼亚解密得到flag
什么是维吉尼亚密码
维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式(用坐标概念理解)
明文 BJDYA 代表列
密钥 YANZI 代表行
密文 ZJQXI 行列坐标的字母