решения задач по tinkoff CTF – Telegram
решения задач по tinkoff CTF
1.23K subscribers
29 photos
14 files
35 links
Здесь будут скидываться райтапы по заданиям по Tinkoff CTF.

Райтапы от других людей тоже приветствуются, по ним писать в ЛС: @EvgenyKurmysa
Download Telegram
Forwarded from Alexey Kirillov
CTF 2023
В скрипте видим, что шифрование симметричное, в generate_gamma генерируется массив по размеру шифруемого/расшифровываемого файла и xor'ится с ним.
Проблема во времени генерации "гаммы": в массив кладётся по 8 байт, которые являются результатом тяжёлых вычислений в цикле.
Представим n1 и m1 в виде последовательности f:
f[0] = 0, f[1] = 1, f[i] = u * f[i-1] - v * f[i-2]
тогда m1 для n будет f[n+2].
Воспользуемся wolframalpha и постараемся упростить (первый скриншот). Подставим a, b, x, y из файла задания, корни сократились до единицы, а в вычислении теперь участвуют только степень и параметры a и x.
Перепишем m1 * n1 в виде со второго скриншота, и подставим a и x. Получим (13 ** i - 12 ** i) * (113 ** i - 112 ** i).
Для степени из условия этого недостаточно, но мы видим, что само произведение у нас сразу урезается делением по модулю, поэтому используем алгоритм быстрого возведения в степень по модулю. Остаётся добавить заменённый код и запустить расшифровку.
Forwarded from Сергей Руденко ☭Серп☭
Элементарно, Ватсон! на С#

string str1 = "H_S_|_e_gImt-o_tdondFS_ta_nlv0PgOSuSKGyCen3s_td_:Oc|iuM__t_aiFCeLasaea|T:d_oStoo_te-osiaL35rdf}:Mppnym|F_itnhecfF4:_npdnohtke_|_Eped_bC_Kch|enu_ig_Daendw_Ren4IFShcrEiahit0Kr_maoese_ci_e5i|cnnr_itavtseneUelHe_n_crGtgblcn-eddaCrs_i|elddgyoonpa0trrshul3G_:_iuAe:LdS_p_:h_cltr_ffie:tr|n_P_3cdS_|oeu4es_7Ekm|iG_{ce|_gCe0aumt_ES-wns:doA_v_e|crM5kr-Mlh}fucAea_e_ecp__umriHsCeese_|_aaa|_lt1dnDrGleeTml_3do_ale_CM-CnrrIpafL:dBerl:chesIWelKserfuy_auygn3_{s__|ne|_te___anmees|1rlErs|edaVA_Ji|ag-rs_rfSrcey_sCO1ellc|:iRinfamCdo_c:GertDes|3_hn7si_rC_cLn0RnpaerMt|hcou_:|S:haaY|sJiaGtscn0ees_yaf-oampb_-u_ir}_Keepsre_eym_reM_x{_sl_iRt_sTsg|ce_nteadFnM_Rs_yH_AEtlTdocJphteI4yDk__n:otOPoo1siT_tw_i?Utoeeo:nm_riH2d_u|uuen:tnubhrtn|6fhc_r_deEune:_SnK5b|a_eerRaihkCh{ntFiTiRvmsi_taDe_LCtTrsnonteohtC_sochcaim|sThn_y71hihy|ek_e_fa}rW:raet_do-thed4_icaoe|-r3Crkfr|1a|glfeFen_|efrtEp_rn";

