CodeDog
Участники
- Сообщения
- 5
- Реакции
- 12
- Баллы
- 1,700
Приступим!
Что нужно иметь: Notepad++, Клавиатуру, Мышь, Руки и маловероятный базовый PHP знаний)
Для начала (Это только 1 часть) мы попробуем найти самые простые уязвимости!
Для этого жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Если что то нашел... То это уязвимость XSS...
Место обычного echo $_GET['id'] мы можем сделать так: echo($_GET['id'])
Теперь рассмотрим более важные уязвимости под названием UsePhpInj
Жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Вот это то что не стоит делать)
Как защититься от XSS? Очень просто место обычного вывода массива, обрабатываем его и получается не
А
Так-же мы можем проделать и с POST\Cookie
Теперь перейдем к Sql inj
Жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Можно заменить id на свое, а кавычки поменять на апостроф, а так-же мы можем убрать\добавить пробелы
Если вы хотите более детально разобраться... То:
И если же вы настолько терпеливый человек то:
Можно так-же попробовать поставить апостроф в конце запроса!
Что же такое SQL-inj и с чем его едят?
Sql-inj это не отфильтрованный массив с содержимым ARRAY с запросом в базу данных...
То есть есть запрос "SELECT * WHERE id=" . $_GET['id']
Тем самым мы получаем власть над запросом...
Если мы введем ?id=1 то все будет хорошо ведь получится
"SELECT * WHERE id=1", а если ?id=1' то
"SELECT * WHERE id=1'" что вызывает ошибку и дает нам доступ в базу данных
Теперь защита....
Место "SELECT * WHERE id=" . $_GET['id'] мы пишем "SELECT * WHERE id=" . mysql_real_escape_string($_GET['id']) Тем самым мы фильтруем запрос $_GET['id']
И мы предотвратили взлом... Тоже самое что с POST и COOKIE!
Теперь перейдем к File-inj или как его ещё называют Php-Inj
Мы ищем
Как защититься?
Очень просто!
Что нужно иметь: Notepad++, Клавиатуру, Мышь, Руки и маловероятный базовый PHP знаний)
Для начала (Это только 1 часть) мы попробуем найти самые простые уязвимости!
Для этого жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Код:
echo $_GET
echo $_POST
echo $_COOKIE
Если что то нашел... То это уязвимость XSS...
Место обычного echo $_GET['id'] мы можем сделать так: echo($_GET['id'])
Теперь рассмотрим более важные уязвимости под названием UsePhpInj
Жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Код:
echo eval($_GET
echo eval($_POST
echo eval($_COOKIE
Вот это то что не стоит делать)
Как защититься от XSS? Очень просто место обычного вывода массива, обрабатываем его и получается не
Код:
echo $_GET['id']
А
Код:
echo htmlspecialchars($_GET['id'])
Так-же мы можем проделать и с POST\Cookie
Теперь перейдем к Sql inj
Жмем CTRL+F и ищем следующее (С каждой новой строки новый запрос)
Можно заменить id на свое, а кавычки поменять на апостроф, а так-же мы можем убрать\добавить пробелы
Код:
where id=" . $_GET
where id=" . $_POST
where id=" . $_COOKIE
Если вы хотите более детально разобраться... То:
Код:
. $_GET
. $_POST
. $_COOKIE
И если же вы настолько терпеливый человек то:
Код:
$_GET
$_POST
$_COOKIE
Можно так-же попробовать поставить апостроф в конце запроса!
Что же такое SQL-inj и с чем его едят?
Sql-inj это не отфильтрованный массив с содержимым ARRAY с запросом в базу данных...
То есть есть запрос "SELECT * WHERE id=" . $_GET['id']
Тем самым мы получаем власть над запросом...
Если мы введем ?id=1 то все будет хорошо ведь получится
"SELECT * WHERE id=1", а если ?id=1' то
"SELECT * WHERE id=1'" что вызывает ошибку и дает нам доступ в базу данных
Теперь защита....
Место "SELECT * WHERE id=" . $_GET['id'] мы пишем "SELECT * WHERE id=" . mysql_real_escape_string($_GET['id']) Тем самым мы фильтруем запрос $_GET['id']
И мы предотвратили взлом... Тоже самое что с POST и COOKIE!
Теперь перейдем к File-inj или как его ещё называют Php-Inj
Мы ищем
Код:
include($_GET
include($_POST
include($_COOKIE
require($_GET
require($_POST
require($_COOKIE
Как защититься?
Очень просто!
Код:
if(file_exists($_GET['id'] . '.php')) {
include($_GET['id'] . '.php');
}
else
{
exit();
}