DataLife Engine > PHP > Поиск уязвимостей в PHP скриптах для Начинающих
Поиск уязвимостей в PHP скриптах для Начинающих13 марта 2008. Разместил: podpole |
Итак, сейчас я Вам объясню, как я ищу баги в скриптах на PHP, так делаю я сам и не кому не навязываю свой вариант... Статья это маленькая, но я считаю полезная =) 1. Если вы читали мою вторую статью то первое что стоит искать, должно было прийти в голову уже... Т.е. первое что мы ищем include($file); Так же хочеться упомянуть более опытных разработчиков, которые переписывают стандартные функции, если вы столкнулись с такой ситуацией, то надо сначало просмотреть файл с функциями, так же на наличие обращения к include, fopen и т.п. При обнаружении таковой, ищем в листинге уже не просто include, а его замену... При обнаружении, смотрим не стоят ли на эту переменную фмльтры и не обнуляется ли она в начале скрипта. 2. Поиск SQL - inj Расскажу на практике: Кусок кода из интернет казино: if ($send=="1") { mysql_query("UPDATE users set pass='$cpass',name='$cname',fam='$cfam' where login='$l'"); echo ""; } Итак, после нахождения в нём уязвимости, я думал что от нее не будет толку, но как показала практика, есть ... Итак, мы видим, что при включеных MAGICQUOTES, вмешаться в данный запрос не получится... Но нашлись и такие сервера, которые работали без этой дирeктивы... Переменные передаются через Формы и самый простой способ вмешаться в запрос это поле Фамилия =) Главное правильно составить запрос, после составления такого запроса ',cash="20.00" /* На локальном компьютере, я увидел, что у всех зарегистрированных пользователей баланс стал по 20.00 и это меня и обрадовало и огорчило, так-как не заметил, что обрубаю запрос и не уточняю где надо изменить баланс, потом подредактировав запрос, я составил следующий запрос ',cash="20.00" where login="12"/* И у пользователя 12 на счету стало 20.00 руб =) После этого я убедился, что все уязвимости важны, таже те которые на первы взгляд кажуться мало важными... |