Привет^3☕️
Зачем брутить пароль, если его можно просто сбросить?😎
Об этом и поговорим.
А в чем собственно дело?🙂
Вот вы сохранили хэшированный пароль. Добавили в него уникальную солькак по-питерски✨ . Казалось бы - все секурненько. Но нет. Ведь защищать только проверку пароля недостаточно)
Если для сброса генерируется токен, а его можно перехватить или легко воссоздать, то это отличная возможность для хакера, чтобы избежать высоких счетов за электричество.💡
Следует проверять весь функционал сайта, который связан с аутентификацией.
Предлагаю вам оценить данный подход😮 :
• Password reset broken logic
• Password reset poisoning via middleware
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Зачем брутить пароль, если его можно просто сбросить?
Об этом и поговорим.
А в чем собственно дело?
Вот вы сохранили хэшированный пароль. Добавили в него уникальную соль
Если для сброса генерируется токен, а его можно перехватить или легко воссоздать, то это отличная возможность для хакера, чтобы избежать высоких счетов за электричество.
Следует проверять весь функционал сайта, который связан с аутентификацией.
Предлагаю вам оценить данный подход
• Password reset broken logic
• Password reset poisoning via middleware
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5❤3✍1
Привет^3☕️
В👨💻
Лабу не назовешь сложной, но она дает повод попробовать🙂
Задач в ИБ много, и все разнообразные. Почти всегда они не связаны с программированием, но в тоже время умение автоматизировать какие-то задачи может здорово пригодиться: воспроизвести алгоритм при реверсе, написать какой-нибудь деобфускатор или написать имитацию C2 сервера, чтобы поймать запрос.
Поэтому не стоит зацикливаться только на программировании. Это когда-то было и моей ошибкой.😔 А если вы уже ебать лох, как и я что-то умеете — то эти знания можно здорово применить.
В разборе я буду использовать python модуль —земля вам пузом. 🫡 ⌨️
• Encoding Challenge
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#crypto #writeup
В
ROT мне ноги — сегодня снова криптография, и даже немножечко программирования.Лабу не назовешь сложной, но она дает повод попробовать
Python для автоматизации. Новички часто спрашивают: нужно ли им знать программирование, чтобы идти в ИБ? Ответ неоднозначный, но все же скорее нет, чем да. Задач в ИБ много, и все разнообразные. Почти всегда они не связаны с программированием, но в тоже время умение автоматизировать какие-то задачи может здорово пригодиться: воспроизвести алгоритм при реверсе, написать какой-нибудь деобфускатор или написать имитацию C2 сервера, чтобы поймать запрос.
Поэтому не стоит зацикливаться только на программировании. Это когда-то было и моей ошибкой.
В разборе я буду использовать python модуль —
pwntools. Его часто используют для pwn, поэтому имеет смысл с ним познакомиться. При желании лабу можно решить на любом языке, даже на brainfuck • Encoding Challenge
#crypto #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤5✍1❤🔥1
Привет^3☕️
Я уже писал про брутфорс в контексте взлома архива 📄. Поэтому рекомендую почитать пост и статью, там есть полезные ссылки на различные вордлисты.
Если не получается обойти стену, то можно ее проломить.💪 Брутфорс никто не отменял. Сложно ли это - нет. Долго ли это - да. Но таков путь.🤨
Сайты защищаются от подобных атак: блокируют🤔
Предлагаю вам попробовать самим🍸 :
• Broken brute-force protection, IP block
• Brute-forcing a stay-logged-in cookie
• Offline password cracking
• Password brute-force via password change
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Я уже писал про брутфорс в контексте взлома архива 📄. Поэтому рекомендую почитать пост и статью, там есть полезные ссылки на различные вордлисты.
Если не получается обойти стену, то можно ее проломить.
Сайты защищаются от подобных атак: блокируют
IP, используют CAPTCHA. Ну а вдруг прокатит?)Предлагаю вам попробовать самим
• Broken brute-force protection, IP block
• Brute-forcing a stay-logged-in cookie
• Offline password cracking
• Password brute-force via password change
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
3❤4👨💻1
Привет^3☕️
Продолжаем изучать реверс. Медленно, но верно. Помните я упомянул про🤬
Реверс - практический навык, поэтому без практики не обойтись👉 . Поэтому как всегда будут лабки:
• Nostr 7
• crackme1
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#reverse #writeup
Продолжаем изучать реверс. Медленно, но верно. Помните я упомянул про
XOR😇, назвав его граалем криптографии? Так вот - я не врал. Сегодня снова он)Реверс - практический навык, поэтому без практики не обойтись
• Nostr 7
• crackme1
#reverse #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤4✍1👨💻1
Привет^3☕️
Сегодня в лабе будет достаточно интересный способ обхода аутентификации.😱 Заключается он в логической ошибке обработки паролей. А именно, парсер успешно парсит список паролей и любезно проверяет каждый из переданных. Это позволяет обойти защиту от брутфорса🏋️♂️ .
Так что предлагаю вам попробовать решим самим. Я не шучу. Вот лаба. Идите. Решайте. Кыш😉 :
• Broken brute-force protection, multiple credentials per request
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Сегодня в лабе будет достаточно интересный способ обхода аутентификации.
Так что предлагаю вам попробовать решим самим. Я не шучу. Вот лаба. Идите. Решайте. Кыш
• Broken brute-force protection, multiple credentials per request
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤🔥5✍1❤1🔥1👨💻1
Привет^3☕️
Нужна ли ИБ-шникам математика?❓ Да… Нет… Возможно… Вы не понимаете, это другое
В криптографии она используется активно. Поэтому, хотите вы того или нет, придётся с ней познакомиться😐 . Начнём не с самого коварного - алгоритма Евклида.🏆
• Greatest Common Divisor
• Extended GCD
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#crypto #writeup
Нужна ли ИБ-шникам математика?
В криптографии она используется активно. Поэтому, хотите вы того или нет, придётся с ней познакомиться
• Greatest Common Divisor
• Extended GCD
#crypto #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤🔥3👍1🤝1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
Время-деньги🤑 . Сегодня разберем достаточно интересный тип узявимостей, а именно ошибки в бизнес логике.
Для обнаружений ошибок нужно понять, как работает сервис и предположить, а что может пойти не так. Например, излишнее доверие клиентам. Не будет же клиент ковыряться в запросах, чтобы изменять поля. Не будет же? Правда?🤞
Идите и попробуйте сами:
• Excessive trust in client-side controls
• Inconsistent security controls
• Weak isolation on dual-use endpoint
ПЫ.СЫ:иногда действия пользователей похожи на то, что происходит на видео
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Время-деньги
Для обнаружений ошибок нужно понять, как работает сервис и предположить, а что может пойти не так. Например, излишнее доверие клиентам. Не будет же клиент ковыряться в запросах, чтобы изменять поля. Не будет же? Правда?
Идите и попробуйте сами:
• Excessive trust in client-side controls
• Inconsistent security controls
• Weak isolation on dual-use endpoint
ПЫ.СЫ:
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤8🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
Продолжаем набивать руку на простых лабах по реверсу🔧 . Довольно часто в подобных задачах нужно подобрать последовательность, которая пройдет валидацию в бинарном файле. Можно сказать, что мы пишем своеобразный кейген🗝 .
Подобные задачи встречаются, когда есть необходимость деобфусцировать или расшифровать файл. Приходится разбирать алгоритм, чтобы добраться до сокровенного🏝 )
Лабки👨💻 :
• Nostr 3
• Nostr 4
• Nostr 5
• Nostr 6
P. S:
Скоро я получу зарубежную карту, а это значит лишь одно - видос/стрим по вайб-реверсу не за горами:3
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#reverse #writeup
Продолжаем набивать руку на простых лабах по реверсу
Подобные задачи встречаются, когда есть необходимость деобфусцировать или расшифровать файл. Приходится разбирать алгоритм, чтобы добраться до сокровенного
Лабки
• Nostr 3
• Nostr 4
• Nostr 5
• Nostr 6
P. S:
#reverse #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤5✍1👍1🔥1🗿1😎1
Please open Telegram to view this post
VIEW IN TELEGRAM
1🗿9🤓1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
Продолжим разбирать ошибки в бизнес логике веб-приложений.😼
Поведение и ограничения внутри приложения нам не всегда известны.🤔 Но до некоторых из них можно добраться, внимательно изучив само приложение и
• Inconsistent handling of exceptional input
• High-level logic vulnerability
• Low-level logic flaw
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Продолжим разбирать ошибки в бизнес логике веб-приложений.
Поведение и ограничения внутри приложения нам не всегда известны.
HTTP-запросы. Предлагаю вам этим и заняться:• Inconsistent handling of exceptional input
• High-level logic vulnerability
• Low-level logic flaw
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4🤝3😎2✍1👨💻1
Media is too big
VIEW IN TELEGRAM
Привет^3☕️
Если вы не знали как выглядит отчаяние и просьбы о помощи, то вот вам видео😱
Наконец вышла запись моего доклада напрогрев пошел)🤑 . А если вам что-то не понравилось, то можете кинуть в меня авокадо🥑
Приятного просмотра🍔
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#оффтоп
Если вы не знали как выглядит отчаяние и просьбы о помощи, то вот вам видео
Наконец вышла запись моего доклада на
VolgaCTF. Так что ставьте лайки, пишите комментарии(Приятного просмотра
#оффтоп
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤8🤣2🏆2👏1🍓1🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
Пользователь - непредсказуемый зверь🫤 . Он может сделать то, о чём вы даже не задумывались. Предусмотреть все возможные варианты развития событий невозможно🌟 .Тем не менее стоит попытаться покрыть как можно больше подобных выходок: пустые аргументы или их отсутствие, пропуск шагов, отправка сразу нескольких одинаковых аргументов.
А что может произойти, если такую обработку не сделать😫 , я предлагаю вам рассмотреть при прохождении следующих лабораторных работ:
• Authentication bypass via flawed state machine
• Insufficient workflow validation
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Пользователь - непредсказуемый зверь
А что может произойти, если такую обработку не сделать
• Authentication bypass via flawed state machine
• Insufficient workflow validation
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍5❤2👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥3👨💻2✍1❤1👍1
Привет^3☕️
В сегодняшних разборах мы активно будем использовать промокоды🤑 . В некоторые моменты даже слишком активно. Как я и говорил ранее, для обнаружения подобных уязвимостей нужно думать чуть иначе. Поэтому пробуем и запоминаем☕️ :
• Flawed enforcement of business rules
• Infinite money logic flaw
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
В сегодняшних разборах мы активно будем использовать промокоды
• Flawed enforcement of business rules
• Infinite money logic flaw
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
3❤🔥3❤2✍1
Привет^3☕️
Замечал и за собой, и за другими🤔 : придя к одному паттерну поведения, мы часто перестаём замечать альтернативные варианты.
В анализе малвари не всегда нужно бросаться реверсить всё подряд😇 , писать деобфускатор или придумывать хитрые способы обхода антиотладки. Иногда достаточно посмотреть на проблему под другим углом🤯 - заменить пару байт и использовать уже готовый код.
Пример такого подхода вы увидите в одной из следующих лабораторных работ🙂 :
• spbctf_2_x86
• spbctf_3_x86_64
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#reverse #writeup
Замечал и за собой, и за другими
В анализе малвари не всегда нужно бросаться реверсить всё подряд
Пример такого подхода вы увидите в одной из следующих лабораторных работ
• spbctf_2_x86
• spbctf_3_x86_64
#reverse #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
2👨💻4✍1❤1
Привет^3☕️
Во время поиска уязвимостей или просто при изучении сервиса иногда можно наткнуться на странные зашифрованные или закодированные данные😶 . К сожалению (а может и к счастью — если смотреть с точки зрения безопасности🤔 ), расшифровать их напрямую не удаётся.
Но если разработчик решил не заморачиваться и использовать один и тот же алгоритм в разных местах — и где-то даже сам эти данные декодирует — этим вполне можно воспользоваться.
Ведь зачем ломать голову и пытаться расшифровать строку вручную, если сайт любезно сделает это за нас?)☺️
• Authentication bypass via encryption oracle
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Во время поиска уязвимостей или просто при изучении сервиса иногда можно наткнуться на странные зашифрованные или закодированные данные
Но если разработчик решил не заморачиваться и использовать один и тот же алгоритм в разных местах — и где-то даже сам эти данные декодирует — этим вполне можно воспользоваться.
Ведь зачем ломать голову и пытаться расшифровать строку вручную, если сайт любезно сделает это за нас?)
• Authentication bypass via encryption oracle
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤6✍2👨💻1
Привет^3☕️
Некоторые из вас уже слышали эту историю, но, как оказалось, всё было куда интереснее, чем я предполагал.😱
Недавно я стал жертвой хакерской атаки.🥴 В ней хакеры покусились на святое — мой сервер ⛏ ⛏ ⛏ ⛏ . Сам “взлом” вряд ли можно назвать полноценным взломом, но инцидент получился забавным, поучительным и, как ни странно, идеально подошёл для небольшого разбора.
Решил показать вам эту историю со стороны — как выглядит инцидент информационной безопасности, какие вопросы возникают в процессе расследования и как вообще ведётся разбор подобного очень “серьёзного” кейса.😁
Так что запасайтесь попкорном, наливайте кофе и готовьтесь посмеяться.😂
P.S: советую запустить видосик. Так будет еще смешнее
• Взлом майнкрафт сервера
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#linux #story
Некоторые из вас уже слышали эту историю, но, как оказалось, всё было куда интереснее, чем я предполагал.
Недавно я стал жертвой хакерской атаки.
Решил показать вам эту историю со стороны — как выглядит инцидент информационной безопасности, какие вопросы возникают в процессе расследования и как вообще ведётся разбор подобного очень “серьёзного” кейса.
Так что запасайтесь попкорном, наливайте кофе и готовьтесь посмеяться.
P.S: советую запустить видосик. Так будет еще смешнее
• Взлом майнкрафт сервера
#linux #story
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥5❤4👨💻1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
На очереди достаточно интересный вид уязвимостей —⚡️
Это уязвимость в логике приложения. Чаще всего она позволяет обойти или превысить ограничения, заложенные в бизнес-логике.
Рассмотрим простой пример — одноразовая скидка на заказ.😐
Логика может выглядеть так:
- Проверить, что промокод ещё не использован.
- Применить скидку к сумме заказа.
- Обновить запись в БД, отметив использование промокода.
Повторное использование должно блокироваться на первом шаге. Но если один и тот же промокод отправить дважды почти одновременно, приложение начнёт обрабатывать оба запроса. И пока один из процессов не успел выставить флаг, оба запроса могут пройти проверку и успешно применить скидку.🤑
Как искать❓
Чтобы обнаружить такую уязвимость, стоит выполнить следующие шаги:
- Найти полезный или критичный endpoint, который можно использовать один раз, либо он ограничен по количеству обращений.
- Отправить несколько запросов в очень короткий промежуток времени, пытаясь превысить лимиты.
Даже если запросы отправлены одновременно, всё равно существуют внешние факторы☠️ — сеть, задержки, балансировка, разные времена обработки — которые могут привести к расхождению и, соответственно, к успешной эксплуатации уязвимости.
• Bypassing rate limits via race conditions
• Limit overrun race conditions
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
На очереди достаточно интересный вид уязвимостей —
Race Condition.Это уязвимость в логике приложения. Чаще всего она позволяет обойти или превысить ограничения, заложенные в бизнес-логике.
Рассмотрим простой пример — одноразовая скидка на заказ.
Логика может выглядеть так:
- Проверить, что промокод ещё не использован.
- Применить скидку к сумме заказа.
- Обновить запись в БД, отметив использование промокода.
Повторное использование должно блокироваться на первом шаге. Но если один и тот же промокод отправить дважды почти одновременно, приложение начнёт обрабатывать оба запроса. И пока один из процессов не успел выставить флаг, оба запроса могут пройти проверку и успешно применить скидку.
Как искать
Чтобы обнаружить такую уязвимость, стоит выполнить следующие шаги:
- Найти полезный или критичный endpoint, который можно использовать один раз, либо он ограничен по количеству обращений.
- Отправить несколько запросов в очень короткий промежуток времени, пытаясь превысить лимиты.
Даже если запросы отправлены одновременно, всё равно существуют внешние факторы
• Bypassing rate limits via race conditions
• Limit overrun race conditions
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
3❤6👍1👨💻1
Привет^3☕️
Как вы можете знать, я занимаюсь вирусной аналитикой. И это далеко не всегда только про реверс.😇 Хотя сам процесс реверса может быть интересным и очень познавательным, есть и другой навык, тесно связанный с ним — бинарная эксплуатация.
Бинарная эксплуатация — это обнаружение и использование уязвимостей скомпилированных программ для изменения их поведения и работы.🤓
К сожалению, в своей практической работе я почти не сталкивался с этим направлением. Но оно невероятно сложное, глубокое и интересное.😵💫 Что-то я уже знаю, а что-то мне только предстоит изучить. Поэтому предлагаю пройти этот путь вместе со мной.
Настоятельно рекомендую освоить реверс хотя бы на базовом уровне. Без него - никак.🤔 Можете использовать для этого мои разборы)
Ну что ж, приступим:
• Want the flag
• call
• String
• 31337
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#pwn #writeup
Как вы можете знать, я занимаюсь вирусной аналитикой. И это далеко не всегда только про реверс.
Бинарная эксплуатация — это обнаружение и использование уязвимостей скомпилированных программ для изменения их поведения и работы.
К сожалению, в своей практической работе я почти не сталкивался с этим направлением. Но оно невероятно сложное, глубокое и интересное.
Настоятельно рекомендую освоить реверс хотя бы на базовом уровне. Без него - никак.
Ну что ж, приступим:
• Want the flag
• call
• String
• 31337
#pwn #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥4❤3✍1👨💻1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет^3☕️
Продолжаем разбирать⚡️
😎 Race Condition на одном эндпоинте
Параллельная отправка нескольких запросов с разными параметрами на один и тот же эндпоинт может вызвать состояние гонки. Такие атаки могут требовать нескольких попыток, так как операции должны выполниться в определённом порядке.
Подтверждение адреса электронной почты или любые действия, основанные на отправке писем - отличная цель для🤩
Электронные письма часто отправляются в отдельном фоновом потоке после того, как сервер уже вернул
☝️ Race Condition на нескольких эндпоинтах
Интересный тип уязвимости появляется, когда логика обработки разнесена по нескольким эндпоинтам.
При тестировании таких гонок становится сложнее выровнять окна выполнения, даже если запросы отправляются одновременно.
Проблема часто возникает по двум причинам:
☀️ задержки, вызванные сетевой архитектурой;
☀️ задержки, связанные с обработкой, специфичной для каждого эндпоинта.
Задержки внутреннего соединения чаще всего не мешают поиску гонок. Важно только уметь отличать такие задержки от факторов, которые действительно влияют на окно уязвимости.
Одним из подходов может быть connection warming: если после отправки пробного запроса (например,
👀 Дополнительно:
☀️ Гонки на нескольких эндпоинтах сложнее, так как окно уязвимости распределено между независимыми обработчиками.
☀️ Иногда помогает не только одновременная отправка, но и выравнивание нагрузки - например, многократными запросами до нужного момента.
☀️ Параллельное тестирование можно усиливать подходами вроде задержки сетевых пакетов, искусственного флуда, использования тестовых прокси.
Примеры каждого из типов уязвимости можете найти в лабах ниже🫢 :
• Single-endpoint race conditions
• Multi-endpoint race conditions
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#web #writeup
Продолжаем разбирать
Race Condition.Параллельная отправка нескольких запросов с разными параметрами на один и тот же эндпоинт может вызвать состояние гонки. Такие атаки могут требовать нескольких попыток, так как операции должны выполниться в определённом порядке.
Подтверждение адреса электронной почты или любые действия, основанные на отправке писем - отличная цель для
Race Condition.Электронные письма часто отправляются в отдельном фоновом потоке после того, как сервер уже вернул
HTTP-ответ. Это создаёт внутрисерверное окно гонки - идеальный момент, когда две параллельные операции могут конфликтовать друг с другом.Интересный тип уязвимости появляется, когда логика обработки разнесена по нескольким эндпоинтам.
При тестировании таких гонок становится сложнее выровнять окна выполнения, даже если запросы отправляются одновременно.
Проблема часто возникает по двум причинам:
Задержки внутреннего соединения чаще всего не мешают поиску гонок. Важно только уметь отличать такие задержки от факторов, которые действительно влияют на окно уязвимости.
Одним из подходов может быть connection warming: если после отправки пробного запроса (например,
GET /) последующие запросы обрабатываются в пределах короткого временного окна, то такие задержки можно считать шумом и игнорировать. В противном случае задержка действительно становится помехой и способна скрыть существующую гонку.Примеры каждого из типов уязвимости можете найти в лабах ниже
• Single-endpoint race conditions
• Multi-endpoint race conditions
#web #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
3👨💻3❤2✍1
Привет^3☕️
Продолжаем реверсить и постепенно подключать😙
Вы также могли заметить, что я начал использовать🤫 Давно хотел попробовать - и вот дошли руки. Поэтому если у вас есть опыт применения ИИ в реверсе, поделитесь им в комментариях.
• task2
• task4
↖️ 📕 тг • 🤬 чатик • ✏️ посты
#reverse #writeup
Продолжаем реверсить и постепенно подключать
gdb, чтобы упростить себе жизнь. Ведь зачем разбирать что-то сложное и запутанное, если можно просто поставить бряку и ничего не реверсить?)Вы также могли заметить, что я начал использовать
LLM в своей работе.• task2
• task4
#reverse #writeup
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥4❤1👨💻1