DUTCTF2023

DUTCTF2023wp

写在前面

仔细一想自己学 CTF 也一年了,纪念一下最后一次参加校赛 🥹,明年可就是出题人了 🤓。但是感觉一年以来荒废了很多时间,在很多方面对题目不熟悉,总跑偏,甚至是自己复现过的一些方法都没意识到(hint 太到位了 😭)。

Crypto

第一次 ak,好爽 😭

*老滚五

百度搜龙语,耐心对着找就出了DUTCTF{YOU_ARE_A_REAL_DRAGONBORN}

*神奇的短信

诺基亚手机,9 键,第一位代表哪个键,第二个代表第几个字母,DUTCTF{SCREW}

随机数的力量

可先了解一下 MT19937 伪随机数原理,然后看一下破解方法,对于梅森旋转算法之前博客也详细推导过。这里针对题目分析一下,首先 ban 掉了 32 位的预测方法,通过了解到,randcrack库实际上是通过收取特定位数来实现预测,例如 32 位数,就需要 624 个,那么如果使用 64 位数,应该就需要 312 个。后续只要对收取的数字进行一下处理,转成 624 个 32 位数即可。 这里还有一个疑问就是,最大的 64 位数是\(2^{64}-1\),但是如果传\(name=2^{64}-1\)就无法预测,而改成其余略小一点的 64 位数即可。

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
31
32
33
34
35
36
37
from pwn import *
from Crypto.Util.number import *
from randcrack import RandCrack
r=remote("210.30.97.133",'28032')
r.recvuntil(b':')
name=2**64-2
name=long_to_bytes(name)
print(name)
r.send(name)
r.recv()
count=0
file = open("random.txt","w")
while count<312:
r.send(b'1')
r.recvuntil(b':')
num=int(r.recvuntil(b'\n')[:-1])
count+=1
file.write(str(num)+"\n")
file.close()
print("finish")

with open(r'random.txt', 'r') as f:
l = f.readlines()
l = [int(i.strip()) for i in l]
t = []
for i in range(len(l)):
t.append(l[i] & (2 ** 32 - 1))
t.append(l[i] >> 32)

rc = RandCrack()
print(len(t))
for i in t:
rc.submit(i)
guess=rc.predict_getrandbits(64)
r.send(str(guess).encode())
print(r.recvline())
# DUTCTF{61cdf3eb-e4d9-4613-b533-ff4f7fb6c80a}

shamir

直接找脚本跑,具体如何恢复 a0 系数就不细说了。之前 hitcon 有个也是 shamir 的题,也挺有意思的。babysss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Crypto.Util.number import *
P = PolynomialRing(GF(p), 'x')
ret = P(0)
for x, y in shares:
r = P(1) * y
for xx, yy in shares:
if x != xx:
r = r * P((0 - xx) / (x - xx))
ret = ret + r
print(ret)

P = PolynomialRing(GF(p), 'x')
ret = P(0)
for x, y in shares:
r = P(1) * y
for xx, yy in shares:
if x != xx:
r = r * P('(x - %d) / (%d - %d)' % (xx, x, xx))
ret = ret + r

print(long_to_bytes(int(ret[0])))
# b'DUTCTF{23935a6d-a94d-4905-845a-aec9c8646e4d}'

ECC1

发现是 ECDSA 类型,于是现学。。。下面写一下 ECDSA 的签名与验证过程。

场景

Alice 想要使用她的私钥\(d_A\)来签名,Bob 想用 Alice 的公钥 \(H_A\)要验证签名\(H_A=d_AG\)。 只有 Alice 才能提供正确的签名,而每个人都可以验证签名。

签名

1.选定一条椭圆曲线\(E_p(a,b)\)

2.选取一个随机数\(k,1<k<n-1\)\(n\)为椭圆曲线的阶。

3.选取椭圆曲线的基点\(G(a,b)\),计算 \(K=k * G(a,b)\),令\(r=K[0]\mod n\),即 r 是 K 点的横坐标(若 r 为 0,重新选 k 进行计算)。

4.计算明文 M 的哈希,令\(e=hash(M)\),计算\(s=k^{-1}(z+rd_A)\mod n\)

5.给出签名\((r,s)\)

验证

1.计算 \(u_1=s^{-1}z\mod n\)