for(int q=12; q<40; q = q + 4)
{
string str = "";
Console.WriteLine(q);
int first = q / 4;
for(int i = 0; i < first; i++)
{
for (int z = i; z < str1.Length; z = z + q)
{
str += str1[z];
}
}
for (int i = ((q/2)+(first-1)); i >= first ; i--)
{
for (int z = i; z < str1.Length; z = z + q)
{
str += str1[z];
}
}
for (int i =(q / 2) + first; i < q; i++)
{
for (int z = i; z < str1.Length; z = z + q)
{
str += str1[z];
}
}
for (int g = 0; g < str.Length; g++)
{
string ch = "";
if (str[g].ToString() == "t")
{
ch += str[g];

if (str.Length > g + 4)
{
if (str[g + 1].ToString() == "c")
{
ch += str[g + 1];
if (str[g + 2].ToString() == "t")
{
ch += str[g + 2];
if (str[g + 3].ToString() == "f")
{
ch += str[g + 3];
for (int t = 4; t < 50; t++)
{
ch += str[g + t];
}
Console.WriteLine(g.ToString() + "" + ch);
Console.ReadKey();
}
}
}
}
}

}

}
🤡5
Forwarded from Кобяков Сергей
Ватсон
По схеме шифрования понимаем, что это модификация сциталы. Расшифровываем через онлайн декодер (https://www.dcode.fr/scytale-cipher). Получаем почти читаемый текст. Флаг из него не подходит, но это ожидаемо, потому что в этой схеме 2 цилиндра, а не один. Видим, что декодер расшифровал это с 32 буквами на виток, а значит нам на 2 цилиндра надо меньше. В шифротексте 864 символа, значит следующий меньший делитель после 32 будет 27. Разобьем недорасшифрованный текст по 27 символов. Видим начало флага tctf{Cr1 и пытаемся найти продолжение для него на других строках. Долго искать не пришлось, потому что оно было на предыдущей строке
👍3👏2
Forwarded from Michael Andersen
Лига новичков, задача Человек-Жук.
На сайте каждый note можно получить по его индексу, но некоторые репортажи зашифрованы в архивы. Посмотрел первые 20 записей по id, среди которых был пользователь petya.parkin, который публиковал незашифрованные репортажи про человека-жука. Но один из его репортажей все же был зашифрован (под индексом 10, https://t-bugman-18kk0hkv.spbctf.net/note/10). Я скачал этот архив и сегодня ночью ставил его на перебор. 6 часов, не перебрал.
Потом решил исходник разобрать, посмотрел как работает сайт скопировал себе генератор паролей для архивов. Он оказался уязвимым, я создал 100 млн паролей по такому же алгоритму и у них у всех первая буква была одна из 5 конкетных, вторая из 8, третья из 20, четвертая из 16 ну и дальше примерно по смыслу. А сам пароль всего из 8 символов. Благодаря этому количество перебора сократилось до 168 млн комбинаций, я сделал следующую маску для john-the-ripper и он уже перебрал все пароли. В архиве лежал адрес на веб-страницу с флагом.
Маска для джона:
-mask='[M, N, O, Y, Z][2, D, G, T, W, j, m, z][A, B, E, F, I, J, M, N, Q, R, U, V, Y, Z, c, d, g, h, k, l][0, 1, 2, 3, 4, 5, h, i, j, k, l, m, w, x, y, z][M, N, O, Y, Z][2, D, G, T, W, j, m, z][A, B, E, F, I, J, M, N, Q, R, U, V, Y, Z, c, d, g, h, k, l][0, 1, 2, 3, 4, 5, h, i, j, k, l, m, w, x, y, z]'
👍6👏1
Forwarded from S
Задача про землекопов лига опытных.
Открываем в режиме разработчика бразуер. Смотрим сеть.
Видим там запрос, раскрываем его и через курл тыкаем
curl -X PUT https://site.ctfapi/cloner/{id} -H "Content-Type: application/json" -d '{"config": {"count": 1000000}}'

Оно не срабатывает, подбираем количество каунтов опционально.

Как то так, вроде ничего не перепутал, но смысл точно тот.
Не записывал к сожалению решение(
Forwarded from VRN
Гипнолуч
Скачиваем исходники на go и видим что с именем dr.cosmodinamikov не удастся зарегистрироваться. Пробуем им войти и использую это имя и как пароль. Внутри читаем прикольные комменты тех, кто побывал тут до тебя 😁👍
😱5👎3😁1
Так, только сейчас разобрался с чатами, не прошло и года
2
Forwarded from thxStuck
Регистрируемся и заходим на сайт.

Нас встречают зашифрованные файлы.
Forwarded from thxStuck
к доменному имени через / добавляем docs

https://t-bugman-18kk0hkv.spbctf.net/docs

мы переходим на FastApi

Тут у нас есть все Get и Post запросы сайта
😱5👍1
Forwarded from thxStuck
Видим /bugman-photos-stash-20240328
Нажимаем на него и тыкаем Try it out -> Execute