BUUCTF刷图记录

rsa0

题目:
他题目给了一个命令,然后用Kali 建立nc链接(netcat) ,输入命令:
得到以下的条件:

e=9914617

p+q=22097350165474156852661778152708486386910482478881910841952380475041214967985772239921394728144183944713372976250538064685000688036828406289385076445995800

p-q=-2098552216956720869866544050119942539099983408354064966610734531191223066775425866686667714716099501846885428464256786303379398342894150375894240474813178

c=42159804827875117677014676284854956217849599960931202183806496871745420401291952449260942324353222722266149845494028002597148833239957850895366110856986722964419518506459408174635425411907276842845338807306874209473557708949962967982162125956433721944716323618602138750983156282817624763755989791994224208297

flag=??????

解题思路:题目条件给的相当充分,所以直接写出python脚本:

import gmpy2

e=9914617
x=22097350165474156852661778152708486386910482478881910841952380475041214967985772239921394728144183944713372976250538064685000688036828406289385076445995800
y=-2098552216956720869866544050119942539099983408354064966610734531191223066775425866686667714716099501846885428464256786303379398342894150375894240474813178
c=42159804827875117677014676284854956217849599960931202183806496871745420401291952449260942324353222722266149845494028002597148833239957850895366110856986722964419518506459408174635425411907276842845338807306874209473557708949962967982162125956433721944716323618602138750983156282817624763755989791994224208297

p = (x+y)//2
q = (x-y)//2
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(bytes.fromhex(hex(m)[2:]))

答案为:flag{2b010b75-6e35-4777-93e7-886e3bc47e0a}

BabyRSA

题目:p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
(p+1)(q+1) : 0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
e : 0xe6b1bee47bd63f615c7d0a43c529d219
d : 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
enc_flag : 0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a
解题原理:
p+q和(p+1)(q+1)已经给出,利用数学原理可以求出pq和(p-1)(q-1),然后就可以求出flag
代码:

import gmpy2
import binascii
a =0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
b=0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
e=0xe6b1bee47bd63f615c7d0a43c529d219
d=0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
enc_flag=0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a
n=b-a-1
phi=n-a+1
d=gmpy2.invert(e,phi)
m=pow(enc_flag,d,n)
flag=binascii.unhexlify(hex(m)[2:])
print(flag)

flag为:flag{cc7490e-78ab-11e9-b422-8ba97e5da1fd}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值