密码CTF

一、.[SWPUCTF 2021 新生赛]ez_rsa——RSA、MD5

1.题目:

p = 1325465431
q = 152317153
e = 65537
计算出d,将d用MD5加密后包裹NSSCTF{}提交

2.python脚本

import gmpy2
import hashlib


p = 1325465431
q = 152317153
e = 65537
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e, phi)
print(d)
# md5加密
md5_hash = hashlib.md5(b'43476042047970113').hexdigest()
print(md5_hash)

二、[羊城杯 2021]Bigrsa——共享素数

1.题目

from Crypto.Util.number import *
from flag import *

n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537
m = bytes_to_long(flag)
c = pow(m, e, n1)
c = pow(c, e, n2)

print("c = %d" % c)   # 以整数形式输出c

# output
# c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264

2.题目给了两个n,检查一下是否有不为1的公因数,如果有,说明是共享素数

p = gmpy2.gcd(n1, n2)

10210039189276167395636779557271057346691950991057423589319031237857569595284598319093522326723650646963251941930167018746859556383067696079622198265424441

检查后发现是共享素数,之后求两组d,phi,在题目中c发生了变化,根据题目逆序求解即可。

3.python脚本

import gmpy2
import libnum

n1 = 103835296409081751860770535514746586815395898427260334325680313648369132661057840680823295512236948953370895568419721331170834557812541468309298819497267746892814583806423027167382825479157951365823085639078738847647634406841331307035593810712914545347201619004253602692127370265833092082543067153606828049061
n2 = 115383198584677147487556014336448310721853841168758012445634182814180314480501828927160071015197089456042472185850893847370481817325868824076245290735749717384769661698895000176441497242371873981353689607711146852891551491168528799814311992471449640014501858763495472267168224015665906627382490565507927272073
e = 65537
c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744554974358264


p = gmpy2.gcd(n1, n2)
print(p)
q1 = n1//p
q2 = n2//p
phi1 = (p-1)*(q1-1)
phi2 = (p-1)*(q2-1)
d1 = gmpy2.invert(e, phi1)
d2 = gmpy2.invert(e, phi2)
m1 = gmpy2.powmod(c, d2, n2)
m = gmpy2.powmod(m1, d1, n1)
print(libnum.n2s(int(m)))

三、[UUCTF 2022 新生赛]爱丽丝梦境的兔子——在线网站

1.题目:一只没有钥匙的兔子背着社会主义核心价值观跳过6排栅栏

U2FsdGVkX19ixL7s5HryOhyL5oSScYGNVBVWl+sUMYQwTRniXreqeSp/iTHtkcxt
qicNL4xpHc5X34Daat7ixqkZMpU4JV9USOKKTAw9HJfGnoDzFF/JY0gzJpxgmW1X
4nXktQ4J7OM14EMcTrhPDIOfG2VDJr4yViWc/vNS8np1IFeIRXMoWGAJHuI8IOVG
tXi2JX6hTseYkJc2LGHJkLQ0WDW67RyhPC3vOwmJHOs/wMefWCaYteoQYOCReltm
FYuuibegOvFSUl1f0Tu7488mBHNjTrDSC76HjgxJJ6h9P36mLucQUBiFMyjLe0k1
+TTb39iMaGCuPiDb0UoAcAZPolz7RCeXqZOdzcJsPIFK/tcFLGeOPJTfFhJiwga6
cENO7pqeIB1qsRqEjyO4m4wgkhugdcs10CCevOJxNiQaWtv/FIOw9oCi5Q0VP+C9
qXZbuQ==

2.根据“没有钥匙的兔子”推断是rabbit加密,使用在线网站解密后的到社会主义核心价值观

公正公正和谐和谐平等诚信平等法治和谐公正友善公正公正诚信文明法治自由和谐和谐公正民主公正和谐公正友善敬业自由和谐公正法治和谐富强平等诚信平等文明民主法治友善平等公正诚信和谐法治自由法治诚信和谐平等法治公正平等法治敬业

继续使用在线网站解密,得到f3_sllt3acoCg0_!{mt}Wey,根据提示6排栅栏,设置每组字数为6解密后得到flag。

四、[LitCTF 2023]你是我的关键词(Keyworld)

1.题目:YOU are my keworld。

2.根据题目推断是关键词密码,关键词是YOU,通过在线网站解密。

3.

五、[鹤城杯 2021]A_CRYPTO

4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35

有数字和字母,且没有等号,猜测是ROT13,解码后得:

4B595954494D32515046324757595A534E52415653334357474E4A575955544E4B5A4D46434F4B59474253464D5A444E4D51334557524B5A4F424944473542554B595A44534B324E49565746515532464B49345649564B464E4E494543504A35

发现字母范围是A-F,判断是base16,在线解码

KYYTIM2QPF2GWYZSNRAVS3CWGNJWYUTNKZMFCOKYGBSFMZDNMQ3EWRKZOBIDG5BUKYZDSK2NIVWFQU2FKI4VIVKFNNIECPJ5

只有数字和字母,没有0,1,猜测是base32编码

V143Pytkc2lAYlV3SlRmVXQ9X0dVdmd6KEYpP3t4V29+MElXSER9TUEkPA==

有=,且有0,判断是base64编码

W^7?+dsi@bUwJTfUt=_GUvgz(F)?{xWo~0IWHD}MA$<

有很多其他的符号,尝试base85编码,得到

flag{W0w_y0u_c4n_rea11y_enc0d1ng!}
 

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值