Skip to main content
  1. Posts/

OHxY CTF 2024 pt.1 - Steganography & Web Writeup

·470 words·3 mins
Lacroix Raphaël (Chepycou)
Author
Lacroix Raphaël (Chepycou)
I’m Raphaël LACROIX, a French computer scientist developping various applications in my free time ranging from definitely useless to somewhat usefull. I also do quite a lot of Capture the flag and cybersecurity challenges.
Table of Contents
Writeup 2024 OHxY CTF - This article is part of a series.
Part 1: This Article

Hello,

This is the write-up of most of the challs flagged by my team at the Oxyhack Cyberevent CTF. Though I at least took part in those challenges, some write-ups are from other teams members.

We finished first in this quite easy but still cool regional CTF (apparently the PEDA team was the team of the school’s teachers. Quite happy to manage to get first place then !) :

alt text

Steganography
#

The Quest.
#

Well… it’s a non-standard weird windows software I had never heard of 🤷 (https://www.openstego.com/) maybe the reason this was the last steganography challs to be flagged

OHxY{UnC0v3r_th3_c0nc34l3d_tr345ur3_w1th1n_th3_d1g1t4l_l4byr1nth}

Hey BOB !
#

The description hints at LSB steganography.

One simple way to test this is to use Aperisolve which combines a lot of tools. I personally just ran zsteg on my exegol container and found the following :

OHxY{R3v34l_th3_c0v3rt_m3554g3_c0nc34l3d_w1th1n_th3_5ubtl3_5h1ft5_0f_th3_l0w-b1t_r34lm}

Alien Sound ?
#

Audio file $\Rightarrow$ First reflex should be looking at the spectrum to find anomalies. Even if there can be WAW Header injections or LSB steganography, most easy challenges can be solved that way.

OHxY{l15t3n_cl05ely_d3c0d3_th3_h1dd3n_symph0ny}

Web
#

Shout out to Thomas Hernandez (a.k.a. Daresse) with whom I had to understand the weird intent of Cookie Mayhem

Trickery!
#

We first have a blank webpage with just an input. First try to put innocent data in there. We get redirected to a page where the data we gave is printed. First things to try in this scenario are : XSS (<script>alert();</script>) | SSTI({{1+1}}) | command injection(; whoami).

Here SSTI gave us the flag instantly :

OHxY{3xpl01t_5ST1_f0r_tr1umph}

Cookie Mayhem! 🍪 #

This one lives up to its name. Guided by the name of the challenge we go straight into the cookies, and we only find one, the session cookie :

eyJlbmNvZGVkX2ZsYWciOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKbWJHRm5Jam9pUkRGa1gza3dkVjlyYmpCM1gyMTVYelV6WTNJemRGOF9JbjAuWllvREFZN2FranZUcEt3YWg3ekZES01fYmQ5V2pKdFY1QTY2VDEyTm11OCJ9.Zxyp6A.HsKdzaEsgskm8vl1p8B3AXQnP-I

We recognize a signed JWT token (B64string.B64string.B64string = Header.Payload.Signature) so let’s put it in jwt.io to analyze it. The payload and the Signature don’t give us anything interesting but inside the header we find another JWT token. What is a JWT token doing in the header of another JWT token ? Nobody knows but here it is:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoiRDFkX3kwdV9rbjB3X215XzUzY3IzdF8_In0.ZYoDAY7akjvTpKwah7zFDKM_bd9WjJtV5A66T12Nmu8

This one is completely normal though, and its payload contain a flag :

D1d_y0u_kn0w_my_53cr3t_?

This flag isn’t the flag we are looking for but a hint, meaning we have to find something else.

The challenge description mention that we are allowed to enumerate the website, so we run feroxbuster, looking for directories. After a few minutes it comes up with a /check page which have a form with two fields we can write in:

JWT token: 
Secret Key:

Still using jwt.io we re-craft the “normal” JWT token using the same data and algorithm but our own Secret Key. We send this new token and our own secret key inside the form, and we get the flag :

OHxY{M4n1pul4t3_JWT_5e5510n5_w1th_5STI_pr0w355}

Writeup 2024 OHxY CTF - This article is part of a series.
Part 1: This Article