Forwarded from Gregor Zaitseff
мама-мама, а у нас есть ооп дома?
да, сынок
ооп дома:
да, сынок
ооп дома:
Forwarded from Maxim Anfinogenov
Этот наш мир / Хабр
https://habr.com/ru/post/211903/
https://habr.com/ru/post/211903/
Хабр
Этот наш мир
Иногда я проверяю свою рабочую почту и вижу там сообщение «Анонс доклада: Вершиннная эллиптическая криптография в N-сторонних Бананотряховых[1] пространствах». Я смотрю аннотацию и там говорится...
В общем, попросили написать, как поднимать цтфд, чтобы не обосраться.
Описал свой опыт с последней kksctf open, у нас вроде борда работала достаточно адекватно.
Описал свой опыт с последней kksctf open, у нас вроде борда работала достаточно адекватно.
Forwarded from Rubikoid
По теме поднятия цтфд.
Это по большей части относится к версии либо 2.2.0, 2.1.5, либо что там было в мастере примерно на время декабря, я уже если честно не помню.
Момент 0: не раздавать статику питоном, т.е. использовать нжинкс, апач или что вашей душе угодно). Питон под напором желающих получить статику помирает и уходит в мир иной.
Момент 0.5: не стоит использовать дев-сервер фласка, а какой-нибудь wsgi-сервак, типа gunicorn или uwsgi. Опять же, дев-сервак - такая себе вещь в плане производительности. Про отключение дебагрежимов, дебаглогов и всего этого даже не говорю.
Мы юзали gunicorn, примерно так,
Ну и в нжинксе просто proxy_pass, гайдов, как это сделать - море, в том числе на вики ctfd.
Момент первый: Вот тут лежит файлик, отвечающий за рассылку ивентов. Это одна из фичей цтфд, однако зачастую она никому нафиг не сдалась.
Плюс она генерит зависшие TCP-стримы, которые кладут сервак.
Я отключал тупо вырезанием кода, но вот судя по гитхабу в 2.3.0 добавили возможность вырубить это через конфиг.
Плюс, если используешь SQLite (я её в больших проектах не люблю, но есть люди, умеющие ей хорошо делать), надо правильно настраивать, чтобы она в диск не упиралась. Я просто поставил постгрес и не парился, он отрабатывает достаточно хорошо.
Это по большей части относится к версии либо 2.2.0, 2.1.5, либо что там было в мастере примерно на время декабря, я уже если честно не помню.
Момент 0: не раздавать статику питоном, т.е. использовать нжинкс, апач или что вашей душе угодно). Питон под напором желающих получить статику помирает и уходит в мир иной.
Момент 0.5: не стоит использовать дев-сервер фласка, а какой-нибудь wsgi-сервак, типа gunicorn или uwsgi. Опять же, дев-сервак - такая себе вещь в плане производительности. Про отключение дебагрежимов, дебаглогов и всего этого даже не говорю.
Мы юзали gunicorn, примерно так,
gunicorn --log-level=warn --bind=unix:/tmp/.sock_openkksctf -w 4 "CTFd:create_app()" -t 4 -D --access-logfile ./access.log --error-logfile ./error.log, -w и -t - параметры, отвечающие за число воркеров и тредов в этих воркерах, подбирай исходя из мощности сервака (число логических ядер).Ну и в нжинксе просто proxy_pass, гайдов, как это сделать - море, в том числе на вики ctfd.
Момент первый: Вот тут лежит файлик, отвечающий за рассылку ивентов. Это одна из фичей цтфд, однако зачастую она никому нафиг не сдалась.
Плюс она генерит зависшие TCP-стримы, которые кладут сервак.
Я отключал тупо вырезанием кода, но вот судя по гитхабу в 2.3.0 добавили возможность вырубить это через конфиг.
Плюс, если используешь SQLite (я её в больших проектах не люблю, но есть люди, умеющие ей хорошо делать), надо правильно настраивать, чтобы она в диск не упиралась. Я просто поставил постгрес и не парился, он отрабатывает достаточно хорошо.
GitHub
CTFd/__init__.py at master · CTFd/CTFd
CTFs as you need them. Contribute to CTFd/CTFd development by creating an account on GitHub.
Forwarded from Rubikoid
Если по таскам - все, где может быть RCE, LFI, fork/zip/etc бомбы - запихивать от греха подальше в докер с лимитами по памяти, числу pid'ов (с этим аккуратно, перед цтфкой надо проверить, что при обычном решении того же пывна через сокат, сокат сможет форкнуться при большом наплыве народа).
Что будет, если не перезапускать десктоп телеги неделями (спойлер: ничего хорошего).
Память течет, какие-то ивенты в (судя по всему) бесконечный цикл упали
Память течет, какие-то ивенты в (судя по всему) бесконечный цикл упали
Тут поинтересовались, смог бы я объяснить рядовому работяге, например строителю, азы своей предметной области.
Вообще не вопрос. <Эстеты -- в сад, тут для рядовых строителей, а не для вас>
Итак:
ОСНОВНЫЕ ПОНЯТИЯ ИБ ДЛЯ ГУМАНИТАРИЕВ РАБОЧЕГО КЛАССА
Вы пытаетесь пройти на стройку и представляетесь вахтёру своим именем, после чего проходите внутрь. Это идентификация.
Перед тем, как пройти внутрь, вы вынуждены показать вахтёру свой паспорт. Это аутентификация.
Вы вынуждены показать одному вахтёру свой паспорт, а второму по памяти назвать его серию, номер и вспомнить, что находится на странице с номером, похожим на Кенни. Это двухэтапная аутентификация.
Вахтёр требует не только паспорт, но и водительское удостоверение. Это двухфакторная аутентификация.
Какой-то пидарас наебал вахтёра, показав ему чужие документы. Это подделка учётных данных.
Вахтёр в курсе, что его наебали, но вынужден пропустить, т.к. документы подлинные. Это имперсонация.
Вахтёр выдаёт вам на шею бейдж с персональным идентификатором. Это сессионный токен.
Вы показываете этот бейдж при входе в любую дверь. Это авторизация.
Какой-то пидарас спиздил чужой бейдж и везде его показывает. Это угон сессии.
Он же подложил вахтёру копию бейджа со своим идентификатором и дождался, пока тот не отдаст его вам. Это фиксация сессии.
Вы потоптались по только что налитому полу, не оставив в нём следов и никто кроме вас не знает, что это вообще случилось. Это приватность.
Вы потоптались по только что налитому полу, оставили в нём следы, но никто не знает, какой пидарас это сделал. Это анонимность.
Вахтёр записал в журнал дату и время вашего прихода и ухода. Это журналирование.
Вахтёр ходит за вами по пятам и записывает вообще все ваши действия. Это ретроспектируемое журналирование.
Вахтер сделал запись в журнал, что пару дней назад к ним на стройку устроился какой-то стрёмный работник с такой же фамилией, что и у вас. Это корелляция событий.
Вахтёр в ходе корелляции событий периодически жмёт кнопку, после чего начинает орать сирена, мигать красные лампочки, а весь персонал съёбывает по подвалам, откладывая кирпичи. Это SIEM.
Прораб за это наконец-таки набил вахтёру ебало. Это актуализация правил корелляции событий SIEM.
На стройке вам на голову может упасть кирпич. Это угроза.
Кирпич весит килограмм и ещё пол кирпича, ускорение свободного падения 9,80665 м/с², солнце в зените, а кирпичи могут находиться на любом из отстроенных этажей <плюс все вытекающие из этого расчёты>. Это модель угроз.
Какой-то мужик в шляпе рассказывает вам, как правильно строить модель угроз. Это Лукацкий.
Какой-то пидарас может сбросить вам кирпич на голову с верхнего этажа. Это атака.
Для этого он пройдёт на стройку, поднимется на самый верхний этаж, возьмёт в руки кирпич, прицелится и сбросит его вниз. Это эксплоит.
Ваша голова не предназначена для попадания в неё кирпича с заданным весом и ускорением. Это уязвимость.
Вы убираете со стройки все кирпичи, исключаете наличие на ней каких-то пидарасов и, на всякий случай, ещё и верхних этажей. Это защищённость.
Вы надеваете каску, чтобы хоть как-то снизить последствия попадания кирпича. Это безопасность.
У вас в правилах безопаности предписано всем носить каски, вы получили за них пушкинскую премию от регуляторов, но персонал как ходил без касок, так и продолжает ходить. Это бумажная безопасность.
Какой-то пидарас пробрался на стройку, залез на верхние этажи, убил кирпичом прораба и теперь радостно требует заплатить ему за это вознаграждение. Это багхантер.
Прораб пока ещё жив, тот пидарас кидается кирпичами во все стороны, а вахтёр уже заебался нажимать на красную кнопку. Это багхантер с анализатором защищённости.
Вы нанимаете двух прорабов, чтобы в случае смерти одного из них, работы не прекращались. Это формальная отказоустойчивость.
Вы нанимаете столько прорабов, сколько у вас кирпичей на стройке плюс ещё один. Это фактическая отказоустойчивость.
Вы покупаете устройство, кидающееся кирпичами во все стороны, на манер мячиков для тенниса. Это DAST.
Вообще не вопрос. <Эстеты -- в сад, тут для рядовых строителей, а не для вас>
Итак:
ОСНОВНЫЕ ПОНЯТИЯ ИБ ДЛЯ ГУМАНИТАРИЕВ РАБОЧЕГО КЛАССА
Вы пытаетесь пройти на стройку и представляетесь вахтёру своим именем, после чего проходите внутрь. Это идентификация.
Перед тем, как пройти внутрь, вы вынуждены показать вахтёру свой паспорт. Это аутентификация.
Вы вынуждены показать одному вахтёру свой паспорт, а второму по памяти назвать его серию, номер и вспомнить, что находится на странице с номером, похожим на Кенни. Это двухэтапная аутентификация.
Вахтёр требует не только паспорт, но и водительское удостоверение. Это двухфакторная аутентификация.
Какой-то пидарас наебал вахтёра, показав ему чужие документы. Это подделка учётных данных.
Вахтёр в курсе, что его наебали, но вынужден пропустить, т.к. документы подлинные. Это имперсонация.
Вахтёр выдаёт вам на шею бейдж с персональным идентификатором. Это сессионный токен.
Вы показываете этот бейдж при входе в любую дверь. Это авторизация.
Какой-то пидарас спиздил чужой бейдж и везде его показывает. Это угон сессии.
Он же подложил вахтёру копию бейджа со своим идентификатором и дождался, пока тот не отдаст его вам. Это фиксация сессии.
Вы потоптались по только что налитому полу, не оставив в нём следов и никто кроме вас не знает, что это вообще случилось. Это приватность.
Вы потоптались по только что налитому полу, оставили в нём следы, но никто не знает, какой пидарас это сделал. Это анонимность.
Вахтёр записал в журнал дату и время вашего прихода и ухода. Это журналирование.
Вахтёр ходит за вами по пятам и записывает вообще все ваши действия. Это ретроспектируемое журналирование.
Вахтер сделал запись в журнал, что пару дней назад к ним на стройку устроился какой-то стрёмный работник с такой же фамилией, что и у вас. Это корелляция событий.
Вахтёр в ходе корелляции событий периодически жмёт кнопку, после чего начинает орать сирена, мигать красные лампочки, а весь персонал съёбывает по подвалам, откладывая кирпичи. Это SIEM.
Прораб за это наконец-таки набил вахтёру ебало. Это актуализация правил корелляции событий SIEM.
На стройке вам на голову может упасть кирпич. Это угроза.
Кирпич весит килограмм и ещё пол кирпича, ускорение свободного падения 9,80665 м/с², солнце в зените, а кирпичи могут находиться на любом из отстроенных этажей <плюс все вытекающие из этого расчёты>. Это модель угроз.
Какой-то мужик в шляпе рассказывает вам, как правильно строить модель угроз. Это Лукацкий.
Какой-то пидарас может сбросить вам кирпич на голову с верхнего этажа. Это атака.
Для этого он пройдёт на стройку, поднимется на самый верхний этаж, возьмёт в руки кирпич, прицелится и сбросит его вниз. Это эксплоит.
Ваша голова не предназначена для попадания в неё кирпича с заданным весом и ускорением. Это уязвимость.
Вы убираете со стройки все кирпичи, исключаете наличие на ней каких-то пидарасов и, на всякий случай, ещё и верхних этажей. Это защищённость.
Вы надеваете каску, чтобы хоть как-то снизить последствия попадания кирпича. Это безопасность.
У вас в правилах безопаности предписано всем носить каски, вы получили за них пушкинскую премию от регуляторов, но персонал как ходил без касок, так и продолжает ходить. Это бумажная безопасность.
Какой-то пидарас пробрался на стройку, залез на верхние этажи, убил кирпичом прораба и теперь радостно требует заплатить ему за это вознаграждение. Это багхантер.
Прораб пока ещё жив, тот пидарас кидается кирпичами во все стороны, а вахтёр уже заебался нажимать на красную кнопку. Это багхантер с анализатором защищённости.
Вы нанимаете двух прорабов, чтобы в случае смерти одного из них, работы не прекращались. Это формальная отказоустойчивость.
Вы нанимаете столько прорабов, сколько у вас кирпичей на стройке плюс ещё один. Это фактическая отказоустойчивость.
Вы покупаете устройство, кидающееся кирпичами во все стороны, на манер мячиков для тенниса. Это DAST.
Вы покупаете виртуальный симулятор, делающий всё то же самое, что и DAST, но без стройки. Это SAST.
Вы покупаете модуль обратной связи между кидающимся устройством и симулятором стройки. Это IAST.
Вы заебались покупать и обратились за помощью к сторонней компании. Та предлагает вам приобрести новейшую бетономешалку от именитого вендора, чтобы решить проблему с кирпичами. Вы в душе не ебёте, как связаны бетономешалка и кирпичи, но таки покупаете. Теперь у вас с верхних этажей могут упасть не только кирпичи, но и блядская бетономешалка, что делает проблему кирпичей не такой уж и значимой. Это -- привлечение интегратора.
Производитель бетономешалки по вашему запросу выпускает патч, оснащающий её реактивной системой торможения в воздухе. По неведомым причинам это приводит к отказу строительного крана, эпидемии гриппа среди персонала и ухудшению вязких свойств бетона. Это ... <ой, да ладно, все вы прекрасно поняли, о какой компании идёт речь :))>
Вы наняли эксперта, чтобы тот проверил возможность проникновения на стройку, залезания на верхние этажи и сброса кирпичей на головы персонала. Это пентестер.
Пентестер не только смог убить прораба с помощью кирпича десятью разными способами, но и разрушил к ебеням весь объект, сжёг технику и заставил вахтёров сношать друг-друга. Это опытный пентестер, которому вовремя не обозначили скоуп тестирования.
Вы сделали всё мыслимое и немыслимое, чтобы упавший кирпич никого не убил, объект нельзя было разрушить, технику сжечь. И ещё пояса верности на вахтёров, чтобы наверняка. На следующий же день прораба прибивает к хуям отвалившаяся тормозная система бетономешалки...
Это реалии современной ИБ.
Оригинал
Вы покупаете модуль обратной связи между кидающимся устройством и симулятором стройки. Это IAST.
Вы заебались покупать и обратились за помощью к сторонней компании. Та предлагает вам приобрести новейшую бетономешалку от именитого вендора, чтобы решить проблему с кирпичами. Вы в душе не ебёте, как связаны бетономешалка и кирпичи, но таки покупаете. Теперь у вас с верхних этажей могут упасть не только кирпичи, но и блядская бетономешалка, что делает проблему кирпичей не такой уж и значимой. Это -- привлечение интегратора.
Производитель бетономешалки по вашему запросу выпускает патч, оснащающий её реактивной системой торможения в воздухе. По неведомым причинам это приводит к отказу строительного крана, эпидемии гриппа среди персонала и ухудшению вязких свойств бетона. Это ... <ой, да ладно, все вы прекрасно поняли, о какой компании идёт речь :))>
Вы наняли эксперта, чтобы тот проверил возможность проникновения на стройку, залезания на верхние этажи и сброса кирпичей на головы персонала. Это пентестер.
Пентестер не только смог убить прораба с помощью кирпича десятью разными способами, но и разрушил к ебеням весь объект, сжёг технику и заставил вахтёров сношать друг-друга. Это опытный пентестер, которому вовремя не обозначили скоуп тестирования.
Вы сделали всё мыслимое и немыслимое, чтобы упавший кирпич никого не убил, объект нельзя было разрушить, технику сжечь. И ещё пояса верности на вахтёров, чтобы наверняка. На следующий же день прораба прибивает к хуям отвалившаяся тормозная система бетономешалки...
Это реалии современной ИБ.
Оригинал
Думаю, можно попробовать попиарить свою поделку)
Если вкратце: какой-то joyreactor на минималках.
Чуть подробней - задолбало искать в сохраненных картинках/гуглить мемы/шаблоны для мемов, особенно когда меня гугл не понимает.
В итоге получился портал, на который можно сливать мемы/шаблоны с некоторым текстовым описанием что там на пикче.
Есть поиск по тексту, есть фича добавления на пикчу текста.
Еще запилил бота для телеги, через который можно грузить новые мемы и искать по базе.
Линк - https://rubikoid.ru, бот - @memdbbot
Если вкратце: какой-то joyreactor на минималках.
Чуть подробней - задолбало искать в сохраненных картинках/гуглить мемы/шаблоны для мемов, особенно когда меня гугл не понимает.
В итоге получился портал, на который можно сливать мемы/шаблоны с некоторым текстовым описанием что там на пикче.
Есть поиск по тексту, есть фича добавления на пикчу текста.
Еще запилил бота для телеги, через который можно грузить новые мемы и искать по базе.
Линк - https://rubikoid.ru, бот - @memdbbot
Я пишу на питоне прослойку между сишной либой, которая работает с виндовым драйвером
и шарповой либой, которая работает с directx'ом через еще пару прослоек
дурка какая-то
Python - connecting people
и шарповой либой, которая работает с directx'ом через еще пару прослоек
дурка какая-то
Python - connecting people
Тут готовится новый стандарт C - C2X (X, поскольку неизвестно, когда именно его выпустят).
Из интересный фичей, что точно в него войдут:
Функции
Атрибуты - ура, наконец-то будет единый красивый способ задавать атрибуты переменным вместо уродских
Выглядеть будет примерно так:
Из уже предложенных атрибутов: deprecated, fallthrough для использования в свичах, nodiscard, maybe_unused, noreturn.
Запретят K&R (объявление типов после "скобочек") способ указания аргументов функий. Больше нельзя будет сделать так:
Знаковые целые числа будут всегда считаться представленными дополнительным кодом.
Также есть ряд предложений, которые коммитет еще не принял, но они находятся в работе и скорее всего будут приняты:
Включение бинарных блобов сразу в исполняемый файл без танцев с бубном!
Можно будет задавать функции с безымянными параметрами:
Большая реформа обработки ошибок в стандартной либе. Предлагается из функции-шаблона генерировать четыре варианта функции, каждый из которых будет использоваться на усмотрение компилятора в зависимости от того, как её используется програмист.
И, наконец, пара изменений, которые не оформлены в предложения, однако члены комитета намелаки, что работа над ними ведется:
Вынос оператора typeof в стандарт, а не частные реализации в компиляторах.
И оператор defer, копирующая ключевое слово из Go, позволяющий выполнять какие-то действия по окончанию области видимости переменной.
Формально, некоторые компиляторы уже поддерживают такой атрибут (
Подробней - в оригинальной статье на хабре.
Из интересный фичей, что точно в него войдут:
Функции
strdup и stdndup - внезапно, их не было в стандартной либе.Атрибуты - ура, наконец-то будет единый красивый способ задавать атрибуты переменным вместо уродских
__attribute__ и __declspec.Выглядеть будет примерно так:
[[attr1]] struct [[attr2]] S { } [[attr3]] s1 [[attr4]], s2 [[attr5]];. Здесь attr1 относится к идентификаторам s1 и s2, attr2 относится к определению struct S, attr3 — к типу struct s1, attr4 — к идентификатору s1, attr5 — к идентификатору s2. Из уже предложенных атрибутов: deprecated, fallthrough для использования в свичах, nodiscard, maybe_unused, noreturn.
Запретят K&R (объявление типов после "скобочек") способ указания аргументов функий. Больше нельзя будет сделать так:
long maxl (a, b) long a, b; {return ...;}.Знаковые целые числа будут всегда считаться представленными дополнительным кодом.
Также есть ряд предложений, которые коммитет еще не принял, но они находятся в работе и скорее всего будут приняты:
Включение бинарных блобов сразу в исполняемый файл без танцев с бубном!
const int music[] = {
#embed int "music.wav"
};
Добавятся ключевые слова true, false, и заменятся alignas, alignof, bool, thread_local, static_assert вместо их же вариантов, но с нижним подчеркиванием в начале.Можно будет задавать функции с безымянными параметрами:
int main(int, char *[]) { return 0; }
Добавление полноценного nullptr, эквивалентного ((void*)0), и при приведении типов остающегося указателем.Большая реформа обработки ошибок в стандартной либе. Предлагается из функции-шаблона генерировать четыре варианта функции, каждый из которых будет использоваться на усмотрение компилятора в зависимости от того, как её используется програмист.
И, наконец, пара изменений, которые не оформлены в предложения, однако члены комитета намелаки, что работа над ними ведется:
Вынос оператора typeof в стандарт, а не частные реализации в компиляторах.
И оператор defer, копирующая ключевое слово из Go, позволяющий выполнять какие-то действия по окончанию области видимости переменной.
Формально, некоторые компиляторы уже поддерживают такой атрибут (
__attribute__((cleanup(free))) char *s = malloc(sizeof(*s));), но в стандарте о такой возможности ничего не говорилось.Подробней - в оригинальной статье на хабре.