0%

BUUCTF 每日打卡 2021-4-19

BUUCTF 每日打卡 2021-4-19

引言

signin

一看题目,签到题 附件内容: welcome to crypto world!! 密文:424a447b57653163306d655f74345f424a444354467d 密文十六进制转码就行 代码如下:

1
2
3
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 加密代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 都告诉了吗 直接解密就行 解密代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
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}

结语

希望继续坚持

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

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