Rating: 3.0

# Angry Guessing Game - 200 points

Angry Guessing Game

This game is currently in a trial mode. It asks for a license key to continue. Can you find this key?
guessing_game

Hints:
* Binary file was updated. Please reload the file

### Solution

Пробуем запустить нашу программу в linux, мы пытаемся угадать число загаданное в коде с помощью подсказок больше или меньше.
На третьем уровне программа требует от нас лицензионный ключ для того что-бы играть дальше.
Окей.
Открываем наш файл в дизассемблере IDA Pro.
Первым делом сразу открываем поиск всех строк которые вводит программа или были в коде:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_1.png)

Находим нужную нам строчку, будем отталкиваться от неё:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_2.png)

Нажимаем на клавиатуре "x", что бы посмотреть где использовалась фраза о правильном ключе:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_3.png)

Или с помощью контекстного меню Jump => Jump to xref to operand...

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_4.png)

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_5.png)

Повторяем наши действия:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_6.png)

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_7.png)

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_8.png)

Теперь когда мы пришли к месту где вызывается этот текст, нажимаем "f5" или как на скриншоте через контекстное меню, смотрим псевдокод на C++ для удобства читаемсти кода:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_9.png)

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

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_10.png)

Видим функцию "sub_6660" котрая сверяет ключ и в итоге отправляет нужный ответ нам:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_11.png)

Открываем эту функцию и смотрим её псевдокод. Смотрим что возвращает функция, и видим что переменная "v4" берётся из функции "sub_67D0".

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_12.png)

Смотрим что в ней:

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_13.png)

Видим значения очень похожие на ASCII значения английского алфавита. Переводим их в символы нажатием на клавиатуре "r":

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_14.png)

![](https://github.com/texh0k0t/VolgaCTF-2017-Quals-Write-Up/blob/master/Angry%20Guessing%20Game/assets/Screenshot_15.png)

Original writeup (https://github.com/texh0k0t/VolgaCTF-2017-Quals-Writeups/blob/master/Angry%20Guessing%20Game/README.md).