Показать сообщение отдельно

  #256  
Старый 24.06.2015, 14:07
BigBear
Новичок
Регистрация: 04.12.2008
Сообщений: 11
Провел на форуме:
69033

Репутация: 8
По умолчанию

Ну давай рассмотрим запрос:

Код:
SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(name)='\1\'
Ругается на незакрытую кавычку, так как обратный слэш экранирует кавычку, подставляемую по умолчанию.

Можно ли пропихнуть свой пэйлоад? Теоретически можно, если:

1) У тебя есть второй параметр в запросе, который мы можем контролировать. То есть первым параметром мы экранируем кавычку, превращая дальнейший запрос в строковое значение, а вторым параметром прокидываем свою нагрузку.

У тебя в запросе участвует только одна переменная, поэтому это - не наш случай.

Значит нужно пытаться дополнить запрос в рамках одной переменной.

Но для этого, нам надо закрыть первую кавычку.

2) Обязательным условием должно являться, чтобы кавычка не преобразовывалась, а проходила в чистом виде.

Проверяем:

123'\

Response

Код:
SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(name)='123'\'
Как видим, кавычка энкодится. Тухлый вариант.

Самый максимум этой баги - узнать текущий префикс к таблицам.
 
Ответить с цитированием