BUUCTF 每日打卡 2021-4-6
引言
假期如期结束了 作业在 deadline 之前写完了,却不知道为什么感觉很疲倦 这大概就是所谓的“假期综合征”吧
异性相吸
??? 兄弟,你的思想很危险(滑稽) 解压后有两个文件 key.txt 和 密文.txt
不知所云 但是根据题目推断,大概要对两条字符串之间进行操作 “异性相吸” 大概指要对两个字符串之间进行异或操作 代码如下:
1
2
3
4
5
6
7
8key = 'asadsasdasdasdasdasdasdasdasdasdqwesqf'
with open(r'D:\BUUCTF\Crypto\异性相吸\b8c1caee-43d6-42ee-aecc-d72502a5ade2\密文.txt', 'r') as f:
m = f.read()
c = ''
for i in range(len(key)):
c += chr(ord(m[i]) ^ ord(key[i]))
print(c)
还原大师
题目中三处未知处均为大写字母,而且已知 MD5 加密后的部分密文 根据哈希函数的基本特征:原始输入有微小改动,哈希值的变化也会很大 我们只需用三个循环爆破结果,与 MD5 码对应即可,且不用担心 MD5 码缺失的影响 而且我们只改动三个字母,也不用担心哈希碰撞 代码如下:
1
2
3
4
5
6
7
8
9import hashlib
for i in range(26):
for j in range(26):
for k in range(26):
test = 'TASC' + chr(ord('A') + i) + 'O3RJMV' + chr(ord('A') + j) + 'WDJKX' + chr(ord('A') + k) + 'ZM'
s = hashlib.md5(test.encode('utf8')).hexdigest().upper()
if s[0:4] == 'E903':
print(s)
RSAROLL
题目给了花括号里面两个数字和后面一长串数字 花括号里面的应该分别是 n 和 e ,而后面一串应该就是密文 根据题目 “RSAROLL” ,推测是将 flag 拆分之后加密 先分解 n: 得到 p, q 再按照 RSA 加密的一般算法进行解密即可 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18from Crypto.Util.number import *
n = 920139713
p = 18443
q = 49891
e = 19
with open('data.txt', 'r') as f:
list_c = f.readlines()[2:]
phi = (p-1)*(q-1)
d = inverse(e, phi)
flag = ''
for c in list_c:
c = c.replace('\n', '')
m = pow(int(c), d, n)
flag += str(long_to_bytes(m)).replace('\'', '').replace('b', '')
print(flag)
结语
希望能坚持(打哈欠)