codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
<?php /* Author: radekk Zasadniczo to nie jestem do końca przekonany czy są to podatności, o które chodziło. Szczerze mówiąc liczyłem na SQL Injection, ewentualnie XSS/CSRF. Analizując wysyłane i zwracane dane doszedłem do kilku wniosków: - z 5 wysyłanych pól sprawdzane są jedynie 2 (pInput oraz send) - pPropDown oraz pRadio to indeksy dla elementów tablicy rzutowane do typu integer - kod pocztowy jest błędnie walidowany, stawiam że jest to regexp z wzorcem '/[0-9]{2}\-[0-9]{3}/' Podatność - błędny pattern w wyrażeniu regularnym dla kodu pocztowego, powinno być: '/^[0-9]{2}\-[0-9]{3}$/' */ $aPropDown = array(1, 2, 3); $aRadio = array(1, 2, 3); if ( preg_match('/[0-9]{2}\-[0-9]{3}/', $_POST['pInput']) ) { /** * Podatność? * * Poprawny kod pocztowy, problem w tym, że do wzorca pasuje również treść: * 22-222 dowolny tekst za kodem * 11-111cccccccccccccccc * 00-000AAAA BBBB CCCC **/ print "pPropDown: " . $aPropDown[ (int)$_POST['pPropDown'] ]; print "pRadio: " . $aRadio[ (int)$_POST['pRadio'] ]; } else { // formularz } ?>
Private
[
?
]
Run code