1. 1 エンドレスワルツ (赤城・加賀戦) 東京アクティブNEETs
  2. 2 僕らのあしあと supercell
  3. 3 不可解 花譜
  4. 4 Go→Love & Peace 彩音
  5. 5 如常 HITA
  6. 6 オルフェンズの涙 MISIA
エンドレスワルツ (赤城・加賀戦) - 東京アクティブNEETs
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
0%

BUUCTF 每日打卡 2021-7-16

BUUCTF 每日打卡 2021-7-16

引言

颓废了一天,水了

[UTCTF2020]hill

hill?山丘?变异栅栏? 没有头绪,找wp 原来是希尔密码,没见过 主要就是要求一个nxn的密钥矩阵,然后解密即可 从wp中得知utflag被加密成wznqca,只能构造6个式子,还要模26,所以不可能是3x3的矩阵,只有可能是2x2的矩阵,4个未知数 即 (abcd)(205019116)(2213225160)mod 26 其中a,b,c,d为密钥矩阵的四个未知数 得到模方程组 {20a+19b22 mod 2620c+19d25 mod 265a+11b13 mod 265c+11d16 mod 266b2 mod 266d0 mod 26 显然,最后两个式子是最好下手的,但是我没有什么好的方法,猜测a,b,c,d应该不会超过100,干脆直接爆破,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import random

for k in range(0, 100):
a = 0; b = 0; c = 0; d = 0

while (20*a+19*b) % 26 != 22 or (20*c+19*d) % 26 != 25:
d = random.randint(0, 100)
b = random.randint(0, 100)
a = 0
c = 0
while (6*d) % 26 != 0:
d += 1
while (5*c+11*d) % 26 != 16:
c += 1
while (6*b) % 26 != 2:
b += 1
while (5*a+11*b) % 26 != 13:
a += 1
print(a, b, c, d)

with open('result.txt', 'r') as f:
r = f.readlines()

with open('result.txt', 'a') as f:
if not (str([a, b, c, d]) + '\n') in r:
f.write(str([a, b, c, d]) + '\n')
得到了100以内的部分解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[1, 22, 11, 91]
[1, 22, 11, 39]
[1, 100, 11, 39]
[1, 100, 11, 91]
[1, 48, 11, 39]
[1, 48, 11, 65]
[1, 74, 11, 39]
[1, 22, 11, 13]
[1, 100, 11, 65]
[1, 74, 11, 65]
[1, 74, 11, 13]
[1, 74, 11, 91]
[1, 22, 11, 65]
[1, 100, 11, 13]
[1, 48, 11, 91]
[1, 48, 11, 13]
猜测密钥矩阵可能不唯一 懒得自己写解密程序了,就找了一个在线工具 验证了前三组,结果相同,证实了我的猜想 结果如下: 在这里插入图片描述 忽略了符号、数字和大小写,修改一下即可 结果为utflag{d4nger0us_c1pherText_qq}

[INSHack2017]rsa16m

题干描述: When you need really secure communications, you use RSA with a 4096 bit key. I want really really really secure communications to transmit the nuclear launch codes (yeah IoT is everywhere man) so I used RSA with a 16777216 bit key. Surely russians will not be able to factor that one !

平时为了保证安全RSA会采用4096位的密钥,但他给我整了个16777216位的 wtm直接找wp 在这里插入图片描述 啊这 这还真想不到 代码如下:

1
2
3
4
5
6
7
8
import gmpy2
from Crypto.Util.number import *

c = # 自己复制
e = 0x10001
m = gmpy2.iroot(c, e)[0]

print(long_to_bytes(m))

结果为 在这里插入图片描述

结语

希望继续坚持

欢迎关注我的其它发布渠道

-------- 本文结束 感谢阅读 --------