---
# System prepended metadata

title: 'Simple BOF: Вредный пингвин'

---

Дан ELF файл. Сразу открываю его в IDA.

Смотрю дизассемблированый код:

![](https://hackmd.io/_uploads/r183vLYj3.png)

Замечаю следующие:

1. Проверка происходит по переменной v8, доступа к которой напрямую нет;
2. Значение переменной: 110 -> 'n';
3. Переменная v3 объявленна раньше v8, следовательно, с помощью переполнения буфера можно переписать значение переменной v8;
4. Если значение v8 = 134 = 'y' будет выведен флаг;

Приступим.

1. Вводим случаные символы (AAA):

![](https://hackmd.io/_uploads/BkS6qItin.png)

В IDA смотрю HEX дамп. 

![](https://hackmd.io/_uploads/HybSoLFon.png)

Введенные символы сохраняются по адрессу "00007FFEE5E8EBC0", значение v8 находится по адрессу "00007FFEE5E8EBDF". Следовательно значение v8 хранится через "00007FFEE5E8EBDF - 00007FFEE5E8EBC0 = 1F"; 1F -> 31 символ. Следовательно нужно ввести 31 случайный символ + 'y'

Результат: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy

Проверим:

![](https://hackmd.io/_uploads/Hy-HpIti2.png)

Отлично. Идём получать флаг.

![](https://hackmd.io/_uploads/SkKKpUKin.png)

Победа. Флаг - **CODEBY{0veRf0W_ch@r_SYMb0l}**