2.计算 \(u_2=s^{-1}r\mod n\)

3.计算点\(P=u_1G+u_2H_A\)

\(r=x_P\mod n\)时,签名验证成功。

解题过程

通过对题目的初步阅读,发现关键是求出私钥d=privkey,而想要求出\(d\)就要求出\(k\),虽然\(k\) 是以随机数的形式出现,但发现本题中每次签名过程的 k 并不是完全随机,而是线性伪随机\(k = (a * k + b)\mod n\)。这里我很想把\(k\)求出来,然后再去求私钥\(d\)。所以有没有一种可能,不用求\(k\),如果把\(k\)消掉,方程里只剩一个未知数\(d\),即可。细心一点进行数学推导,就会发现答案。 \[k_1s_1=e+r_1d\mod n\] \[k_2s_2=e+r_2d\mod n\] \[k_2=ak_1+b\mod n\] \[k_2=ak_1+b+xn\] \[s_1s_2k_2=s_1s_2ak_1+s_1s_2b+s_1s_2xn\] \[s_1(e+r_2d)=s_2a(e+r_1d)+s_1s_2b \mod n\] \[d=(s_1r_2-s_2ar_1)^{-1}(s_2ae-s_1e+s_1s_2b)\mod n\]

这里两次的使用的\(e\)一样,是因为传的明文一样,\(n\)对应的是题目里给的\(order\)。这里还想说一下自己因为不细致走过的弯路,题目里通过\(p\)定义的曲线,所以误以为\(curve.order\)\(p\),这样就会导致前两个式子和第三个算式的模数不同。有趣的是,找到了一篇论文和文章进行了实现。 论文 但其实\(curve.order=order\)所以上述所有都是在模\(order的条件下\),所以进行一下推导就出了。

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
from hashlib import sha384, sha256
import gmpy2
from random import randint
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
r1=3279878223466283028618950233302638071226405889025719666069973709805626015547691183378582347284741486262757601498554
s1=17384499590667625694725422408289434727888355224304513038330377593191514147527427495591599008735913255202229321517643
r2=35791573017068929691265773591779771913506228775796561985255300322790112181066670265127516180574601131688667017030763
s2=10828760915074235995526547174613537265169576586247069263719047150071416454765113291660131007073071569964390274403778
order = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973
a = -3
b = 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef

m=b'12'
e= int(sha384(m).hexdigest(), 16)

d=((s2*a*e-s1*e+s1*s2*b)*gmpy2.invert(s1*r2-s2*a*r1,order))%order

privkey=d
ct="Iq2XtaYU4TrhdPN6Icyy4r5FQQRn4u/QY7Rv/GTMeo8mNESW7UMcHO969aP28owj"
key = sha256(str(privkey).encode()).digest()
aes = AES.new(key, AES.MODE_ECB)
flag = aes.decrypt(base64.b64decode(ct))
print(flag)
# b'DUTCTF{03c77266-981a-49c7-985c-427dea8c3018}\n\x03\x03\x03'

ECC2

hint:二元 copper 看到 hint 瞬间知道怎么做了,前段时间刚学了一下多元 copper,感慨一下还是运用不熟练,没有一眼发现。

解题思路

同样是 ECDSA,相比于上题来说,k 是随机的,但是每次签名的时候会泄露 k 的高位。此题另外一个关键是,\(r\)是由私钥\(d\)生成的,所以不管传什么明文,所得到的\(r\)是一样的,利用这一点,我们可以构造一个二元方程。 \[s_1k_1=z_1+dr \mod n\] \[s_2k_2=z_2+dr \mod n\] \[k=kh+kl\] \[s_1(k_1h+k_1l)-z_1=s_2(k_2h+k_2l)-z_2 \mod n\] \[f(k_1l,k_2l)=s_1(k_1h+k_1l)-z_1-s_2(k_2h+k_2l)+z_2\] 随后使用多元 copper 进行求解。具体可看上篇博客。

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from Crypto.Util.number import *
import itertools
import gmpy2
import hashlib
def small_roots(f, bounds, m=1, d=None):
if not d:
d = f.degree()
R = f.base_ring()
N = R.cardinality()

f /= f.coefficients().pop(0)
f = f.change_ring(ZZ)

