Sunday, October 27, 2024

CTF Hack The Boo Practice & Competition 2024

Ostatnio koleżanka z pracy zaraziła mnie rozwiązywaniem CTFów. Założyłem sobie konto na https://ctf.hackthebox.com/ i rozpocząłem swoją przygodę z Capture The Flag.

Coding

Replacement

Tutaj postanowiłem użyć Python'a.

inp = input()
rep = input()
rep_with = input()

print(inp.replace(rep, rep_with))

MiniMax

Ponownie użyłem Pythona.

inp = input()

l = [float(num) for num in inp.split(' ')]

print(min(l))
print(max(l))

CTF Hack The Boo Practice

Web

Void Whispers

Chciałem opisać jeszcze jedno zadanko, z którego jestem szczególnie dumny.

Pierwsza rzecz, którą zauważamy to fakt, że do funkcji shell_exec zostaje przekazana zmienna $sendMailPath:




Tak więc można w prosty sposób wywołać coś w shellu. Problem polega jednak na tym, że chwilę wcześniej w liniiach 36-38 sprawdzany jest czy nie występują w payloadzie spacje.
Po kliknięciu przycisku Save generowany jest plik config.json, który możemy podejrzeć pod adresem http://localhost:1337/config.json.
Mój pomysł na rozwiązanie tego zadania to zrzucenie zawartości pliku /flag.txt do config.json.
Po pierwsze nasze nowe polecenie w linii 40 musi zfailować, aby program nie nadpisał pliku config.json. Drugi problem to brak spacji. Zamiast spacji można korzystać ze zmiennej ${IFS}. Tak więc wpisujemy w pole Sendmail PATH 

;cat${IFS}/flag.txt${IFS}>config.json

Średnik kończy polecenie which. Później zrzucamy zawartość pliku /flag.txt do config.json. Ponieważ polecenie nic nie zwróci program przerwie działanie w linii 42 nie nadpisze pliku config.json. Klikamy ponownie Save. Dostajemy komunikat błędu. Możemy teraz odświeżyć http://localhost:1337/config.json i podejrzeć flagę.