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 |
[CONCURS] Hunt down the bug :-)
#19
Posted 10 September 2008 - 13:53
is_dir() returneaza true si pentru symbolic links , mai putem adauga o conditie !is_link($..)
Edited by doriaal, 10 September 2008 - 13:54. |
#20
Posted 10 September 2008 - 13:59
florindinu, 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). 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
Posted 10 September 2008 - 15:58
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
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
Posted 10 September 2008 - 16:42
Mr.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 l.e. uitându-mă peste liniile de cod, am observat o chestie, nu știu însă dacă ăsta e bugul la care te referi. Poate daca esti genial observi bugul si direct din liniile de cod dar eu l-as observa din input 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
Posted 10 September 2008 - 17:11
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
Posted 10 September 2008 - 17:55
doriaal, 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" 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
Posted 10 September 2008 - 19:19
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
Posted 10 September 2008 - 20:02
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
Posted 10 September 2008 - 20:36
<?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
Posted 10 September 2008 - 21:09
adormitu, 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... |
|
#29
Posted 10 September 2008 - 21:14
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
Posted 10 September 2008 - 21:51
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? :-) |
#32
Posted 11 September 2008 - 16:17
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.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users