【榕网杯2022】题目复现

前言

好久没更了,就把之前榕网杯的题目拿来做做吧,因为web没有环境所以没法复现了。

MISC

rar签到

直接爆破弱口令得到flag。
flag{1773c5da790bd3caff38e3decd180eb7}

你看见了吗?

附件是一张图片,首先hex分析,发现一个藏了一个rar压缩包,binwalk分离。而hex最后提示了一个github网址,对应了imagemask这个工具。

下载工具解图片隐写,发现一个二维码,扫描得到rar密码。

解压出来是一个word文档,全选后更改字体颜色即可得到flag。
DASCTF{hello_steganography_master}

CRYPTO

EZ_RSA

task.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sympy
from Crypto.Util.number import *

flag = b"DASCTF{xxxxx}"

x=getPrime(1024)
p=sympy.nextprime(11*x)
q=sympy.prevprime(23*x)
n=p*q

m=bytes_to_long(flag)
e=0xe18e
print(e)
c=pow(m,e,n)

print("n=",n)
print("c=",c)

#n= 7099293997597057840121358666833837753498838275854020154482887743106000287292796543920866875062689995360025217485874831332257233130287943206444475190268445255670322843664471682348256156185175655765790452094332875022809494407318056044647005041845654843080303742522260061500210481600297956451426162674923926908156645992521694195572818623774054219194331159529364179241757932761459930262573830738911713799216140111007655256112125121081747854267340976432923900792983659847629430766080521995039114172477341269935779097804051557556063477903826454634581880779164839924381664510909546228996769947966559112620828323435423467787739
#c= 3078278882403267771557339568388950410639470501469121937324913253244013904986826470346335611174822666010160930623609201021876295254455820936788078951586549877513565571795083091146694885452347963070384765951180432581796819616400782006993357703440486783144989291310259039645268226860339316323226395210408787702054635889745582356633806087632054473023928020827581196829103923740718937874920893533975613493768492615364149440810394033176498488161704634307874672531940341631965894022899665283833912182388412943227149695408964841000543086601596551360786212024360389301448828142199899595307482885969343432562999657817232668321784

这题我们可以发现随机取了一个x,而p是x*11的下一个素数,q是x*23的上一个素数,这意味着pq存在如下关系:

1
2
p=11x+t
q=23x-m

由于t与m不会很大,我们可以直到p在sqrt(23*n/11)这个范围左右浮动,利用这点我们可以得到p与q的值。

但是解rsa的时候我们发现e与phi不互质,那么我们需要爆破一下k得到m,exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import gmpy2
from Crypto.Util.number import long_to_bytes,bytes_to_long
import sympy
from Crypto.Util.number import *
n=7099293997597057840121358666833837753498838275854020154482887743106000287292796543920866875062689995360025217485874831332257233130287943206444475190268445255670322843664471682348256156185175655765790452094332875022809494407318056044647005041845654843080303742522260061500210481600297956451426162674923926908156645992521694195572818623774054219194331159529364179241757932761459930262573830738911713799216140111007655256112125121081747854267340976432923900792983659847629430766080521995039114172477341269935779097804051557556063477903826454634581880779164839924381664510909546228996769947966559112620828323435423467787739
e=0xe18e
c=3078278882403267771557339568388950410639470501469121937324913253244013904986826470346335611174822666010160930623609201021876295254455820936788078951586549877513565571795083091146694885452347963070384765951180432581796819616400782006993357703440486783144989291310259039645268226860339316323226395210408787702054635889745582356633806087632054473023928020827581196829103923740718937874920893533975613493768492615364149440810394033176498488161704634307874672531940341631965894022899665283833912182388412943227149695408964841000543086601596551360786212024360389301448828142199899595307482885969343432562999657817232668321784
a = 28871


pp = n*11//23
t= gmpy2.iroot(pp,2)
floating_rng=1000
for i in range(t[0]-floating_rng, t[0]+floating_rng):
tt = divmod(n,i)
if tt[1]==0:
p = i
q = tt[0]
break

phi=(p-1)*(q-1)
bd = gmpy2.invert(a,phi)
ded = pow(c,bd,n)

for k in range(100000):
m2 = n*k+ded
if pow(gmpy2.iroot(m2,2)[0],e,n) == c:
print(k)
m = gmpy2.iroot(ded,2)
print(long_to_bytes(m[0]))

DASCTF{RSA_1s_Re@lly_e4sy!}

AWD

这次的awd用的是超级cms,反正主办方后期疯狂种马。d盾直接把马和rce全扫出来了,直接修就可以了。然后他们学校网络有部署安全设备,我们忘了挂代理,就用手机打了,体验很神奇(。