题目:https://pan.baidu.com/s/1rvUK_az2iyuQNIANMF4vnQ
提取码:qfm3
题一:
1、压缩包打开,需要密码。没有其他提示,怀疑是伪加密。用winhex打开,发现没有被加密,且有点混乱。
2、怀疑压缩包被损坏,用winrar的修复功能,修复后,即可打开,发现flag
(强大的360压缩,直接打开就好了)
题二:
1、做过一道类似的题目,一味的认为是那种方法。以后可不能这样了,这tm可真活。
2、看题目名字,搜一下,用那个软件打开就得到flag了,当然也可以用360压缩。打开可以看到flag。
题三:f1}l_t!ahstg@_h{er9yi
排成W型即可,为什么?怎么发现的?你猜!!!
题四:
Medium RSA
已知一段 RSA 加密的信息为:0xdc2eeeb2782c 且已知加密所用的公钥:
N=322831561921859 e = 23
请解密出明文,提交字符串。
比如你解出的明文是 0x6162,那么请提交字符串 ab
提交格式:Flag{明文}
1、什么是rsa?怎么解?
脚本在这儿,我不想看
def fastExpMod(b, e, m):
"""
e = e0*(2^0) + e1*(2^1) + e2*(2^2) + ... + en * (2^n)
b^e = b^(e0*(2^0) + e1*(2^1) + e2*(2^2) + ... + en * (2^n))
= b^(e0*(2^0)) * b^(e1*(2^1)) * b^(e2*(2^2)) * ... * b^(en*(2^n))
b^e mod m = ((b^(e0*(2^0)) mod m) * (b^(e1*(2^1)) mod m) * (b^(e2*(2^2)) mod m) * ... * (b^(en*(2^n)) mod m) mod m
"""
result = 1
while e != 0:
if (e&1) == 1:
# ei = 1, then mul
result = (result * b) % m
e >>= 1
# b, b^2, b^4, b^8, ... , b^(2^n)
b = (b*b) % m
return result
def computeD(fn, e):
(x, y, r) = extendedGCD(fn, e)
#y maybe < 0, so convert it
if y < 0:
return fn + y
return y
def extendedGCD(a, b):
#a*xi + b*yi = ri
if b == 0:
return (1, 0, a)
#a*x1 + b*y1 = a
x1 = 1
y1 = 0
#a*x2 + b*y2 = b
x2 = 0
y2 = 1
while b != 0:
q = a / b
#ri = r(i-2) % r(i-1)
r = a % b
a = b
b = r
#xi = x(i-2) - q*x(i-1)
x = x1 - q*x2
x1 = x2
x2 = x
#yi = y(i-2) - q*y(i-1)
y = y1 - q*y2
y1 = y2
y2 = y
return(x1, y1, a)
def decryption(C, d, n):
#RSA M = C^d mod n
return fastExpMod(C, d, n)
p = 13574881
q = 23781539
n = p * q
fn = (p - 1) * (q - 1)
e = 23
d = computeD(fn, e)
C = int('0xdc2eeeb2782c', 16)
M = decryption(C, d, n)
flag = str(hex(M))[2:-1]
print d
print flag.decode('hex')
知识点:
1、判断文件损坏,修复文件