Фиксированная глубина 3000 не работала на быстрых боксах: на 10.10.10.1
id растут >1000/мин, приватные ролики чекера ушли на 12000 вниз от top и
сплойт возвращался пустым.
Теперь сканируем блоками по 2000 сверху вниз до 14000 и выходим, как только
набрали 6 целей -- на медленных боксах это по-прежнему один блок.
Проверено: 4 флага с 10.10.10.1 (глубина 12042), 3 с 10.10.10.5
(глубина 1653), на 10.10.10.2 корректно определился патч.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Единственный рабочий вектор на данный момент: LFI закрыли уже все команды
(проверил .1/.4/.5 -- везде 404), а keygen разобрали далеко не все.
Токен считается только от video id: seed=(seed*17+42)%62 по алфавиту base62,
30 символов, ключа нет. Форжим -> POST /access пишет строку в access ->
haveAccess() пропускает легально -> /watch отдаёт description, /vtt субтитры.
Поиск целей: приватное видео выдаёт себя размытым превью. /feed показывает
лишь 50 последних, а id растут ~500/мин из-за чужого флуда, поэтому
чекерские ролики лежат на глубине в сотни-тысячи id. Сканируем 3000 id в
50 потоков; echo отдаёт статику только на GET (HEAD => 405), так что
пробуем GET с Range: bytes=0-0 -- один байт вместо всего PNG.
6 отказов /access подряд => команда запатчена, выходим рано.
Проверено вживую: 3 флага с 10.10.10.5, 1 с 10.10.10.1, на 10.10.10.4
корректно определился патч.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- tiktak_vtt_path_traversal.py: ../ в ?id=, подбирает рабочий шаблон
один раз и переиспользует на остальных ID.
- tiktak_vtt_auth_bypass.py: рассинхрон SQL/FS ('./7' => MySQL 0, файл
public/vtt/7.vtt), работает даже если запатчат только traversal.
- tiktak_private_preview_leak.py: резкое превью приватного видео,
OCR опционален, без pytesseract молча не печатает мусор в stdout.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Комбинированный сплойт: V1 SSTI->RCE через имя юзера *.html, V3 SSRF через
Origin, V4 прямой database :38002, V5 прямой content :38004, V2 захват
аккаунта перерегистрацией. Векторы независимы — патч одного не глушит остальные.
Энумерация жертв: комментарии к картинкам + `ls` через RCE.
V1 использует свежее имя юзера на каждый раунд: Flask вне debug не перечитывает
шаблоны, и после первого рендера Jinja отдаёт закэшированную версию.
Проверено на стенде: собирает все посаженные флаги.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NN8sHQuGbTBLGGkJyfxzXr