Рубрика «Занимательные задачки»

 

Поиск уязвимости методом фаззинга и разработка шеллкода для её эксплуатации - 1 Для поиска уязвимостей все средства хороши, а чем хорош фаззинг? Ответ прост: тем, что он дает возможность проверить, как себя поведёт программа, получившая на вход заведомо некорректные (а зачастую и вообще случайные) данные, которые не всегда входят во множество тестов разработчика.

Некорректное завершение работы программы в ходе фаззинга позволяет сделать предположение о наличии уязвимости.

В этой статье мы:

  • продемонстрируем, как фаззить обработчик JSON-запросов;
  • используя фаззинг, найдём уязвимость переполнения буфера;
  • напишем шеллкод на Ассемблере для эксплуатации найденной уязвимости.

Разбирать будем на примере исходных данных задания прошлого NeoQUEST. Известно, что 64-хбитный Linux-сервер обрабатывает запросы в формате JSON, которые заканчиваются нуль-терминатором (символом с кодом 0). Для получения ключа требуется отправить запрос с верным паролем, при этом доступа к исходным кодам и к бинарнику серверного процесса нет, даны только IP-адрес и порт. В легенде к заданию также было указано, что MD5-хеш правильного пароля содержится где-то в памяти процесса после следующих 5 символов: «hash:». А для того, чтобы вытащить пароль из памяти процесса, необходима возможность удалённого исполнения кода.
Читать полностью »

Секрет быстрого программирования: не задумывайтесь - 1


Программировать быстро — это легко! Так считает инженер-программист компании Google, который все публикации в своем блоге подписывает лаконичным «Макс». Макс также работает главным архитектором, комьюнити-менеджером и релиз-менеджером в Bugzilla Project. Мы в Alconost впечатлились и перевели его советы о том, можно ли как научиться программировать с космической скоростью.

Если обсуждать с разработчиками сложность кода, они часто говорят, что хотят писать простой код, но из-за давления дедлайнов и более глубинных причин у них не хватает времени или знаний для того, чтобы выполнить задачу и оптимизировать решение до максимальной простоты.

Они, конечно, правы в том, что в условиях сжатых сроков разработчики, как правило, будут писать сложный код. Впрочем, дедлайны не должны приводить к сложности. Вместо фразы «Этот дедлайн помешал мне написать простой код» можно произнести равноценную: «Я недостаточно быстро программирую, чтобы писать просто». То есть чем быстрее вы как программист — тем меньше влияния на качество вашего кода имеют дедлайны.

Теперь давайте разберемся, как, собственно, стать быстрее? Может, это врожденное магическое умение? Надо ли быть «умнее» других, чтобы быть быстрым?

Нет, это вообще не магия и не врожденный дар. На самом деле существует всего одно простое правило, считаясь с которым, со временем вы полностью решите проблему:
Читать полностью »

Всем привет, я написал клавиатурный тренажер под Android в Unity3D, он не сильно заточен под особых детей, а предназначен для широкого пользователя (ну я так думаю). И в этом посте я хочу рассказать о проблеме перекрывания части экрана клавиатурой и способах ее решения.

ChairInput. Пишем игру в Unity, управляемую с помощью виртуальной клавиатуры Android. Проблема с углом обзора камеры - 1
Читать полностью »

image Многие слышали о NoSQL базе данных Tarantool, знают о том, что она умеет хранить данные в памяти, очень быстро их обрабатывает и обладает высокой производительностью. Тарантул был написан серьезными ребятами, которые обслуживают сервисы с сотнями тысяч запросов в секунду.

Система кажется сложной. Несмотря на российские корни, изначально даже не было документации на русском языке. Чем же может помочь этот мощный инструмент обычным парням — программистам и начинающим разработчикам?

Попробуем написать простой занимательный сервис, способный выдержать большую нагрузку. И никакого SQL!
Читать полностью »

Новогодние праздники и январь прошли очень быстро и вместо большого количества курсов для конкурса Stepik Contest команда Stepik получила множество запросов с просьбами продлить дедлайн. Мы решили продлить срок конкурса до 31 марта, а сейчас — подвести промежуточные итоги, ответить на вопросы и разъяснить все неочевидные моменты конкурса.

Итак, конкурс Stepik Contest, дедлайн 31 марта, чтобы выиграть от $2K до $10K нужно создать 20+ задач по темам IT на платформе Stepik, adaptive.stepik.org.

