Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Best gaming laptop?

Humane (2024)

Recomandare casti 100-150 lei

Schimbare bec far VW Touran 1T3
 Plata impozit PF

Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024

Cum sterg mails din Promotions
 Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...
 Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg
 

[CONCURS] Hunt down the bug :-)

- - - - -
  • Please log in to reply
31 replies to this topic

#19
doriaal

doriaal

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 21.06.2007
is_dir() returneaza true si pentru symbolic links , mai putem adauga o conditie !is_link($..)

Edited by doriaal, 10 September 2008 - 13:54.


#20
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postflorindinu, on Sep 10 2008, 13:47, said:

Problema cu functiile de genul asta si hard link-uri e ca poti avea link-uri recursive.. si atunci e nasol daca nu ai grija. Cred ca is_link() ar trebuii sa intoarca true si pentru hard link-uri (la mine nu face asta pentru un link cereat cu: ln test.txt link).
Directoarele nu pot avea hardlinks, cel putin nu pe ext3, iar fisierele nu creaza inca un nivel de recursivitate. Iar hardlinks la fisiere au ca efect redundanta, insa atat. poti evita cu stat(), readlink() & co.


LE: Deci, revenind on-topic, ca sa nu se sperie cei fara linux:
Al doilea bug nu are legatura cu linux sau alte chestii, ci cu fluxul de date si se manifesta sub orice fs care suporta si fisiere si directoare insa doar in anumite cazuri "speciale".

Este inca deschis :-) Hunt it down!

Edited by OriginalCopy, 10 September 2008 - 13:59.


#21
Mr.Jinx

Mr.Jinx

    Gigant ca NY

  • Grup: Senior Members
  • Posts: 3,186
  • Înscris: 11.07.2006
offtopic: cred că am putea face și un concurs cu mai multe etape la așa ceva, pentru fiecare bug găsit, în funcție de gravitatea lui, să se acorde puncte direct proporționale. și după fiecare etapă să fie afișat un clasament :D

l.e. uitându-mă peste liniile de cod, am observat o chestie, nu știu însă dacă ăsta e bugul la care te referi.

Edited by Mr.Jinx, 10 September 2008 - 16:09.


#22
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostMr.Jinx, on Sep 10 2008, 15:58, said:

offtopic: cred că am putea face și un concurs cu mai multe etape la așa ceva, pentru fiecare bug găsit, în funcție de gravitatea lui, să se acorde puncte direct proporționale. și după fiecare etapă să fie afișat un clasament :D

l.e. uitându-mă peste liniile de cod, am observat o chestie, nu știu însă dacă ăsta e bugul la care te referi.
Ehm, nu esti incepator :P ... cred, dar daca nu e mentionat bugul respectiv la care ma gandisem eu initial de catre un incepator, il poti prezenta apoi, desigur :)
Poate daca esti genial observi bugul si direct din liniile de cod :OK: dar eu l-as observa din input :confuzzled:

LE: daca ai cod cu buguri ascunse le poti prezenta. Cel mai bine am discuta despre o eventuala organizare a unui astfel de "concurs" apoi.

Edited by OriginalCopy, 10 September 2008 - 16:51.


#23
doriaal

doriaal

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 21.06.2007
De abia astept sa vad care e raspunsul :)
Singurul lucru la care m-am mai putut gandi este : la un input de genu ../../ va lista si ce se afla in afara web rootului ,toate fisierele existente ascunse/neascunse ;  si eventual un path disclosure "ne asa important" la introducerea unui director inexistent " No such file or directory in C:\...\www\lala.php"

#24
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postdoriaal, on Sep 10 2008, 17:11, said:

De abia astept sa vad care e raspunsul :)
Singurul lucru la care m-am mai putut gandi este : la un input de genu ../../ va lista si ce se afla in afara web rootului ,toate fisierele existente ascunse/neascunse ;  si eventual un path disclosure "ne asa important" la introducerea unui director inexistent " No such file or directory in C:\...\www\lala.php"
Parametrul functiei este intr-adevar o cale, dar "input" este pana la urma urmei structura de fisiere si directoare, nu calea in sine. La asta ma refer cand zic "input" in cazul acesta.

Doar atat exista: o structura de fisiere si directoare si o functie care proceseaza aceasta structura recursiva. Exista un bug strict legat de aceasta procesare (fluxul de executie), mai exact un bug in fluxul de date. Nu e vorba de FS, de parametrii pasati, de drepturi de acces, de tipuri de fisiere (hard/soft link, socket, device etc), de directoare uitate deschise (deci nu e vorba de "greseli tehnice"), ci strict de fluxul de date (ci greseli logice).

LE: e ceva banal pana la urma urmei, dar mai "ascuns" decat primul bug. E vorba de un detaliu fin intr-un anumit tip de input.

Edited by OriginalCopy, 10 September 2008 - 17:58.


#25
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
In cautarea motivului pentru care nici macar utilizatori mai cu experienta ca mr.jinx nu pareau sa-si dea seama despre ce e vorba mi-am miscat fundul din fata shell-ului si am trecut pe windows sa testez. Bugul exista doar sub linux din ce am testat. Cand am afirmat ca nu conteaza fs-ul ma bazam pe testele mele pe ext3, vfat si ntfs sub linux, insa ntfs-ul de sub windows se manifesta altfel.

