Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL Injection 
V
    Опции темы
Aliance
Дата 14.11.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Задумался, как работает SQL Injection?

Например, есть скрипт, который имеет такой код:
Код

mysql_query("SELECT * FROM `table` WHERE id = '" . $_POST['id'] . "' ORDER BY... ");


Пишу в поле с name="id" следующие строки:
Код

1' or a='a

Поидеи вернет правду, а что дальше из этого может выявить злоумышленник? Ну сделает он UNION а дальше что? Если данные выводяться все равно только их тех полей, которые запланированы? Или он как-то сохранит полученные данные файлом? Или он заменит как-то данные? Или что? В чем дырка-то?  smile 

Явно туплю в концу дня  smile 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 14.11.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Он может вынуть любую инфу из БД, а при очень удчном стечении обстоятельств и вывести ее в браузер
PM ICQ   Вверх
SelenIT
Дата 15.11.2006, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Aliance, вот имхо неплохая статья по теме...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
nerezus
Дата 15.11.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Aliance, а просто заслешить умным образом?

Это сообщение отредактировал(а) nerezus - 15.11.2006, 10:06


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Aliance
Дата 15.11.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Цитата(Mal Hack @  14.11.2006,  23:32 Найти цитируемый пост)
Он может вынуть любую инфу из БД, а при очень удчном стечении обстоятельств и вывести ее в браузер 

А как он ее выведет, если вывод происходит только определенный полей? Поидеи мог бы, если сделал запрос второй с помощью union и поля во второй таблицы назывались так же как и в первой. Но такое маловероятно. А вынуть инфу как он сможет? Что-то вроде сделать дамп и сохранить в файл, так злоумышленник может поступить?

Цитата(nerezus @  15.11.2006,  11:03 Найти цитируемый пост)
Aliance, а просто заслешить умным образом?

Вы о чем?
PM MAIL WWW ICQ Skype   Вверх
nerezus
Дата 15.11.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43





--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
sergejzr
Дата 15.11.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 2
Всего: 360



Aliance, а так?

'; DROP mysql;--




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Mal Hack
Дата 15.11.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(sergejzr @  15.11.2006,  19:33 Найти цитируемый пост)
Aliance, а так?

'; DROP mysql;--

mysql_query не позволит выполнить два запроса. DROP в качестве подзапроса не проходит.
Цитата(Aliance @  15.11.2006,  19:11 Найти цитируемый пост)
А как он ее выведет, если вывод происходит только определенный полей? Поидеи мог бы, если сделал запрос второй с помощью union и поля во второй таблицы назывались так же как и в первой. Но такое маловероятно. А вынуть инфу как он сможет? Что-то вроде сделать дамп и сохранить в файл, так злоумышленник может поступить?


Цитата(Mal Hack @  14.11.2006,  22:32 Найти цитируемый пост)
при очень удчном стечении обстоятельств


PM ICQ   Вверх
Aliance
Дата 17.11.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



nerezus, прочтите тему внимательно! Я разве где-то српашивал, как обезопасить скрипт? Простите, но это я прекрасно знаю.

sergejzr, дело в том, что задача удаления или изменения данных не стоит. Стоит вопрос возможности выцарапывания админского пароля.

Mal Hack, ну значит по идеи, в некоторых случаях можно не производить проверку безопастности?

Вот структура БД и далее обрабатывающий ее код:
Код

# тут храняться админские пароли
CREATE TABLE amx_amxadmins (
  id int(12) NOT NULL auto_increment,
  username varchar(32) default NULL,
  password varchar(32) default NULL,
  access varchar(32) default NULL,
  flags varchar(32) default NULL,
  steamid varchar(32) default NULL,
  nickname varchar(32) NOT NULL default '',
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

# эта таблица являеться искомой в скрипте
CREATE TABLE amx_bans (
  bid int(11) NOT NULL auto_increment,
  player_ip varchar(100) default NULL,
  player_id varchar(50) NOT NULL default '0',
  player_nick varchar(100) NOT NULL default 'Unknown',
  admin_ip varchar(100) default NULL,
  admin_id varchar(50) NOT NULL default '0',
  admin_nick varchar(100) NOT NULL default 'Unknown',
  ban_type varchar(10) NOT NULL default 'S',
  ban_reason varchar(255) NOT NULL default '',
  ban_created int(11) NOT NULL default '0',
  ban_length varchar(100) NOT NULL default '',
  server_ip varchar(100) NOT NULL default '',
  server_name varchar(100) NOT NULL default 'Unknown',
  PRIMARY KEY  (bid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Код

$resource3 = mysql_query("SELECT bid, player_nick, admin_nick, ban_length, ban_reason, ban_created, server_ip FROM $config->bans WHERE player_id = '".$_POST['steamid']."' ORDER BY ban_created DESC") or die(mysql_error());


Тоесть, как мне кажеться, заполучить данные из другой таблицы не получиться. Кстати, почему-то ' и " в скрипте экранируються (слешем \), хотя в сорцах явно это не замечано.

Меня интересует итог - дырка это или нет?
PM MAIL WWW ICQ Skype   Вверх
SelenIT
Дата 17.11.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Aliance,
Цитата(Aliance @  17.11.2006,  00:00 Найти цитируемый пост)
вопрос возможности выцарапывания админского пароля
В той статье как раз это приведено в качестве примера.

Цитата(Aliance @  17.11.2006,  00:00 Найти цитируемый пост)
дырка это или нет?
Мое мнение - дырочка... а-ля замочная скважина.

Цитата(Aliance @  17.11.2006,  00:00 Найти цитируемый пост)
почему-то ' и " в скрипте экранируються (слешем \), хотя в сорцах явно это не замечано
magic_quotes? Не стоит на них полагаться, в новых версиях их по умолчанию отключают, а в 6-й вообще планируют убрать.



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Mal Hack
Дата 17.11.2006, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(Aliance @  17.11.2006,  00:00 Найти цитируемый пост)
Стоит вопрос возможности выцарапывания админского пароля.


Цитата(Mal Hack @  14.11.2006,  22:32 Найти цитируемый пост)
при очень удчном стечении обстоятельств и вывести ее в браузер 

Или. Применительно к данному случаю. У тебя идет выборка из таблица с админами. Проверяешь права. "Хакер" берет и пишет условие туда, такое что выборка вернет простого пользователя но с админскими правами. К примеру.
SELECT `*` from `users` where user_name = $name AND `isadmin` = true
Представляем себе инъекцию вида: $name = $name OR  `isadmin` = false
SELECT `*` from `users` where user_name = $name AND `isadmin` = true
При условии, что результат запроса обрабатывается не по данным, а по mysql_num_rows = 1
Вот... Писал тупо, может и не совсем верно, но суть я думаю ты можешь понять.


Цитата(Aliance @  17.11.2006,  00:00 Найти цитируемый пост)
Mal Hack, ну значит по идеи, в некоторых случаях можно не производить проверку безопастности?

Всегда надо.


Цитата(SelenIT @  17.11.2006,  00:15 Найти цитируемый пост)
magic_quotes? Не стоит на них полагаться, в новых версиях их по умолчанию отключают, а в 6-й вообще планируют убрать.

Во-во.. Вырубаем из через .htaccess.


PM ICQ   Вверх
Aliance
Дата 17.11.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



SelenIT, ага, статью прочел, позновательно smile

Спасибо всем за комментарии, делаем вывод что дырка есть и скрипт написан не корректно! Пойду доложу владельцу скрипта  smile 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.3173 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.