G = Sequence([], f.parent())
for i in range(m + 1):
base = N ^ (m - i) * f ^ i
for shifts in itertools.product(range(d), repeat=f.nvariables()):
g = base * prod(map(power, f.variables(), shifts))
G.append(g)

B, monomials = G.coefficient_matrix()
monomials = vector(monomials)

factors = [monomial(*bounds) for monomial in monomials]
for i, factor in enumerate(factors):
B.rescale_col(i, factor)

B = B.dense_matrix().LLL()

B = B.change_ring(QQ)
for i, factor in enumerate(factors):
B.rescale_col(i, 1 / factor)

H = Sequence([], f.parent().change_ring(QQ))
for h in filter(None, B * monomials):
H.append(h)
I = H.ideal()
if I.dimension() == -1:
H.pop()
elif I.dimension() == 0:
roots = []
for root in I.variety(ring=ZZ):
root = tuple(R(root[var]) for var in f.variables())
roots.append(root)
return roots

return []

p=0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973
z1=48635463943209834798109814161294753926839975257569795305637098542720658922315
s1=28960557153977955124105855928246892459194129539041010907864680412903817675556585052129118747753883286132889323816650
r1=10262329650789864528165246046678664604936098138502587549051188712903293032192883286179241289544424703403302125420513
kh1=30054462723734257949377771041701920514235184485792075736773676269952584122368

z2=96094161643976066833367867971426158458230048495430276217795328666133331159861
s2=32768223277193629352710157834142251230132284853883889815139295450898873765110205447982974111022207901310306828066654
kh2=72175458450676302934456504495778373001580390042980746283386923644015828008960
P.<l1,l2> = PolynomialRing(Zmod(p))
f = s1*(kh1+l1)-z1+z2-s2*(kh2+l2)
roots=small_roots(f,[2^123,2^123],m=4,d=4)

k1=kh1+roots[0][0]
print(k1)
d=(s1*k1-z1)*gmpy2.invert(r1,p) %p
print(d)

ez_RSA

hint 1:论文

hint 2:

1
2
3
_P = getPrime(512)
_Q = getPrime(512)
_E = getPrime(128)

解题思路

通过论文,前半部分白给,按照论文造格,即可规约出\(_P\)。 接下来的问题就是如何求\(_E\) \[c=rh+m \mod p\] \[h=f^{-1}g \mod p\] 将一式带入二式 \[c=r(f^{-1}g)+m \mod p\] \[cf=rg+mf \mod p\] 因为 r 是 1024 位,g 是 768 位,f 是 1024 位,m 是 128 位,p 是 2048 位,所以 \[rg+mf \mod p=rg+mf\] \[cf \mod p=rg+mf\] 两边同时对\(g\)取模,即可消去未知数\(r\),得到 \[m=(f*c \mod p)*f^{-1} \mod g\]

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
31
32
33
34

import gmpy2
from Crypto.Util.number import *


