256 words
1 minute
World Wide CTF 2024 Writeup
NameCategorySolved?
Simpler RSABeginners
BongcloudMiscellaneous
World Wide FlagsMiscellaneous

Beginners#

Simpler RSA [50 Pts]#

Description#

Author: yun

RSA is so complicated! I made it simpler.

Solution#

We are given a python file

from secret import flag
from Crypto.Util.number import bytes_to_long, getPrime
flag = bytes_to_long(flag)
p = getPrime(2048)
q = getPrime(2048)
c = pow(flag, p, q) # i believe this is the fancy rsa encryption?
print(f'{p=}')
print(f'{q=}')
print(f'{c=}')

This code calculates using the equation below:

c=flagpmodqc = \text{flag}^p \bmod q

We can retrieve the flag by inversing it to:

flag=cinverse_pmodq\text{flag} = c^{\text{inverse}\_p} \bmod q

Solver:

from Crypto.Util.number import inverse, long_to_bytes
p = 20322136122026329892580404875086132520732558134579258531781672192065024437324055172065343417524169304918928056147680414370351055409439818026607876517460045945556933456319117456860928521423787112252544266864178773974904640732880445449138842965327995838722222110164109025916914430044528254715080648900354468118393295346137198518513075775514617222780524163798065365970392865107270392212968677531885628998155305428785133820145555740608026626724539584106018453003156159305252013173659975815845286802275956807162426425721298560633326719023970391963404981189820163950120529861779878077006530640930032570206978446007206971761
q = 19097560527100693557502945814016176943507375936656621847599300620729196257594977906326233653252987169303598004653720974045696589437233399711658994040877123702369987961301047714594623670674571987772814959679153558360152976652255742578324469478560556855210734037861198243000935281050776548747455717266013266531885744852759548255091579407464355390341944708706006878618904548103612995804547530724085856234186750409404880456083750984829553552127853848824218180459231650990529456828407224866655873224370892839628814748212142246752082561042142636866939231370987974125358875253454199574864895153300338298982667319003886687691
c = 4281681357519343869235268029657832985104802601857889851833662824770073601279722389949102805423012693423900316266993146428480448851806951090530135683459342224839031144425810971344588481297094697047852347659595441639804230546879345999083627138617034295731725402645279785129174304818023129638779656619113578465655082808462489379872294929944719545647280271454196700396004152529288987570497804498041888697213294509916951489315431831556860863264254674452235360890586742441263188663158067860877772336480637257856658858967478284817730555629113613134338975168062044831796369552664256963808360408525644200922627703094455580032
p_inv = inverse(p, q - 1)
flag = pow(c, p_inv, q)
decoded_flag = long_to_bytes(flag)
print(decoded_flag)

Flag

wwf{ju57_u53_l1br4r135}

Miscellaneous#

Bongcloud [153 Pts]#

Description#

Author: yun

Are you a true chess master?

nc chess.chal.wwctf.com 1337

Solution#

When I connect to the netcat connection, it says that we need to win 3 games of chess to get the flag. Since it has no timelimit to the connection, let’s just spam the best move for each condition of the board with the help of Chess Bot

chess

Flag

wwf{y0u_4r3_4_7ru3_ch355_m4573r}

World Wide Flags [150 Pts]#

Description#

“Oh, you are a WWCTF player? Name every flag.” Identify flags with increasing difficulty!

http://flags.chal.wwctf.com:1337/

Solution#

From the Website, we need to guess 100 flags that appeared. But something interesting when I solve a couple of them, the answer is not entirely correct, for example the flag France will be incorrect if we submit France as the answer.

Note: We can refresh the page and our progress will still be there but the flag changes

From this understanding, I don’t want to think too much for the automation so I decided to manually answer all 100 flags.

flagsss

Flag

wwf{d1d_y0u_u53_41_70_r34d_f1465}