Crypto_1
hello everyone
密码学大致分类有古典、对称、非对称三类。
密码学用我的理解就是一种加密算法 or 编码,密码学基础的内容最好的办法就是了解各种加密后的格式,把格式记清楚即可。
对应加密的算法刚开始不用太了解。
在刚开始遇到密码学不会解??
会百度吧(当然不一定就是百度哈),推荐一些超简单的办法:
百度搜索对应加密算法的在线解密
百度搜索站长工具,站长工具包含但不限于加解密,还包括了一些有趣的功能
百度搜索一些脚本加解密的内容
第一题:
我们拿到一道easy的Crypto(密码学)类的题目
看到这样的东西是不是很抠脑壳,先把里面的值抠出来:
71736E6374667B333939623130D226139343D293663336D246366466623564303365346364307D
看到一长串不属于正常语言的值,总计78位
78位能被2整除,首先想想ASCLL类编码这些编码后都是两位值,仔细看看上面的表格最后有个7D;
既然这是一个加密后的内容最基础就先看看最后的值 正常的flag最后都是},除开某些可能,例如凯撒加密这种换位加密;
既然最后是个7D,了解过密码学的应该会觉得熟悉,7D,这样的格式像是ASCLL十六进制加密,因为编码方式很多,所以我们先试一试。
对应ASCLL表,7D是}编码后的结果。
再往前看看,我们既然拿到了},就应该看看有没有对应的{,因为flag有一个特殊的格式,就是{}。
前面有个值:7B,这个值在ASCLL编码中是{,既然这样我们就能确定这个值是被ASCLL编码加密过的值。
用之前说过的一些解密的办法去解密。
转换出来是乱码(提示在不同的网站可能有不同的转换方式,所以先了解到加密后的格式,你在输入内容时才能等到)。
验证网站解密格式:
以当前网站为例子随便输入内容;
在网站中下面的类容里发现了他的格式前面加了0x
试一下:
获取到了值现在只需要在两个值前加一个0x
0x710x730x6E0x630x740x660x7B0x330x390x390x620x31300x630x640x2D0x630x330x660x390x2D0x340x390x310x622D0x640x660x620x350x640x300x330x650x340x630x640x307D
回到主题:
我们再仔细看看上面的表格,发现第二行不对劲,我把它用两个两个一组用红框框出来,发现第二行有好几个由字母开头的编码,但是ASCLL编码并没有由字符开头的内容。
做ctf就是要有开阔的思维,既然他位置不对,那我们就把他倒过来,不管做什么方向都要勇于尝试。
发现直接把所有的发上去任然还有乱码的问题(大概是网站的原因),将其分段解码最后获取到了我们想要的flag
qsnctf{399b10cd-c3f9-491b-dfb5d03e4cd0}
成功拿到了flag。
ok,我们总结一下从头到尾我们做了什么:
1.拿到题,分析编码类型。
2.解密
总的来说其实就两步。
第一步你就需要了解清楚有些什么编码类型,才能判断,这还是简单的,更甚有那种自己写出来的加密算法。
第二步用对应解密手法把他还原,这种仅仅只加密了一次
第二题
基础浏览
Rsa:一种非对称加密
Mod(取模运算):指求两个数相除的余数。
^:按位异或运算符。
质数:也称素数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
互质:指公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。
rsa主要公式:
n = p * q
ø(n) = (p - 1) * (q - 1)
ed ≡ 1 mod ø(n)
c = m**e mod n
m = c**d mod n
拿到一道py脚本
打开看了之后,发现里面有些关键点:pqendc;一看就能知道是rsa解密
既然值都有了,我们就直接计算m的内容。
得到m后,就是获取明文密文的时候
将m的值从十进制转换为十六进制,再将其转换为字符/字母;
当然既然给了你脚本,直接再脚本里改
总结:rsa;获取m的值,再转十六进制,再转字母or字符。
原文始发于微信公众号(Rot5pider安全团队):青年CTF题集-Crypto
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论