什么是密码学
CTF密码学涉及密码学算法和密码学应用,CTF密码学题目通常包括加密解密、哈希碰撞、数字签名、密码学协议等类型的题目。参赛者需要通过对密码学算法的理解和应用,以及对常见的密码学攻击手段的掌握,获取题目中隐藏的flag。CTF密码学题目不仅要求参赛者具备扎实的密码学理论知识,还要求具备良好的逻辑思维能力、分析能力和解决问题的能力。
密码学一般可分为古典密码学和现代密码学。
其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者的创造力与技巧,并没有对密码学原件进行清晰的定义。
而现代密码学则起源于20世纪末出现的大量相关理论,这些理论使得现代密码学成为了一种可以系统而严格地学习的科学。
1、加密算法:一种将明文转换为密文的数学(逻辑)运算过程。
2、对称加密算法:加密和解密使用相同的密钥的加密算法。常见的对称加密算法包括DES、3DES、AES等。
3、非对称加密算法:加密和解密使用不同密钥的加密算法。常见的非对称加密算法包括RSA、DSA等。
1、哈希算法:将任意长度的消息压缩成固定长度的摘要信息的算法,常见的哈希算法包括MD5、SHA-1等。
2、数字签名:使用私钥对消息进行加密,用公钥对加密后的消息进行解密,以验证消息的真实性和完整性。
1、密码学攻击:指攻击者利用密码学算法的弱点,从密文中推断出明文或密钥的过程。
2、密码学协议:指用于保护通信过程中信息安全的协议,常见的密码学协议包括SSL/TLS、SSH、IPsec等
常见的CTF密码学题目类型包括:加密解密、数字签名、密码学协议、哈希碰撞等
密码学解题思路
1、理解题目:仔细阅读题目描述和给出的密文、明文等信息,理解题目要求和背景。
2、分析加密算法:识别加密算法的类型,例如对称加密算法、非对称加密算法、哈希算法等。
3、寻找攻击点:根据加密算法的特点,寻找可能存在的攻击点,尝试进行破解。
4、进行攻击:根据攻击点,选择相应的攻击方法进行攻击,例如暴力破解、文档解密等。
5、获取flag:攻击成功后,获取flag并提交,确认是否正确。
ASCLL编码
标准ASCII码用一个字节(8位)表示一个字符,并规定其最高位为0,实际只用到7位,码值为00000000~01111111(二进制),即0~127(十进制)。因此可表示128个不同字符。标准ASCII码包括数字0~9、26个大写英文字母、26个小写英文字母,以及各种标点符号、运算符号和控制命令符号等。
第一题:补齐文件名
使用记事本打开文件发现了一串ascll值,将这些ascll值转换成对应的字符, 得到flag{hello,world}
Base64/32/16
Base64:base64是由大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/组成
Base32:base32编码是由大写字母(A-Z)和数字234567组成,大于3个=号
Base16: base16就是16进制转ASCII问题base16中只有数字0-9以及大写字母ABCDEF。
base64是把3个字节变成4个可打印字节,所以base64编码后的字符串一定能被4整除。等号一定用作后缀,且数目一定是0个、1个或2个
第二题:B1
打开文件后发现了一串字符,根据字符特点猜测是base16加密(没有等号)
方法一:利用网站工具得到flag
方法二:因为base16解密就是16进制转ascll码字符问题,所以我们可以直接进行16进制转文本字符串
第三题:B2
打开文件后发现了一串字符,根据字符的特点猜测是base32加密(由大写字母A-Z和数字234567组成,大于等于3个=号),利用网站工具得到flag
第四题:B6
同样打开文件后发现了一串字符,根据字符的特点猜测是base64加密(结尾处有<3个=),利用网站工具的flag
第五题:BBB
打开文件后发现了一个PNG文件但是该文件打不开,所以我们将文件扩展名改为txt就可以打开了打开之后发现是base64加密的字符串,解密后发现是是base32加密的字符串,解密后发现是base16加密的字符串,继续解密,得到flag
Quoted-Printable编码
将任何非ASCII字符的8位字节值,编码为3个字符:一个等号“=”+两个十六进制数字(0-9或A-F)表示该字节的数值。
=33---3
=41---A
=4D---M
=7C---1
第六题:QP
打开文件发现了一串字符,根据字符串的特点(一个等号“=”+两个十六进制数字(0-9或A-F))猜测为Quoted-Printable加密,找到对应的工具解得flag
XXencode编码
XXencode编码它所选择的可打印字符如下:
+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz一共64个字符。跟base64打印字符相比,就是XXencode多一个“”字符,少一个”/”字符。base64不会出现“-”XXencode不会出现“/,并且不会使用“=”补位。
第七题:XX
打开文件发现了一串字符,根据字符串的特点猜测是XXencode编码加密,使用工具,解得flag
URL编码
URL编码是:使用百分号%+十六进制数字 在URL中表示特殊字符的编码方式。
空格->ASCII 字节值:32->十六进制值:20->前加%:%20
URL编码为什么用到渗透测测试里
防火墙,安全设备会拦截筛选恶意字符串,特殊符号,*#/-,sql,webshell等,当我们输入以上字符时,可能会被防火墙、安全设备所拦截,需要用到URL编码绕过防火墙和安全设备
第八题:U
打开文件后发现了一串字符,根据这个特点判断为URL编码,利用网络工具得到FLAG
Unicode编码
十六进制表示法:使用前缀"\u"加上四个十六进制数字来表示一个Unicode字符,例如,字母A的Unicode代码点是U+0041,可以用"\u0041"来表示。
十进制表示法:使用前缀"\u"加上一个十进制数字来表示一个Unicode字符,例如,字母A的Unicode代码点是U+0041,可以用“\u65”来表示。
字符表示法:使用字符本身来表示一个Unicode字符,例如,字母A的Unicode代码点是U+0041,可以直接使用字符"A"来表示。
第九题:icode2
打开文件后发现了一串字符,根据这个特点判断为Unicode编码,利用网络工具得到flag
敲击码
先看行后看列
密码工具网站:
http://zfzascii.wjccx.com/(字符串与ASCII码转换工具)
http://ascii.wjccx.com/(ascll表)
www.atoolbox.net/Tool.php?Id=930(base16解密工具)
https://www.bejson.com/encrypt/base32/(base32j解密工具)
http://www.jsons.cn/base64/(base64解密工具)
http://www.metools.info/code/quotedprintable231.html( Quoted-Printable编码解码在线转换工具)
http://www.atoolbox.net/Tool.php?Id=780#google_vignette(XXEncode加密/解密)
http://www.jsons.cn/urlencode/(URL在线编码解码工具)
http://www.jsons.cn/unicode/(Unicode编码转换工具)