CTF之Crypto新手入门

本文介绍了CTF竞赛中Crypto领域的基础知识,包括学习资源、解密工具和技巧,如openssl的RSA解密、轮转机解密,以及Python在加密解密中的应用。还提到了一些奇奇怪怪的加密编码方法,如BrainFuck和培根密码。最后强调了数学工具sage在解题中的重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Crypto

看了《密码编码学与网络安全》的大部分内容,首先做了攻防世界网站里面的新手题目,对它考查的内容有了初步的认识,有加密和编码的内容,加密包含了几种密码:栅栏密码,摩斯密码,RSA密码,轮转机,培根密码等
编码包括:BASE64(6个bit组成一个字符,共有64种字符)Unicode ,ASCII

学习到的Crypto所需工具

最好在kali环境下完成,RSA密码使用opensll以及代码版的RSATools
编码的话收集到了许多转换工具,这里也不一一赘述,比较好用的工具叫 convertor

openssl的RSA解密过程

这种题目一般会给你一个.enc文件(被加密过的flag文件)还有一个.pem文件(公钥文件)
在Kali系统的terminal中使用OpenSSL执行openssl rsa -pubin -in pubkey.pem -text -modulus,即可看到该pem文件内的公钥e和模数n,接着在质数分解网站分解这个模数得到p和q两个质数,之后可以使用exe版的RSAtool得出私钥d。
如果是要求我们解密enc文件的话,我们需要使用python版的rsatools获得私钥的pem文件,执行以下命令:

python3 rsatool.py -f PEM -o private.pem -p Value_p -q Value_q -e Value_e

我们就获得了一个private.pem的私钥文件,之后再执行以下命令:

openssl rsautl -decrypt -in flag.enc -inkey private.pem -out flag.dec

我们就能得到一个flag.dec文件,里面就是解密得到的字符了。

RSA中的攻击方式

  1. 共模攻击
  2. 低指数/高指数攻击
  3. 中国余数定理/广播攻击
  4. 低指数(相比2而言,指数已经比较高了),密文间有线性关系,也可以进行攻击

XCTF的轮转机解密

Wheel Cipher
加密表:
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <

密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP
在这里插入图片描述
既然是车轮,看来需要轮换,一开始以为是将密文对应密钥位置进行替换,发现不对,查了查发现Jefferson wheel cipher(杰弗逊转轮加密器),差不多重新排一下序,并把密文转到第一个位置,发现flag:FIREINTHEHOLE

一些奇奇怪怪的加密或编码方法

BrainFuck和OOK!编码:一个好心人的解码链接
猪圈密码,培根密码,标准银河字母的编码,佛箴言密码,云影密码
一个很全的集合

python相关知识

熟悉python的base64库内的各种decode和encode,chr和ord是两对互补的函数
以及python中调用Crypto中的AES加密等操作

11.21更新:

关于sage:sage是一个相当全面的数学工具,第三届红帽杯和其他大大小小比赛都有相关的sage写的题目。
这里介绍红帽杯中的Related一题,题目大致是,三个不同的明文通过RSA加密后的密文已知,公钥也已知,同时三个明文的和也已知,其实上述这些条件已经可以解出答案了,但是题目还给出了两个无关的信息,这是我觉得题目可能要混淆人的地方,总结下来,就是解答下面这个方程组:
x 0 + x 1 + x 2 − s ≡ 0 m o d    N x 0 17 − c 0 ≡ 0 m o d    N x 1 1 7 − c 1 ≡ 0 m o d    N x 2 1 7 − c 2 ≡ 0 m o d    N x_0+x_1+x_2-s \equiv 0\mod N\\ x_0^{17}-c_0 \equiv 0\mod N\\ x_1^17-c_1 \equiv 0\mod N\\ x_2^17-c_2 \equiv 0\mod N x0+x1+x2s0

### CTF Web 类别新手入门指南 对于希望进入CTF竞赛Web类别领域的新手来说,理解基础概念和技术至关重要。以下是详细的入门指南: #### 1. 学习基础知识 掌握HTML、CSS和JavaScript是构建网页的基础。这些技术构成了现代互联网的核心部分[^1]。 #### 2. 熟悉常见的Web漏洞 了解并实践各种类型的Web攻击向量非常重要。这包括但不限于SQL注入、跨站脚本(XSS)、文件包含以及命令执行等常见漏洞类型[^3]。 ```python # SQL Injection Example (Do not use this code in production!) import sqlite3 def unsafe_sql_query(user_input): conn = sqlite3.connect(':memory:') cursor = conn.cursor() query = f"SELECT * FROM users WHERE username='{user_input}'" print(f"[DEBUG] Executing Query: {query}") cursor.execute(query) unsafe_sql_query("admin' OR '1'='1") # This is an example of a vulnerable input. ``` #### 3. 使用在线资源进行学习 有许多优质的在线平台可以提供理论知识讲解与实际操作环境相结合的学习体验。例如,通过访问专门针对信息安全教育设计的网站来获取更多关于Web安全的信息。 #### 4. 参加实战演练 参与真实的CTF比赛能够帮助巩固所学的知识点,并提高解决复杂问题的能力。初次参赛可能会遇到困难,但随着经验积累会逐渐变得容易起来[^2]。 #### 5. 加入社区交流 加入相关的论坛或社交媒体群组可以让新人更快地融入这个圈子,与其他爱好者分享经验和技巧,共同进步。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值