Дедлайн конкурса Stepik Contest продлен до 31 марта, самое время создавать IT-задачи - 1
Читать полностью »

Будут ли роботы стоять в пробках? - 1Эта история началась с того что я застрял в пробке на хайвее, не особенно большой, но полчаса простоял практически на месте. И, как это часто бывает, пробка рассосалась сама по себе — не было впереди ни аварии, ни ремонта, просто машины в какой-то момент начали двигаться быстрее, еще быстрее, и все — свободная дорога впереди.
Чем обычно занимаются в пробках? Ну кто-чем и когда-как, а я в тот день был в мирном философском настроении — просто сидел и размышлял. Вспомнил в частности пост на Гиктаймс о робомобилях где в комментариях бурно сравнивали манеру вождения людей и роботов и в конце кажется пришли к выводу что будущее на дорогах за AI, при нем и движение станет безопаснее и средняя скорость возрастет. Интересно, а пробки тогда будут? Другими словами, насколько пробки обусловлены внешними (обьективными) обстоятельствами, и насколько эффектом толпы, агрессивной или наоборот тормозной манерой вождения? Заодно вспомнилась прочитанная когда-то книга где утверждалось что моделирование дорожного трафика — одна из самых сложных математических задач, которая до сих пор не решена. Ну это наверное давно уже неправда, читал я это давно и книга уже тогда была не новой, сейчас уже наверняка и теории правильные написали, и на компьютерах своих все посчитали. Хотя… пробки же остались? В общем, полет фантазии было уже не остановить.
Итак, под катом мы попытаемся построить более-менее осмысленную модель движения транспорта на дороге и, если повезет, постараемся смоделировать разницу в вождении водителя-человека и AI. Я разумеется отдаю себе отчет что этой проблемой профессионально занимаются целые организации и вообще очень умные люди, но тем интереснее. И вообще, ставьте себе нереальные цели.
И еще одно — я убежденный сторонник думанья головой, поэтому в этом посте компьютерного моделирования не будет, вообще совсем не будет, только хардкорный карандаш и бумага.

Читать полностью »

Не так давно в нашей подборке полезных материалов речь шла о поступлении в вуз. Однако пройти обучение у преподавателей Университета ИТМО можно и без поступления — достаточно записаться на открытый онлайн-курс Университета и попробовать свои силы в программировании, фотонике, реологии, оптике и других направлениях, которые развивает Университет ИТМО. Возможно, такой курс поможет кому-то определиться с направлением обучения и будущих исследований или лучше подготовиться к вступительным испытаниям (что особенно актуально, например, для поступающих в магистратуру).

Открытые онлайн-курсы от Университета ИТМО - 1Читать полностью »

И снова здравствуйте. Обычно я пишу статьи в качестве разработчика, но сегодня хочется поделиться опытом проведения экзамена по информационной безопасности в Московском Политехе. По-моему получилось довольно интересно. Задание даже может быть полезным начинающим тестировщикам и пентестерам. Но вначале я немного расскажу про то, как проходили занятия в течении семестра — чтобы было понятно, как мы дошли до жизни такой.

Экзамен для будущих «русских хакеров» в Московском Политехе - 1

Читать полностью »

Эй, телевизор, ты что, самый «умный»? - 1 Про опасности использования «умных» телевизоров слышали, наверное, все. Говорят, что они наблюдают за владельцем и прослушивают его разговоры. Но это не тревожит большинство пользователей, которые продолжают спокойно заполнять формы авторизации прямо на экране TV.

Мы решили проверить, реально ли сделать что-то интересное с умным телевизором, не имея физического доступа к нему (спойлер: реально!), и готовы рассказать об этом на примере разбора задания с NeoQUEST!
Читать полностью »

КДПВ (в представлении художника)
Если вы интересуетесь функциональным программированием или даже пытаетесь его потихоньку освоить то вам, наверняка, не раз приходилось слышать, что главным отличием от привычного вам императивного подхода является тот факт, что программы строятся от общего к частностям, а не наоборот. Т.е. сначала вы определяетесь с тем, что вы хотите получить, а потом уже — как этого достичь. Такая простая, казалось бы, мысль обычно не дает мозгу покоя и вызывает множественные фрустрации в попытках написать что-нибудь полезное. Если эта история про вас, или вам просто интересно немного научится хаскеллю и ФП продолжайте чтение и я покажу вам как все просто. Статья в стиле «некогда объяснять, пиши».

Читать полностью »