Acum, bugul (exista, dar nu e universal valabil ...) este ca kernelul (linux, poate si *bsd sau sunOS? Nu stiu, poti testa) poate returna fisierele si directoarele intr-o ordine aleatorie (defapt dupa timpul creatiei sub linux, dar sa zicem ca e aleatorie), nu neaparat mai intai directoarele si apoi fisierele. Deci in anumite cazuri $r[$rel_path] putea suprascrie valoarea din $r[<integer>], mai concret atunci cand directorul se numea "<integer>", unde <integer> este bineinteles un nr intreg. Cauza era conversia automata string->integer din php.

Scuze catre cei care si-au pierdut timpul din cauza mea.

Rezolvarea simpla era $r[$rel_path] = 1; pe linia 14, unde in loc de 1 s-ar fi putut salva valori care sa indice tipul fisierului pe fs-urile care suporta asta.

LE: pana la urma urmei acest bug, care nu e chiar bug de bug, ci doar diferenta intre sisteme de operare, ceea ce e normal, ne invata sa ne gandim si la eventualele diferente intre OS-uri si sa le tratam...

Acum, cine mai are riddles/puzzles, le poate expune :-)
+1 doriaal oricum

Edited by OriginalCopy, 10 September 2008 - 19:08.


#26
ioman87

ioman87

    Member

  • Grup: Members
  • Posts: 313
  • Înscris: 05.02.2006
continutul directoarelor in NTFS este sortat (pentru cresterea performantelor la accesare), deci la enumerarea fisierelor dintr-un director se pot intercala subdirectoare si fisiere. Acum nu stiu daca PHP aranjeaza el directoarele intai, n-am incercat :)

#27
adormitu

adormitu

    Member

  • Grup: Members
  • Posts: 384
  • Înscris: 28.08.2008
<?php

function get_fstree_recursive() {
	$cwd = opendir('.');
	$r = array();
	if($cwd) {
		while($rel_path = readdir($cwd)) {
			if('.' == $rel_path || '..' == $rel_path) {
				continue;
			}
			if(is_dir($rel_path)) {
	  chdir($rel_path);
				$r[$rel_path] = get_fstree_recursive();
	  chdir('..');
			}
			else {
				$r[] = $rel_path;
			}
		}
	}
	return $r;
}
	  
var_dump(get_fstree_recursive('.'));

?>
daca ca si greseala logica va referiti la faptul ca nu lua subdirectoarele (anume continutul lor), acum le ia... nu facea salt in director pentru a citii continutul si pentru a putea "patrunde" mai adanc... da e modificat putin codul.... nu stiu daca se pune...

#28
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postadormitu, on Sep 10 2008, 20:36, said:

<?php
 
 function get_fstree_recursive() {
	 $cwd = opendir('.');
	 $r = array();
	 if($cwd) {
		 while($rel_path = readdir($cwd)) {
			 if('.' == $rel_path || '..' == $rel_path) {
				 continue;
			 }
			 if(is_dir($rel_path)) {
	   chdir($rel_path);
				 $r[$rel_path] = get_fstree_recursive();
	   chdir('..');
			 }
			 else {
				 $r[] = $rel_path;
			 }
		 }
	 }
	 return $r;
 }
	   
 var_dump(get_fstree_recursive('.'));
 
 ?>
daca ca si greseala logica va referiti la faptul ca nu lua subdirectoarele (anume continutul lor), acum le ia... nu facea salt in director pentru a citii continutul si pentru a putea "patrunde" mai adanc... da e modificat putin codul.... nu stiu daca se pune...
Acesta era bug nr. 1 si a fost gasit de doriaal. Vezi mai sus. Solutia ta este si ea buna, da.

#29
adormitu

adormitu

    Member

  • Grup: Members
  • Posts: 384
  • Înscris: 28.08.2008
solutia propusa de doriaal (de vb de aceeasi, care contine si cod, nu?) afiseaza doar un director adancime, nu merge mai adanc.. cel putin asa imi mergea mie... anyway... dupa ce postasem am vazut ca ai dat tu solutia... cu diferenta de OS... cum am cd bootabil Kubuntu (si nu are php) va cred pe cuvant ;)

#30
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu am testat ce a scris doriaal, dar din ce-am compilat in minte ar trebui sa functioneze.

Nu mai are nimeni exemple de buguri de care s-a lovit si i s-au parut interesante? :-)

#31
vali38

vali38

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 16.10.2005
care-i urmatorul puzzle ? nu mai am rabdare... :D

#32
doriaal

doriaal

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 21.06.2007
Mie imi merge ok . (win/php5 ) ...
Eu as putea sa fac ceva scripturi care sa puna in evindenta cele mai dese si exploate vulnerabilitati in paginile web cum ar fi xss , lfi ,rfi ,sql injection , http header injection ,dar aceaste sunt foarte usor de gasit ,challenge-urile adevarate sunt de genu asta .

Edited by OriginalCopy, 11 September 2008 - 17:05.
personal info stripped off :-)


Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate