Write-up-POSTimsya CTF
ПОСТимся
https://hackerlab.pro/categories/web/278a31a5-0091-4190-a189-bf374c5ded2d
Открывается сайт
Сразу же посмотрим код элемента через F12
Заметим форму отправку, а также скрипт, который на стороне сервера. Форма отправляется на /api/posts/search. В скрипте ниже можем понять, что запрос декодируется из base64 из поля filter.
Из GET главной страницы сделаем POST, а также обратимся к /api/posts/search
Получиться так
Видим, присылается в формате json три поля: content, id, title. Отправим в формате json кавычку(чтобы каждый раз не конвертировать в base64 воспользуемся расширением (https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100)
500-ая ошибка. sql-injection явно присутствует. Определим, сколько колонок выводится!
Три колонки. Определим, какая СУБД(Система Управления Базой Данных) используется(PayloadsAllTheThings/SQL Injection at master · swisskyrepo/PayloadsAllTheThings)
sqlite 3.40.1. Определим, какие таблицы есть
Таблица - flag, также название колонки - flag. Выведем сам флаг
ПОСТимся
https://hackerlab.pro/categories/web/278a31a5-0091-4190-a189-bf374c5ded2d
Открывается сайт
Сразу же посмотрим код элемента через F12
Заметим форму отправку, а также скрипт, который на стороне сервера. Форма отправляется на /api/posts/search. В скрипте ниже можем понять, что запрос декодируется из base64 из поля filter.
Из GET главной страницы сделаем POST, а также обратимся к /api/posts/search
Получиться так
Видим, присылается в формате json три поля: content, id, title. Отправим в формате json кавычку(чтобы каждый раз не конвертировать в base64 воспользуемся расширением (https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100)
500-ая ошибка. sql-injection явно присутствует. Определим, сколько колонок выводится!
Три колонки. Определим, какая СУБД(Система Управления Базой Данных) используется(PayloadsAllTheThings/SQL Injection at master · swisskyrepo/PayloadsAllTheThings)
sqlite 3.40.1. Определим, какие таблицы есть
Таблица - flag, также название колонки - flag. Выведем сам флаг