欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020网鼎杯青龙组 部分wp

程序员文章站 2022-05-19 10:49:59
...

1.you_raise_me_up

文件下载打开是py文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Crypto.Util.number import *
import random

n = 2 ** 512
m = random.randint(2, n-1) | 1
c = pow(m, bytes_to_long(flag), n)
print ('m = ' + str(m))
print ('c = ' + str(c))
print(n)

# m = 391190709124527428959489662565274039318305952172936859403855079581402770986890308469084735451207885386318986881041563704825943945069343345307381099559075
# c = 6665851394203214245856789450723658632520816791621796775909766895233000234023642878786025644953797995373211308485605397024123180085924117610802485972584499

重点就这行

c = pow(m, bytes_to_long(flag), n)

离散对数求解

直接放到 sage

m = 391190709124527428959489662565274039318305952172936859403855079581402770986890308469084735451207885386318986881041563704825943945069343345307381099559075
c = 6665851394203214245856789450723658632520816791621796775909766895233000234023642878786025644953797995373211308485605397024123180085924117610802485972584499
n = 2**512
discrete_log(c,mod(m,n))

得到

56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757

然后根据原先代码的 bytes_to_long
再使用 pythonCrypto.Util.number 模块去转回去

from Crypto.Util.number import long_to_bytes
long_to_bytes(56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757)

得到 flag

>>> long_to_bytes(56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757)
b'flag{5f95ca93-1594-762d-ed0b-a9139692cb4a}'

我这里使用的是 网页版Sage
Crypto.Util.number 模块在 pycryptodome 库里
可去 python官方第三方库下载 对应的版本
或者 pip install pycryptodome

2.boom

2020网鼎杯青龙组 部分wp
吼吼吼 收到收到

按任意键后得到一串 md5
2020网鼎杯青龙组 部分wp2020网鼎杯青龙组 部分wp
继续,靠妖,解方程
2020网鼎杯青龙组 部分wp
上一题用的 sage 也能做 (真好使

var('x y z')
solve([3*x-y+z==185,2*x+3*y-z==321,x+y+z==173],[x,y,z])

得到

[[x == 74, y == 68, z == 31]]

输入后,又来?
2020网鼎杯青龙组 部分wp
那继续用 sage

解出后输入

?! 嗯…直接关闭了
应该要在cmd里打开这个文件的

重新来一遍
打开cmdboom.exe拖进去运行
得到 flag
2020网鼎杯青龙组 部分wp
补充个法子:用 OD 反汇编工具调试可以直接得到 flag

相关标签: CTF python