![image](https://habrastorage.org/webt/al/py/ef/alpyefagnx81cc2xc1ncjqs8lus.png)
В данной статье решим 25-е задание с сайта pwnable.kr.
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Решение задания otp
Продолжаем второй раздел. Скажу сразу, что сложнее первого, но в этот раз на предоставляют исходный код программы. Не забываем про обсуждение здесь(https://t.me/RalfHackerPublicChat) и здесь (https://t.me/RalfHackerChannel). Начнем.
Нажимаем на иконку с подписью otp. Нам дают адрес и порт для подключения.
![image](https://habrastorage.org/webt/78/8g/ia/788giamsvbjuxf_qhcj4ceain8o.png)
Подключаемся и осматриваемся на сервере.
![image](https://habrastorage.org/webt/iy/ai/j4/iyaij4_zzeun8bttztbqj2oxlja.png)
Флаг, который мы не можем прочитать, программа и ее исходный код. Давайте посмотрим исходник.
![image](https://habrastorage.org/webt/ge/ip/uz/geipuzt5bj7ly1_j6j6awyulur0.png)
Раберем его. Программа принимает в качестве аргумента пароль.
![image](https://habrastorage.org/webt/ji/cu/wo/jicuwo1fgppl4wgcjzqaohjllrq.png)
Далее в переменную otp сохраняется рандомные 16 байт.
![image](https://habrastorage.org/webt/va/jy/af/vajyafiluxfslppswuf7k0pqbn4.png)
В папке tmp создается файл со случайным именем (первые 8 байт otp) и в него записывается рандомные 8 байт (вторые 8 байт otp).
![image](https://habrastorage.org/webt/v2/ga/gm/v2gagmlonrpl6oo-n_yqdsgkbyq.png)
Зачем-то и созданного файла считывается значение и сравнивается с введенным паролем.
![image](https://habrastorage.org/webt/mk/gr/o_/mkgro_8qbueivgcqwysjkc2mhoq.png)
Здесь и присутствует уязвимость. Она заключается в промежуточном сохранении генерируемого числа в файл. Мы можем ограничить размер файла, к примеру до 0, тогда при записи и считывании с паролем будет сравниваться 0. Сделать это можно так.
# ulimit -f 0
![image](https://habrastorage.org/webt/sd/vp/lg/sdvplg3_3twhgnwjbh9b6tkocto.png)
Теперь запустим программу.
![image](https://habrastorage.org/webt/69/fo/eh/69foehaqqtd-a1m2ckwoaxr2vey.png)
Получаем ошибку. Не беда, ведб ее можно обработать с помощью того же питона.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
![image](https://habrastorage.org/webt/06/b8/gh/06b8ghtxbwx9qlihxuvlpkehnrq.png)
Получаем флаг и свои легкие 100 очков. И мы продолжаем: в следующей статье затронем Web. Вы можете присоединиться к нам в Telegram.
datacompboy
М… а
trap '' SIGINT
./otp 0
сработало бы?