Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Kolejne hackme – wejściówka na „Atak i obrona”
Kontynuując tradycję sekurakowych hackme, dzisiaj chcemy Was zaprosić do konkursu, w którym główną nagrodą jest bezpłatna wejściówka na warszawską konferencję „Atak i obrona”. Dodatkowo mamy również dwie nagrody pocieszenia.
Jeśli chodzi o samą konferencję, organizatorzy proponują dość świeże podejście – nie skupiają się na dziesiątkach różnych tematów, tylko całe wydarzenie budują wokół dwóch „gorących” tematów: DDoS oraz APT. Osobiście interesuje mnie co będą mieli do powiedzenia prelegenci w tematach związanych z DDoS – mimo upływu czasu, sprawdzone metody ochrony przed różnymi wariantami tego ataku cały czas nie są dobrze opisane czy zbadane.
Na całej imprezie nie zabraknie też prezentacji sekurakowej, związanej dla odmiany z tematyką APT. W każdym razie zapraszam do przejrzenia programu i miejmy nadzieję do zobaczenia pod koniec listopada w Warszawie ;-)
Przechodząc do konkursu, tym razem zadanie dostępne jest tutaj, a celem jest wydobycie nazwisk dowódców (komandorów) statków – jest ich trzech; a następnie przesłanie tych danych na adres: sekurak@sekurak.pl
Wejściówka na atak-obrona.pl będzie dla pierwszej osoby, która prześle prawidłową odpowiedź, dla dwóch kolejnych osób mamy po jednej rocznej licencji na ESET Smart Security (dziękujemy firmie Dagma).
Aktualizacja: Mamy pierwsze osoby które rozwiązały zadanie:
- Sebastian Gilon – pierwsze miejsce (wejściówka)
- Radosław Rydel – drugie miejsce (licencja eset)
- Marcin Nowak – trzecie miejsce (licencja eset)
- Wojciech Płoskonka – czwarte miejsce
Gratulacje i czekamy na dalsze odpowiedzi!
PS
Zadanie jest raczej z kategorii łatwiejszych, choć nie jest do końca oczywiste. Spróbujcie też nie stosować automatów – mamy wdrożoną testową ochronę przed próbami automatycznymi (czasowa blokada komunikacji z serwisem hackme).
michal.sajdak<at>sekurak.pl
Jestem tu nowy i mam głupie pytanie: czy publikujecie rowiązania po zakończeniu hackme? Bawię się tym ciastkiem, ale widzę, że jeśli chodzi o SQL to jestem cienki jak lura w podziemnym barze na dworcu zachodnim.
Nie publikujemy. A to dla tego żeby każdy na spokojnie mógł zrobić bez spoili poprzednie hackme (patrz tag hackme), dla niektórych jest zrobione całkiem spore teoretyczne intro.
Jak tam, są już jakieś poprawne odpowiedzi? ;)
a ma ktoś chociaż wskazówkę jak się za to wziąć ?:)
Malutka podpowiedź ?
http://sekurak.pl/czym-jest-sql-injection/
jak ktoś zrobił: http://sekurak.pl/hackme-do-wygrania-licencje-avg/ to powinno być teraz w miarę łatwo ;)
via cookie sql injection
Tak, sql przez cookie. Pewnie jutro dokoncze. Automatu nie znam do tego ale recznie sie da.
zmieniam cookie na status:broken’ or 1=1# ale lipa zero odzewu hmmm
a jakieś inne pomysły na testowanie / wykrywanie SQLi? ;)
Pobawię się jutro w robocie. Rozbudziliście moją ciekawość.
A co do waszych materiałów to szacun, fajnie że komuś chce się po polsku zrobić coś porządnego!
a może
:broken’ AND '1’=’1
:broken’ AND '1’=’2
;)
Wrzućcie przykład jak można rozbudować wyrażenie filters=status:broken, żeby select zwrócił jakiś wynik.
marcin, Twoje nie hula,
Kombinuję… AAA proste? :p
Niby można status:broken’ or '1’=’1 ale i tak nie wiem jak pokazać zawartość kolumny która nie jest podana w select :) coś wykombinuję :p
Ja obstawiałem raczej time based, zrobiłem testy trochę automatycznie (sorry, nie chce mi sie wklepywać wszystkich zapytań recznie) niestety nie dało rezultatu . Jestem przeogromnie ciekaw rozwiązania, może sekurak coś podpowie bo widzę wszyscy idą po standardowemu:)
A jeśli by nawet wykorzystać union to skąd wiedzieć jak się nazywa kolumna i nazwa bazy ? hmm
Widze ze „marcin” doszedl tam gdzie ja. Oprocz tego co napisales doszedles dalej? Dodam tylko ze nie jest to raczej taki sam typ ataku jak poprzednio, czyli sql injection integer based.
Mam
Powiem tak, myślę, że nawet wykonując status:0 wyświetla całość na stronie, bynajmniej jak wyświetlić więcej informacji niż zapisane jest to w php?
Jak pokazać result z innej kolumny? I nie pytam tutaj o składnię union, bo nie mam skąd wziąć nazwy ani bazy, ani tabeli. Stronie nie wyświetla błędów sql_error…
Dajcie jakąś wskazówkę…
Wskazówka jest następująca:
NIGDY SIĘ NIE PODDAWAJ!
i głosuj na KNP
Mała aktualizacja – mamy 3 pierwsze osoby które rozwiązały zadanie! (szczegóły w treści postu).
sekurak, skoro już mamy winerów, to może jakaś lepsza podpowiedź bazująca na tym co już z chłopakami napisaliśmy ?
Thx
Dobra. Podpowiedź- co jest nie tak ze spacjami we wstrzyknięciu?
Teraz pytanie w którym?
status:available’ or '1’=’1
?
%20 ?
cookie o wartości:
status:0’%20or%20’1’=’1
Zwraca to samo co 0
Może nie powinienem bazować dalej na przeglądarce, nie wiem czego oczekuję, żeby mi wyświetliła wyniki kolumn? skoro pewnie php przetwarza result i wyświetla tylko dane z kolumn zadeklarowanych?
Znając życie inni znają jakieś narzędzie do podejrzenia result i wyciągnięcia całości. sqlmap ? patrzyłem na argumenty, nic nie pomogło mi tego przeskoczyć, zaczynam się irytować… grrr…
%20 niewiele da bo http serwer i tak to odkoduje do „normalnej” spacji.
narzędzia – są tutaj blokowane – a przynajmniej znacznie ograniczana ich szybkość ;)
No to nie Pomogłeś :))
/*
* 'Nigdy się nie poddawaj!’
*/
No dobra, Hakerki, to może ktoś w końcu zdradzi o co chodzi ze spacjami? :) sekurak :) i tak się skończył już konkurs – zaraz wyłysieje, nie mam pomysłu :p
Wykorzystałam już chyba wszystkie pomysły i niestety postępów zbyt wielkich nie zrobiłam. Wiem ile tabela posiada kolumn, lecz nie mogę tej wiedzy wykorzystać. Niby proste hackme, ale… :)
Może niektóre słowa kluczowe są filtrowane w jakiś sposób?
nawiasy, komentarze powinny pomóc
tak, to duża i dobra podpowiedź :)
Globalna podpowiedz: zastanówcie się z jaką DB możemy tu mieć do czynienia?
Mysql ? :)
Wg mnie NAJWYŻSZY CZAS podać statystyki: ile osób, kiedy, itd
i przygotować następne hackme :)
qlfonix: statsy niebawem. nowe hackme – tym razem bardziej sieciowe i z fajną nagrodą główną – za ok tydzień.
A propos DB, to byłam moja piąta próba zaraz po Gadfly :)
No i oczywiście pokazać rozwiązanie. Z nieba pustej kartki nikt się nie nauczy ;]
! niczego na razie nie publikujcie bo walka dalej trwa ;)
mozecie chociaz powiedziec czy funkcje typu substr,length,select,union,… sa poblokowane czy jest mozliwe ich uruchomienie w jakis magiczny sposob?
Funkcje select i union działają normalnie. Można zrobić wstępny rekonesans bazy przy pomocy sqlmap, tylko konieczne jest ustawienie kilku dodatkowych parametrów.
No właśnie właśnie, tylko nie mogę odnaleźć jakiegokolwiek przykładu na użycie sqlmap gdy zapytania są zagnieżdżone w cookie…
@env dzieki za podpowiedz bardzo sie przydala. Odpowiedz wyslana.
@webster:
jak stare przyslowie mowi: „when all else fails… check the manual”
https://github.com/sqlmapproject/sqlmap/wiki/Usage
Tam znalazlem wszystko co potrzebne zeby zrobic to hackme.
SQLMap się sprawdzi. Spróbujcie dodać coś takiego:
–cookie=’filters=status:available’ -p „cookie”
jesli chodzi o ciastko to
–cookie=”ciastko=xxx” -p ciastko
python ./sqlmap.py -u „http://training.securitum.com/7/” –cookie=’filters=status:0’ -p cookie –param=”;” –level=2 –risk=2
No i gdzieś muszę mieć coś nie tak – Wniosek? – Bo nie działa… ;]
Generalnie odradzam stosowanie automatów – mniej się można nauczyć :P
Jak powiedział @Łukasz:
https://github.com/sqlmapproject/sqlmap/wiki/Usage
Proponuję poczytać manuala @webmaster.
Sekurak – ja wiem, że brakuje nam wiedzy i niestety że tak to powiem z nieba już jej nie weźmiemy :) Próbowałem ręcznie modyfikować cookie i jedyne co udało mi się uzyskać to wyświetlenie selecta z obu argumentów przy pomocy filters=status:0. Wszystkie próby użycia union kończyły się błędem strony.
Czas chyba na konkretne wskazówki bez owijania w bawełniaka :)
OiSiS- Nie Czujecie, że nic nie Wnosicie nowego w dyskusję? Podaliście linka do sqlmap o którym mowa od samego początku tej zabawy. Dla mnie to puste posty. Manuala czytałem i nie przyniosły mi żadnego rezultatu.
Poza tym, jestem zdania jak Sekurak, że stosowanie automatów nie uczy. Osobiście chcę zrozumieć dokładne działanie tego hackme, co jak i dla czego. Wszystkie sposoby które znałem nie przyniosły mi żadnego rezultatu a jedynie wykrzaczyły stronę. Może źle robię, że zakładam iż baza to Mysql, jednak widocznie brak mi wiedzy i doświadczenia by to ogarnąć. Raz spróbowałem zgryźć to hackme sqlmap’em i byłem na siebie wściekły, że jak dziecko neostrady używam Kali/Backtracków Lame narzędzi.
Grrr, jestem wściekły na siebie, że nie mogę tego rozgryźć… masakra
Webmaster odezwij sie do mnie na maila oisis(at)o2.pl dam jakies wskazowki. Tutaj po za sprawdz manuala nie chce wychodzic bo bedzie to spoiler. Dzieci neostrady uzywaja Havija :).
@webster: źle zakładasz, że to mysql
sposób na rozwiązanie:
1. Znajdź miejsce injekcji
2. Wylicz kolumny zapytania
3. Wyświetl nazwy kolumn atakowanej bazy danych
4. Wyświetl wyniki
i trzeba pamiętać o magicznej spacji
nie potrzeba automatów, wszystko z palca zrobisz w 2 min.
@webster
W jakim miejscu jesteś?
Czy umiesz już stworzyć ciastko które zmodyfikuje tak zapytanie aby wyświetlić tylko informacje o jednym statku?
Czy potrafisz zwrócić dwa wiersze informacji o statkach: jeden z „available” drugi „broken”?
Najlepiej nic nie zakładaj tylko sprawdź czy funkcje specyficzne dla danej DB poprawnie modyfikują wyniki.
Może zrób dla wprawy poprzednie hackme :)
1. status:broken’+OR+’1’=’1
2. status:broken’+OR+’1’=’1’+LIMIT+’1 # jednak wywala się i nie zwraca nic
Mam problem z budowaniem składnie, union nie działa tak jak widać limit również.
Bawię się, ale raczej ta zabawa do niczego nie prowadzi. Brakuje mi „światełka”
A co robimy jak limit nie działa?
O tym, że spacje są filtrowane i można zastąpić je komentarzami już było w komentarzach. Jeżeli nie działa klauzula LIMIT trzeba poszukać jej odpowiednika dla innych DB.
Wyniki można ograniczyć w następujący sposób:
[moderacja]
To już chyba spoiler ;)
Udało się dzięki OiSiS
Niestety sqlmap, teraz siedzę i ogarniam to z manuala, ale powiem szczerze że średnio wiem od czego zacząć. Niby sqlmap wyrzuca z jakich linii korzysta, ale są mocno przesadzone…
Ktoś ma linie na wyświetlenie nazw kolumn ?
według man jest problem, bo limit występuje od razu po SELECT.
np.
SELECT FIRST int SKIP int kolumna where kolumna = 'zmienna’
tak ogólnie. Injection wstrzykujemy w miejsce zmiennej co utrudnia sprawę. Próbowałem wcisnąć ją po zmiennej tak jak order by, ale nie zaskoczyło.
Nie mam też pomysłu na rozsądne union zakładając, że nie znamy nazw kolumn – no przecież nikt nie korzystał z sqlmap’a…
Zjadłem po
„SKIP int” FROM
mam nadzieję że Wybaczycie
Pozdr.
@webster kombinujesz jak koń pod górę :) Domyślam się, że wiesz już z jaką DB mamy tutaj do czynienia, więc:
1. Ustal liczbę kolumn tabeli.
2. Przy pomocy klauzuli UNION wyświetl nazwy wszystkich tabel dostępnych w DB (istnieje tabela systemowa, która takie informacje przechowuje). Nazwa jednej tabeli będzie naprawdę interesująca.
3. Przy pomocy klauzuli UNION wyświetl nazwy wszystkich pól wszystkich tabel dostępnych w DB (istnieje tabela systemowa, która takie informacje przechowuje). Nazwa jednego z pól tabeli będzie naprawdę interesująca.
4. Przy pomocy klauzuli UNION, interesującej nazwy jednego z pól tabeli i interesującej nazwy jednej z tabel wyświetl nazwiska dowódców statków.
RDB$RELATION_NAME nie działa w UNION. Zauważyłem, że sqlmap zastępuje ją w kosmiczny NULL,blebleblebleble, kosmo_warunek,bleble sposób który działa do wyświetlenia nazwy tabeli
Znalazłem również w necie linię do wyświetlenia nazw tabel i również bazuje na RDB$RELATION_NAME, tutaj nie hula…
hmm ?
Trochę się rozpiszę, mam nadzieję, że Sekurak Wybaczysz delikatny spoiler.
[sekurak: niestety nie wybaczy ;-) To znaczy chciałem coś przepuścić, ale niestety komentarz już bardzo mocno naprowadza, czy prawie pokazuje finalne rozwiązanie ;-)]
baza to firefox albo fajerindehol :D:D:D
Dobra, rozgryzłem całość, all linie z łapy, bez pomocy jakiś automatów, ale ale…
Brakuje mi informacji teoretycznej …
1. dla czego Aby wyciągnąć nazwy kolumn RDB$FIELD_NAME wystąpiło w przed ostatniej pozycji NULL?
2. dla czego Aby wyciągnąć zawartość, nazwy kolumn wystąpiły w drugiej pozycji NULL ?
Proszę nie uznać tego za spoiler… :)
Kiedy kolejne hackme ? :)
Przyszły tydzień w końcu. To znaczy hackme jest gotowe, ale jeszcze chwilę czekamy ;)
:))) No to czekamy :)
sekurak Przyjacielu, kiedy next hackme ?:)
@webster – when it’s done ;-)
ok :)
Ukazało się fajne hackme :)
https://hackerone.com/ibb
Nagrody też niczego sobie.
:)
My mamy nowe hackme gotowe – tylko jeszcze czekamy na decyzję sponsora kiedy ruszać ;)