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.
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
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ę.