前言
BugKu是一个由乌云知识库(wooyun.org)推出的在线。乌云知识库是一个致力于收集、整理和分享互联网安全信息的社区平台。
BugKu旨在提供一个实践和学习网络安全的平台,供安全爱好者和测试人员进行挑战和练习。它包含了各种不同类型的场景,如Web、系统、密码学等,参与者需要通过解决这些来获取Flag。
BugKu的特点如下:
1. 丰富:BugKu提供了大量的场景供用户挑战,涵盖了常见的Web,如XSS、SQL注入、文件上传等,以及其他类型的,如逆向工程、密码学等。
2. 适合不同水平:BugKu的题目分为不同的难度级别,适合不同水平的参与者。从初学者到专业测试人员,都能在BugKu中找到适合自己的挑战。
3. 学习资源:BugKu提供了丰富的学习资源,包括解题思路、分析、修复建议等。参与者可以通过学习他人的解题思路和经验,提高自己的技术水平。
4. 排行榜竞赛:BugKu设置了排行榜,参与者可以通过解决题目获取积分,竞争排名。这种竞争激励机制可以激发参与者的学习兴趣和动力。
通过参与BugKu,参与者可以在实践中学习到真实的和技术,提高自己的技术水平。同时,BugKu也是一个交流和分享的平台,参与者可以与其他安全爱好者进行讨论和学习,共同成长。
CTF Crypto
密码学(Cryptography)一般可分为古典密码学和现代密码学。
其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。古典密码学主要包含以下几个方面:
单表替换加密(Monoalphabetic Cipher)
多表替换加密(Polyalphabetic Cipher)
奇奇怪怪的加密方式
而现代密码学则起源于 20 世纪中后期出现的大量相关理论,1949 年香农(C. E. Shannon)发表了题为《保密系统的通信理论》的经典论文标志着现代密码学的开始。现代密码学主要包含以下几个方面:
对称加密(Symmetric Cryptography),以 DES,AES,RC4 为代表。
非对称加密(Asymmetric Cryptography),以 RSA,ElGamal,椭圆曲线加密为代表。
哈希函数(Hash Function),以 MD5,SHA-1,SHA-512 等为代表。
数字签名(Digital Signature),以 RSA 签名,ElGamal 签名,DSA 签名为代表。
其中,对称加密体制主要分为两种方式:
分组密码(Block Cipher),又称为块密码。
序列密码(Stream Cipher),又称为流密码。
一般来说,密码设计者的根本目标是保障信息及信息系统的
机密性(Confidentiality)
完整性(Integrity)
可用性(Availability)
认证性(Authentication)
不可否认性(Non-repudiation)
其中,前三者被称为信息安全的 CIA 三要素 。
而对于密码破解者来说,一般是要想办法识别出密码算法,然后进行,或者利用密码体制的进行破解。当然,也有可能通过构造虚假的哈希值或者数字签名来绕过相应的检测。
一般来说,我们都会假设已知待破解的密码体制,而攻击类型通常分为以下四种:
类型 | 说明 |
唯密文 | 只拥有密文 |
已知明文 | 拥有密文与对应的明文 |
选择明文 | 拥有加密权限,能够对明文加密后获得相应密文 |
选择密文 | 拥有解密权限,能够对密文解密后获得相应明文 |
一、Caesar cipher
打开
拿到密文
Fhfpgs{3r811r068s5pr27ro4op1p37723q7rr2}
根据描述信息推测加密方式为 ROT 13
因为 F 与 S 相差 13 位
解密拿到 flag(注意大小写要一致)
Susctf{3e811e068f5ce27eb4bc1c37723d7ee2}
二、抄错的字符
打开
参考大佬的脚本
链接
https://blog.csdn.net/m0_57579266/article/details/138848179太牛了
import base64 # 密文 m = 'QWIHBLGZZXJSXZNVBZW=' # 解密映射字典 d = { 'Q': ['Q', 'q', '9'], 'W': ['W', 'w'], 'I': ['I', 'i', '1'], 'H': ['H', 'h'], 'B': ['B', 'b', '8'], 'L': ['L', 'l', '1'], 'G': ['G', 'g', '9'], 'Z': ['Z', 'z', '2'], 'X': ['X', 'x'], 'J': ['J', 'j'], 'S': ['S', 's', '5'], 'N': ['N', 'n'], 'V': ['V', 'v'],'=':['='] } # 用于存储有效的base64解码结果 v = [] # 递归函数,尝试递归所有可能性并base64解码 def f(i, c): # 当前索引超出密文长度,尝试解码 if i == len(m): try: # 尝试base64解码 b = base64.b64decode(c) s = b.decode('utf-8') #解码成功,则记录结果 if s.isprintable(): v.append(s) except: # 解码失败,忽略这个组合 pass return # 获取当前密文字符对应的所有可能字符 p = m[i] r = d[p] # 遍历可能的字符,并递归处理 for a in r: f(i + 1, c + a) # 递归解码 f(0, '') # 打印结果 print("结果:") for e in v: print(e)
三、/.-
打开
很明显是摩斯密码,以 / 分隔,将 / 替换为空格再解密
两个 %u7d 应该就是 {},提交时注意全部转为小写
四、聪明的小羊
打开
给出了栅栏数直接第三方解密即可
五、ok
打开,描述是 Ook,应该就是 Ook 加密
文件内容如下
第三方网站解密
Ook!
https://www.dcode.fr/ook-language这个网站是比较好用的