BUUCTF 每日打卡 2021-4-19

引言

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}

结语

希望继续坚持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值