N = [24488505552230772703898405057744092798020197662887100045928566607461798879415998969433911671592867423691193007893212171790448148496033832249754470467035859576039972852765027824033483902812925380301406741140813221150182954931965513380139064574526788102105668393014229432860117219535402978106934989998539012187109667064745849634399649647736413364618806713226228056106971513481416594701372170640645464293015870036724187258748076791656956875094445695553182473517994436554776090668857119474259698867998753960189992604478465847990459188823363076285013562416943842050784320042575258091833845135161380009815903587838764844701, 21942338208435084182385640211704681707801054068614769447992577290797559734360545040045515934790906815025864580810713391648536011436866691247019862082665443291278436035391244597094754164488282306715119916684441028200752060845757620891120126278315497677949907573669523197492597821720339218427123565023326747131520068041684678463047030113730829126604863370010551660281077018828022548643645226108297487424616446107497927195470395775786882432946367941603909313849788734757826143420030667354373800077810995031850751976273876305078673953634214542034076821701690757305733970718313282246021719246282428899044959387451493813721, 23497668455233023777086339110715316747963597549643382192342253292465976405928871970112373689839058903850148485020472785615984665835691940413204367982444656171214501783518611386935865837214185153287455312882873758597381603828243325547041133407750654379328638375958886679826484549746013150412316456105776249088635607093923492322952956766124054779608085768835524352691098655090967034048099181640575487096512809322011207592050807314037459121218823863349190706610153922549826130316241130228507499742267531513164868277365453995102439631325485240239658064278370772323955597197097645462559462696920075736717500412375072176467, 24602752336390525414690399431651054304570268658699514976379562458281671118195956305892712759109048179159883455858696847532969723511866788216663843505906403537667342180926673360088955074821393941870156428046985578754285100772721826939367053016610705219388473954106242835781778652607226825374256068393417345461655468867721352760378170127520095819323941371368236422448970366651248269187025683922130051664854342633071652748279316861774478515760339148013907026473066156906456471149913011825141372049833977982484234333570458678135686171332929999460166919896376717386857118613691507888393949301977627819777979592178896966623, 18953499185208189736030572848209776079906463657279533180726462147347299551041367061731767581264798291046925335336327748600462387056921448905471076513661226975709082926810559345546174299411679334921753473024289680372398629669189901701373013365576241051181536865537903618404021542712933154242921449622232452683929678888579145745315642541459705378712865701616368909067164933131032658834080355333776051792137130753989546439723368685913285626433094254606871447681788888268092549602747826573836417735293177348298419537651913321751942895245511550484631808345929882169885236619551016828298778897908525366562962685667912389997, 26058997074784206404795420975966370332956308684314157918342868748891408356160719486198464051733976893317939197082091977103538589213919661919071445422553112631329635223235217838410237178255375880503961177672498539855597740321555211143834639913980706595866117350864736716804583363460558182596815041999893879570562385793992073242663001875888252374638338786999498583269912809638941228890064879230976750529250265485928246165002061153079962922548580197649819298400367411220374463545622395097310522274479190791404838638086998257879095579646234740048206108128561416400963440017838636610491341835198236244222159900729586179917, 20129288490597244863994508524683286916543923374256909422701726115895380145135775471811451623704583730973416890276995662068307971557772661682030720361327963488534216410626882836351191572216702896255347307172468393873617456534444076131643183095198850704362841759392439604384236671314273401344802110069810756951497132798868529183844409689240676486910668076940982100512452093237882154916463456686838284295430539114311525041035893514486445447797574059480052756975515999613849122461978469862438350168200833428502345669466715840072957576654100577765563579448919948971960189182499058054213819157835509700663218459190524786481, 25772226888628216378889012105665796465806282302724456587869873910973423334812434127373733072599928022616753628676669330475503814215217145564188824369324420571202597054472716155179526532355187639821238629970447579319002750207485409261447903974934743921421644358692562332522542087034591326117205324672579857803562028718153429724027759486210144857662620406921986137992325725929734137942692560079628569267164743942853035640478323806095958927790086262013882385080985080476481526342090748836288133196655325636773255199453976910823102554721967925125346896277653138394770159352125883696418264884829676269343523006494765489493, 28180917678264096364213130554312518769321694756137354982942466799600070334989648086800577578199737775401103316802639534494851192425673873971245152762518574367704605203711578476934662035721848792226778740807648983742493303616228706844886115523257289936262329494196476301758716578131772761063410479805704963231509036888772912085068364409900628643478825960092268089737383336074494922924828657292311276635453573546156537729462748165148899289836500996916977979364330535388109166791384761518107152445520068189599143970118706438070727813977600299673995541318641712212956428068655583090081599129833822672148472274657395494311, 24096520981594733135540041445045293573841960767599910205052334165000928248824939510537161616790497646941116274229120870236655788506537976075387985908332620383393482411221069123523398118152293411915859727395926627459816089411701261045912226055104998834013378345004735522524517047738956815571358744380828133660488637141981661993087692525146337627421105058036188111847939723347406549254328070707781083013868559585263821261988100254326668273025331949480627178076069223680391626817412433551120273746233452706538363782378142581856137151539947066350167731639115192474458725211790700741814914076862192417315078235105797677087]
e = [14990816743505654628622165338185393514788304851681933876648378016378133833004552588239572072513331166211546424386679543805403883223923897158291656742820659945559107645757683415181516223375888892537454654274671604670730747216886153077537316948532577370868893079392334339867710645123984583810773407647889550347449753485123831550537129872419324613572762662943117457398292227733753412373200584443331215704089181076331725835197653425535473266783470265927502335277809501441179341787793626320140280547900249747914540629687582748709954430668955769537357213201938032236484707582662514737019038265736833188979186130912521585863, 13980763827627068753802142437506147756961327147120384846585792065753477874831749262150192356232427534646403824833533108774540560060637613211774874146149413276494249299817871570564680188453788941137026336224153892313514846782554574856039742426326880334039809963027869250565380677631559930557470002669597495218354140744423266568608599391371104543521898824208746495592540223292285013253969918044073047052609539584913355840849256854717119937629706258126113370733925178495605830457126093047938416483351881694926018583377081560677662700573997147306413923358544678275002331286891558769920350415867546838176106256496063304591, 14780579063990891009355254665451991842503160008305503704320535457678300669711337036613671205753152064334928698447349080369975612980241221790534610771459317421130389318122536272425617948089698175341164528907013863717279614308846442304043798865582825561326523712699604113706443659794242165306104800524140375312705427738731082746546483455937494834598516633798602613773983973082013405488005834441952593810114149056842051193479897318422863626404580404473988124447913889995503058357464905293074956766641790136082627384940112558905750637675896060873962861100183982056080416496196938621664845449511253953693501170360085128903, 16711214191457281887756669342902780733937448803879374453283083153045867559930627177819085640533933761065820583745596344138637603092032409736562935244419493366400643159102093212367352079844413274114447848612728357893278528717959336656627368619208606671105396151558788997816807664937857266355753831602315622410363783260969617861338922264348857939060068689390352416811884902181820721198554329654234974727685100909871157125199506067300247610609375498829939581959252431781213219581899029244337677995603856416381628617372391009770342970567780661612096558829742694823690274654577788829371605600329173594776863959477520982103, 18594117439975066482790234032790248484174823520961644528083330915871018572967431566501699139228578176001011256220804587663135499149059407383901633734350030924262764120967872313971006208598335484653360543538290425602814914998281169215776238281191659744867774608489555339417931965559389905685260689276642846548237827078605788634420231309087514322505420366400886676286045230690585373663959941903912684043605972772430437021974723246305737570908098822722309519738296040046616628592027960453261069541838924103183139583780034839530714165332756110278585636399031079295623434558699098474195076126900986950380911451241239011623, 19559194708926966384760572911017873704390901879016615709461235634857479293981826218552827124678431912373841237544670086117088143163449428902590870488332804443126943800454719812933352578428975217906573009588458046733219592409163112257629384965561668227155289274870789279692570923323341070702638493390067659325308762774741975186341363197445143155212450927975486461028431348416961669886795040925540481784741277337652763782276077736249466953316651582151597935395446083479237519148263818662252163299112568786641111937462894974201544836218414635476953190320368111973284227681772063712004605784879340270632621230933987836403, 5824897109429461861038559948506819313355946138347155891819686064252333158962143819073087399430296860592162523314581575301694562287944866650117694395235555843552189332034264692080727548447621159473572891967606750661558342895087758387175261905746359083324985663989695094130538863365332293493187900142223849133010181832891103712795299278734353222329578233927239011173519663168582557337156776620015916288674042041517496559833923719141125286924436626406982998776488087846464518298748666520211469343659082499491328257233064132961965360640582912978294198510457897250297734712016272553820127075579291175789492076788909484903, 20093930684870093704403628731447520798260787667650361930073915794127380334852577783044260869395685576326078666945720832081037254077260101666695730827561930288288626012593987518548527306424423460475649408280260551546890648986667166140359311359169025356693571920643668500080642858683961398169608007993750190342851289303457474260980188486985907096713430933611341247919058812281901199513792393764217087020138671598226265365230063697174126442928938906561077393855304164795051437164668523033528227661541499372034727485518105697908307910643724070408695313764548498315363035914104961938999577929197200252814942475110976180871, 13869037204167094886192017467762072572783689922376209408114704992930196660451733740128770089390429756385424487822227154417591526218831614700313009517560442765341004656007062383066045588028985918307953894476640133705870038747226187376945281065288052642888278440278584213451675290377535235274143342509678251099489519546607275875817452579354452528872170870264159683907581449035523356408903151369434094661409904630205371744727229020444462773195914556915394012165505241756167908324547409015797008797997989972788159358702567092724994056441270029746996952711879409266397452428164494981358551995284408128900801847197898197703, 16428914441257851380586127106058764321964408189162357989041855273182059205104249998708456730725826756916884625752948925439260021807286451208792938938383227370712775700520945386124870496736574155128284017251496087747219850551258429445192925803640362009834613809916245072076167924064602020863892399904864291654032814159981274305358311150518930746678429624443100376055916453000181475668378167017592583982166064823738703442241236483326956657714675862739661758651886000087664689028808007926485550765412244122793538316265219584816933243708850098752213795555147857155308284006310944783836011777029728050734557927695090450463]
h = 17057560302480534379234311167711354032439973325482676122782839023838935814408613403284668375931576462858905421541683065236603421317254300086508655626651873266040666001440382609416143327328595694650892654181322169131419137499521806171136667190680286550054757614439176120722968245637537762536027151112462471175128228332115872386914009028917282712969864162014534349894097630435981616397927996659304774192119923204194457170407620951605854984132096323757248091094843032025335275329879498464954795905069479922445973408638012299137799439137333602346053104379692214857680138658746271359584207903024337671041791120368370062433
p = 23179145952004786572757983799234920430633779535677420935312084200876619976669209523097965011942953301009181896712798356246795541216866485028100154585670368454638903095414689361363165856795506643767180784134469175448265110332780161626935638201727064861000660550974538859215360585812084437914540257823591140036538883159605868368631634046489596162666365138195416471349119538264390305637634631928131927917205635961354890675410476331906772088716752701051345455548022086136550213407689965095213596763864324407875037568058288772731307077778493908925797859779443512010698291195779124551476846827399730849219310626324177039013
c = 15328778973393120290854691400883441405718565831853248832402785901824594060217263898505045095423915117607252735027062529235271181273369158106663012261516839968695274180392897131714116184427167484636074174222379080262947055141246928560805523812182030937490501937675882728123658706241797231583047415776685427205848679710458819937970889433693918217229443853850611378434132748815873718734347796950384002864988580300986131985895380275684001917985319042538513477446695790524025775222264595925792957208966818239868486709939779314546467392281422991680454815958889806132331710070011646205598326181711484973483426663596859525513
ct = 92211459133895146158316008050625159602789832393085884570037939094818571988249290759248366005098334922507923902443804233324386547155962452204674766600765935956870916648760769384276856753284267120760668354671997896119514989451662121408491558308921051289732075282614190244970934960030795710538169872218350493341
# 求E
M = Matrix([[1, h], [0, p]])
fg = M.LLL()[0]
f, g = abs(fg[0]), abs(fg[1])
a = f * c % p
E = a * gmpy2.invert(f, g)%g
print(E.bit_length())
# 求P
t=10
B=Matrix(ZZ,t+1,t+1)
M=gmpy2.iroot(int(N[t-1]),int(2))[0]
B[0,0]=M
for i in range(1,t+1):
B[i,i]=-N[i-1]
B[0,i]=e[i-1]
Blll=B.LLL()
P=int(abs(Blll[0][0]//M))

phi=P-1
D=gmpy2.invert(E,phi)
print(long_to_bytes((pow(ct,D,P))))
# DUTCTF{RsA_1s_rS@_aNd_1att1ce}

misc

*签到

b 站 21 级 pwn 例会评论区

我在哪

放大图片看到十八中,搜索临江十八中,发现是重庆十八中,地图上搜一下附近地铁站,挨着桥的就是,曾家岩。

不要更新

流量分析题,wireshark 里过滤一下 http,找到 github 网页 根据 hint 查看历史提交记录,发现假 flag,对于密码手来说一眼凯撒,移位 13。

web

*Trenja

F12 打开开发者工具,搜索 flag 字段即可。

pwn

*中间人

太好玩了,原理是汽车滚动码。bob 来开车门,截断,开门失败。bob 再开车门,截断,发送第一次截断信号,bob 开门成功。bob 离开,我们发送第二次截断的信号,打开车门!

reverse

*贪吃蛇

拖入 IDA,alt+t 搜索 DUT 即可

*GAME

下棋赢了就出了


DUTCTF2023
https://sch01ar.github.io/2023/03/28/DUTCTF2023/
作者
Roo1e
发布于
2023年3月28日
许可协议