当前位置:网站首页>Vulnérabilité à l'injection SQL (contournement)

Vulnérabilité à l'injection SQL (contournement)

2022-06-25 11:18:00 Errorr0

Après avoir étudiéSQLLe principe de l'injectionSQLType d'injectionOn peut dire plus tard.SQLInjectionJ'ai déjà une idée générale,Mais en réalité, les développeurs ne peuvent pas vous permettre d'attaquer une base de données aussi facilement,Ils imposent généralement certaines limites aux données qui ont été saisies ou qui peuvent être saisies,Cet article est principalement consacré àSQLCode injecté ouwafFiltrer le contournement pour faire un résumé.

Contournement de cas

C'est la façon la plus simple et la plus facile de contourner les côtes de poulet,Il y a deux raisons à cela:SQLDéclarationsInsensible à la casse、Le filtrage des listes noires par les développeurs est trop simple.

 

Double écriture

Le principe du double contournement d'écriture est que l'arrière - plan utilise des correspondances régulières aux mots sensibles pour les remplacer par des blancs.C'est - à - dire si filtréselect,Nous entrons123select456 Les mots sensibles seront détectés plus tard,La dernière chaîne remplacée par123select456 ---> 123456.Le contournement de ce filtre est aussi simple que la double écritureselectC'est tout.,Par exemple::selselectect  ---> select ,Faites un tel filtrage et écrivez deux fois,Deux fois, trois fois, et ainsi de suite.Voir l'exemple suivant:

Il est clair ici que le mauvais message ,orÇa aurait dû être filtré, Nous utilisons la méthode de contournement décrite ci - dessus ,

 Ça a marché.,C'est ça.Double écritureMéthode,C'est très simple.

Filtrage des espaces

Si l'espace est filtré , L'idée principale est de trouver un substitut , Il y en a plusieurs qui peuvent remplacer l'espace :

Commentaire contourné  /**/ : Normalement, tant que celui - ci n'est pas filtré, il peut être remplacé .

Filtrage des parenthèses () : L'inclusion de tous les mots clés entre parenthèses peut remplacer la séparation des espaces comme suit ,

Normal:select * from user

Parenthèses:(select)*(from)(user)

urlCodage: Cette rencontre peut être tentée .Avec%20 Remplacer les espaces ou utiliser d'autres urlCodage

%09、%0a、%0b、%0c、%0d 、%a0、%00

Retour à la ligne de remplacement : Les retours de chariot peuvent également être utilisés comme séparateurs pour remplacer les espaces .

TabSubstitution:Tab Peut faire la fonction de séparation .

Filtrage des commentaires

Rencontre ce que nous utilisons habituellement --+ Filtrage des commentaires , Nous pouvons remplacer :

#、;%00、-- ( Deux moins un espace )

Fermer avec d'autres données :

select * from user where id='1'

                        ||

                        V

select * from user where id='1' or '1' ='1'

Filtrage des guillemets

Le filtrage des guillemets est disponible en deux versions complètes , L'un est que les guillemets ne peuvent pas apparaître L'un est d'être échappé , Le traitement de l'évasion est décrit dans l'article précédent comme un contournement par injection d'octets larges , Si les guillemets ne peuvent pas apparaître, ils doivent être utilisés , Vous pouvez lier les valeurs des paramètres à des guillemets simples ou doubles et les convertir en 16 Le système décimal est complété par 0x*****.

Filtrage des virgules

Il y a des fonctions ou des instructions qui nécessitent des virgules lorsqu'elles sont utilisées , Ainsi, la façon de contourner une virgule varie selon la fonction ou l'instruction .

substring()

Peu importe la fonction ,substrAvecsubstringPresque.. Vous pouvez voir que la virgule est appliquée d'en haut à en bas from……forRemplacer.

Si nécessairemid()Fonctions, Il y a aussi des façons de contourner les virgules avec substring()Même chose.,Avecfrom……for Remplacer la virgule .

limit 0,1

limit 0,1 Virgule présente , Donc si la virgule est filtrée, notre alternative est offset,C'est - à - dire:

Attention ici.,S'il est utiliséoffset, À l'origine, les données avant et après les virgules devaient être échangées entre elles .

union

On a besoin de select 1,2,3,4……, Et si les virgules sont filtrées, comment puis - je les contourner ici ? C'est très intéressant ici ,Requête conjointeselect 1,2,3,4…… Les tests peuvent être écrits séparément comme suit

Entre parenthèsesa、b、c Est nommé au hasard est omis asPour écrire, Pourquoi j'écrirais ça ? Pour que l'écriture filtre les virgules ,Nous utilisonsoffset Au lieu de ,

Donc le contournement des virgules pour les requêtes fédérées utilise joinRemplacer.

Filtrage égal

Si seulement le signe égal filtré peut être remplacé par ce qui suit

<> :Ça veut dire !=

regexp、like、rlike

 

Filtre d'opérateur logique

Filtréor、and、xor、not Peut être remplacé par un caractère correspondant :&&、||、| 、!

Si aucun ne peut être utilisé, envisager d'utiliser Produit cartésien(^),

Celui - ci peut être utilisé directement sans and or Ces connecteurs .

Contournement du codage

Le codage contourne la vérité la tradition est rarement utilisée , Mais parfois son utilisation peut vraiment surprendre , Alors, tu devrais comprendre .

Contournement hexadécimal

Substitution mutuelle de fonctions similaires

1)sleep() <-->benchmark()

2)ascii() <-–>hex()、bin(),Remplacer avant d'utiliser la conversion décimale correspondantestringC'est tout.

3)group_concat() <–->concat_ws()

4)substr() <--> substring() <--> mid()

5)user() <--> @@user、datadir–>@@datadir

6)ord() <-–> ascii(): Ces deux fonctions fonctionnent de la même façon dans le traitement de l'anglais ,Mais le traitement du chinois, etc., n'est pas uniforme.
 

RÉFÉRENCES:SQL Injecter la posture de contournement _C'est vraiment fort.!Blog de-CSDNBlogs_sqlInjectionfromContournement

SQL Lors de l'injection and、or Et si les caractères sont filtrés _litchi125Blog de-CSDNBlogs_sqlFiltration par injectionand

SQL Contournement du filtre d'injection _12622800Le blog technique de_51CTOBlogs

SQLInjection contournée - redglare - La blogosphère

https://www.csdn.net/tags/MtTaEgwsMTY0OTk1LWJsb2cO0O0O.html#2_12

原网站

版权声明
本文为[Errorr0]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/176/202206251101026037.html