|
|
|
| Есть скрипт:
<?php
mysql_query('SELECT * FROM my_table WHERE t_id="'.$_GET['MY'].'"');
?>
|
Его как то можно ломануть? А то сколько не пролбовал, дырки залеплять получается, а ломать нет:)) | |
|
|
|
|
|
|
|
для: Lenux
(12.11.2005 в 07:25)
| |
<?php
mysql_query("SELECT * FROM my_table WHERE t_id='".mysql_escape_string($_GET['MY'])."'");
?>
|
а лучше:
<?php
$my=mysql_escape_string($_GET['MY']);
mysql_query("SELECT * FROM my_table WHERE t_id='$my'");
?>
|
| |
|
|
|
|
автор: инжекшэн (12.11.2005 в 13:48) |
|
|
для: Shorr Kan
(12.11.2005 в 08:54)
| | Хорошо... В догонку вопрос ...
Как избавится от иньекций подобного рода и почему запрос становится уязвимым? Давайте в пример возьмем запросы которые нам предоставил: Shorr Kan | |
|
|
|
|
|
|
|
для: инжекшэн
(12.11.2005 в 13:48)
| | Прогонять все заносимые в базу переменные через функцию mysql_escape_string() (http://www.softtime.ru/dic/id_dic=96&id_group=2):
$str = mysql_escape_string($str);
|
| |
|
|
|
|
|
|
|
для: инжекшэн
(12.11.2005 в 13:48)
| | Нужна структура таблицы чтобы это продемонстрировать - этот запрос позволяет например подставить вместо имени пользователя его пароль... Избавится можно так, как описал DDK. | |
|
|
|
|
|
|
|
для: Lenux
(12.11.2005 в 07:25)
| | А зачем ломать? ХаЦкер типа? | |
|
|
|
|
|
|
|
для: Atom
(12.11.2005 в 10:40)
| | Нет просто лучше что бы понять как защищаться лучше на учиться и ломать:), так знать куда лучше перспективы смотреть:) | |
|
|
|
|
|
|
|
для: Lenux
(12.11.2005 в 07:25)
| | Без структуры таблицы нельзя продемонстрировать инъекцию... кроме того цели нет, информация из какого столбца должна выводится...
PS Вопросы, посвящённые MySQL лучше сразу размещать в разделе MySQL | |
|
|
|
|
|
|
|
для: cheops
(12.11.2005 в 12:00)
| | Ладно хорошо допустим есть в таблице поля tid, t_name, надо везде сменить t_name значения t_name, допустим на "ПиВо" :) | |
|
|
|
|
|
|
|
для: Lenux
(13.11.2005 в 07:39)
| | Инъекции не всесильны, вот если у вас в таблице пароли имелись бы, которые не выводились бы - их можно было бы вывести, а заменить, что-то вряд ли получится. К инъекции в подавляющем большинстве случаев обращаются чтобы выяснить пароли. Во многих Web-приложениях пароль администратора для доступа к аккаунту является одновременно и паролем к системе администрирования, попадая в систему администрирования можно ещё что-то узнать, исследовать внутренние страницы, загружать файлы и т.п. | |
|
|
|
|
|
|
|
для: cheops
(13.11.2005 в 14:01)
| | А мне непонятно- как вообще можно сделать sql-запрос постороннему человеку, если эти запросы делаются с серверной стороны? | |
|
|
|
|
|
|
|
для: coloboc66
(14.11.2005 в 10:57)
| | Через строку запроса
http://www.mysite.ru/index.php?my=-1%20UNION%20SELECT%20*%20FROM%20userslist%20WHERE%20id_user%20=%202
|
В результате чего переменная my или элемент $_GET['my'] принимают значение
-1 UNION SELECT * FROM userslist WHERE id_user = 2
|
после подставновки которого в SQL-запрос смысл последнего кардинально меняется. | |
|
|
|
|
|
|
|
для: cheops
(14.11.2005 в 15:26)
| | Cheops, а если данные передаются методом Post, допустим - есть форма следующего вида :
<form action = handler.php method = post>
Имя поль-ля: <input type = text name = name><br>
Пароль: <input type = password name = pass><br>
<input type = submit value = Отправить>
</form>
//===== обработчик handler.php =======
<?php
include "config.php";
$query = "SELECT * FROM users WHERE name = '$_POST[name]' AND pass = '$_POST[pass]' ";
$usr = mysql_query($query);
if (!usr) exit ("Oшибка в sql-запросе");
if (mysql_num_rows ($usr) >0)
{
echo "<br>"."Вход в защищенную область";
}
?>
Что необходимо ввести в поля формы чтобы всегда входить в защищенную область ? | |
|
|
|
|
|
|
|
для: Tomcat
(15.11.2005 в 15:49)
| | А какая структура таблицы? Это зависит от того сколько полей в таблице... | |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 22:37)
| | А зачем вообще используют GET, если есть POST? | |
|
|
|
|
|
|
|
для: coloboc66
(24.11.2005 в 12:21)
| | Для передачи данных от ользователя серверу. | |
|
|
|
|
|
|
|
для: coloboc66
(24.11.2005 в 12:21)
| | POST не удобно пользоваться, например если страница открывалась бы только POST данным, а все ссылки на темы выглядили бы как http://www.softtime.ru/forum/read.php - на них не возможно было бы ссылаться и переходить из поисковых систем... | |
|
|
|
|
|
|
|
для: cheops
(13.11.2005 в 14:01)
| | хм... а если, например, так:
' UNION UPDATE users SET pass='новый пароль или хэш' WHERE name='admin';
|
и вуаля! У вас есть пароль от админской части... | |
|
|
|
|
|
|
|
для: Loki
(24.11.2005 в 12:28)
| | А что такое UNION? | |
|
|
|
|
|
|
|
для: coloboc66
(24.11.2005 в 14:17)
| | Оператор SQL который объединяет результаты двух SELECT запросов в одну результирующую таблицу. | |
|
|
|