引言
无
signin
一看题目,签到题
附件内容:
welcome to crypto world!!
密文:424a447b57653163306d655f74345f424a444354467d
密文十六进制转码就行
代码如下:
from Crypto.Util.number import *
s = '424a447b57653163306d655f74345f424a444354467d'
print(long_to_bytes(int(s, 16)))
crypto-rsa0
拿到一个压缩包附件
解压的时候发现:
嗯?不对劲
再把里面的压缩包解压
嗯?
给了一个提示:怎么办呢,出题人也太坏了,竟然把压缩包给伪加密了!
额。。。
什么是伪加密?
参考博客:https://www.cnblogs.com/0yst3r-2046/p/11890498.html
阿巴阿巴阿巴
绿色框住的 50 4B 是压缩源文件目录区 ,它对应的绿色框柱的 09 00 影响加密属性,当数字为奇数是为加密,为偶数时不加密。
阿巴阿巴阿巴
好家伙,只要把 50 4B 后面的 09 00 改成偶数就行
然后就缺工具了
网上下 winhex 各种出问题
经过大佬指点,搞了 010 editor 的破解版(欸嘿嘿~)
然后搜索 50 4B 把后面的 09 00 修改即可
一个小插曲:
解压之后得到 RSA 加密代码:
from Cryptodome.Util.number import *
import random
FLAG=#hidden, please solve it
flag=int.from_bytes(FLAG,byteorder = 'big')
p=getPrime(512)
q=getPrime(512)
print(p)
print(q)
N=p*q
e=65537
enc = pow(flag,e,N)
print (enc)
啊这,p,q 都告诉了吗
直接解密就行
解密代码如下:
from Crypto.Util.number import *
p = 9018588066434206377240277162476739271386240173088676526295315163990968347022922841299128274551482926490908399237153883494964743436193853978459947060210411
q = 7547005673877738257835729760037765213340036696350766324229143613179932145122130685778504062410137043635958208805698698169847293520149572605026492751740223
c = 50996206925961019415256003394743594106061473865032792073035954925875056079762626648452348856255575840166640519334862690063949316515750256545937498213476286637455803452890781264446030732369871044870359838568618176586206041055000297981733272816089806014400846392307742065559331874972274844992047849472203390350
e = 65537
n = p*q
phi = (p-1) * (q-1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))
结果为:actf{n0w_y0u_see_RSA}
结语
希望继续坚持