xorxorxor
题目描述:
Who needs AES when you have XOR?
challenge.py内容如下:
#!/usr/bin/python3 |
output.txt内容如下:
Flag: 134af6e1297bc4a96f6a87fe046684e8047084ee046d84c5282dd7ef292dc9 |
由于密钥只有4字节,且flag的前面的内容为HTB{
,据此可以求出密钥,exp如下:
flag = '134af6e1297bc4a96f6a87fe046684e8047084ee046d84c5282dd7ef292dc9' |
$ python exp.py |
RSAisEasy
题目描述:
I think this is safe… Right?
challenge.py内容如下:
#!/usr/bin/env python3 |
output.txt内容如下:
n1: 101302608234750530215072272904674037076286246679691423280860345380727387460347553585319149306846617895151397345134725469568034944362725840889803514170441153452816738520513986621545456486260186057658467757935510362350710672577390455772286945685838373154626020209228183673388592030449624410459900543470481715269 |
由题目脚本可知:
从而得到:
对于$n_3$,有:
从而有:
求出p、q、z,便可按照rsa流程解密密文,exp如下:
import gmpy2 |
$ python exp.py |
Quantum-Safe
题目描述:
I heard Shor’s algorithm can do all sorts of nasty things to RSA, so I’ve decided to be super modern and protect my flag with cool new maffs!
source.sage文件如下:
from random import randint |
enc.txt内容如下:
(-981, 1395, -1668) |
题目脚本使用了一个pubkey作为加密矩阵,flag中每个字符转换为ASCII值后,与两个随机数组成一个三维向量,然后通过加密矩阵做了一次乘法,最终加上r之后得到向量v。
有:
其中$random_1$和$random_2$为randint
生成的随机数。
可以发现,根据enc.txt中得到的结果,我们可以穷举出所有的可能来得到r,因为对于flag的前四个字符是HTB{
,并且后序的flag也是明文字符,而且随机数的范围是在0-100之间,exp如下:
import string |
$ python exp.py |