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 руб =) После этого я убедился, что все уязвимости важны, таже те которые на первы взгляд кажуться мало важными...