<?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
}
?>