CTF_打卡DAY1&DAY2

本文记录了一名CTF新手在学习密码学过程中的第一天和第二天的体验,涵盖蛮力攻击、字母频率分析、模运算、整数环等基础知识,并通过凯撒密码和仿射密码的实例进行解密练习。文中提到,通过网站和参考资料辅助,成功破解了一些加密文本,揭示了名人名言和特定语句。

跟着《深入浅出密码学——常用加密技术原理与应用》学
P1-P15,P15-32

第一章《密码学和数据安全导论》

x明文;y密文;k密钥;所有可能密匙的集合-密钥空间

蛮力攻击

作为刚接触CTF一个月的小白,大部分情况下是凭借蛮力攻击,也叫穷尽密钥搜索。
这是一种很笨的方法,不过在密码学的极少数题目中还是挺有用的。
因为已知格式为flag{}或ctf{}。

字母频率攻击

顾名思义,英语中某些字母的出现频率相对较高。文本越多,准确率较高。

在这里插入图片描述

模运算

8+4=3 mod 9

因为42 = 4*9+6,所以42=6 mod 9

其中,模约简:
3^8 = 3^4 * 3^4=4*4=16 mod 17

整数环

在这里插入图片描述
其中,
1如果环内任何两个数相加或相乘得到的结果始终在环内,那么这个环就是封闭的
2环中的任何元素a都存在一个负元素-a,使a+(-a)=0 mod m,即加法逆元始终存在
3不是所有元素都存在乘法逆元。假设a属于Z,乘法逆元(a^-1) 可以定义为a*(a^-1)=1 mod m。
*当且仅当gcd(a,m)=1,一个元素a属于Z存在乘法逆元a^(-1)。

凯撒密码

凯撒密码是我自学的第一个密码,也是每次拿来就用,忍不住套着试试看的密码(这不是个好事
简单来说就是移位

仿射密码

在这里插入图片描述

习题

1.1假设我们收到使用移位密码加密的以下密文:
Xultpaajcxitltlxaarpjhtiwtgxktghidhipxciwtvgtpilpitghlxiwiwtxgqadds

Python:

// str='Xultpaajcxitltlxaarpjhtiwtgxktghidhipxciwtvgtpilpitghlxiwiwtxgqadds'
dic={}
for i in str:
    dic[i] = str.count(i)/len(str)
print(dic)

由于文本较少,不确定性较大,这道题我解了挺久。初步试验了t=e,i=e,x=a,x=t,同时借助网站https://quipqiup.com/
越看越觉得Id we……有点意思。索性把Xu=If,解出句子,其中可能性最大的是If we all unite we will cause the rivers to stain the great waters with their blood
通过问题了解到这应该是一个名人名言(问:这句话是谁说的?)通过查找,确定为Tecumseh

1.2仿射加密相关,其中密钥参数a=7,b=22
(1)密文:falszztysyjzyjkywjrztyjztyynaryjkyswarztyegyyj
(2)谁写的?
虽然上文提到了乘法逆元,但是本人没怎么弄懂,于是在解这道题无果后找到了一篇文章,指路-》https://blog.youkuaiyun.com/x_yhy/article/details/83756908,其中的算法亲测有效。最后解出来为FIRSTTHESENTENCEANDTHENTHEEVIDENCESAIDTHEQUEEN
经过断句:FIRST THE SENTENCE AND THEN THE EVIDENCE , SAID THE QUEEN.

参考文献:《深入浅出密码学——常用加密技术原理与应用》

### 使用Python 使用`requests`库可以方便地实现同时发送带有参数的GET和POST请求。以下是示例代码: ```python import requests # 发送GET请求 get_url = "https://example.com" # 替换为实际的URL get_params = {'get_param': 'ctf_get'} get_response = requests.get(get_url, params=get_params) print("GET请求响应:", get_response.text) # 发送POST请求 post_url = "https://example.com" # 替换为实际的URL post_data = {'post_param': 'ctf_post'} post_response = requests.post(post_url, data=post_data) print("POST请求响应:", post_response.text) ``` ### 使用Hackbar Hackbar是Firefox浏览器的一个扩展,用于测试HTTP请求。 1. 打开Firefox浏览器并安装Hackbar扩展。 2. 打开需要测试的网页。 3. 打开Hackbar,在URL栏输入目标URL。 4. 对于GET请求,在URL后面添加`?get_param=ctf_get`。 5. 对于POST请求,切换到POST模式,在POST数据框中输入`post_param=ctf_post`。 6. 分别点击发送按钮发送GET和POST请求。 ### 使用curl 使用`curl`可以通过命令行发送请求。 ```bash # 发送GET请求 curl "https://example.com?get_param=ctf_get" # 发送POST请求 curl -X POST -d "post_param=ctf_post" "https://example.com" ``` ### 使用Postman 1. 打开Postman应用程序。 2. 创建一个新的请求。 3. 对于GET请求,选择GET方法,在URL栏输入目标URL,并在Params中添加键值对`get_param`和`ctf_get`。 4. 点击发送按钮发送GET请求。 5. 创建另一个新的请求。 6. 对于POST请求,选择POST方法,在URL栏输入目标URL,在Body中选择`x-www-form-urlencoded`,并添加键值对`post_param`和`ctf_post`。 7. 点击发送按钮发送POST请求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值