---
# System prepended metadata

title: '(Write-up) Reversing.Kr: Easy ELF'
tags: [Writeup, Reversing.kr]

---

# (Write-up) Reversing.Kr: Easy ELF

# ****🤔O****verview

Chall này là một file Linux. Khi chạy file này, chương trình sẽ yêu cầu người dùng nhập vào một chuỗi bất kỳ, chương trình sau đó sẽ kiểm tra và in ra kết quả trên màn hình

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


# 💻Problem

Để giải quyết bài này, chúng ta sẽ tìm hiểu cách mà chương trình hoạt động và tìm ra được chuỗi đúng (Cũng có thể chính là auth key của chall này).

# 🚩Let’s go

Mở chương trình trong IDA và tìm nơi thực hiện việc kiểm tra chuỗi nhập vào, và đây là đoạn code thực hiện việc đó:

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


Hàm **sub_8048451** sẽ được gọi và lấy giá trị trả về để kiểm tra với 1, nếu đúng thì sẽ gọi tới hàm **sub_80484F7()** - Đây là hàm để in ra lời nhắn **Correct**

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


Xem qua hàm **sub_8048451()** để xem cách nó hoạt động.

![](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F79f36589-48fc-4756-ad62-07f0135e84d3%2F79130e45-6663-4d5c-8a80-ef3b95584013%2FUntitled.png?table=block&id=2a5f1a4b-9e0c-4ca1-a975-98381e6fda43&cache=v2)


Ở đây, chương trình sẽ so sánh các ký tự trong chuỗi nhập vào mới mã ascii, các biến **byte_804A020** → **byte_804A025** lần lượt là giá trị của các ký tự của chuỗi được nhập vào. Bên cạnh đó, một số ký tự bị XOR sau đó mới được đi so sánh. Bây giờ, chỉ cần tìm ra các ký tự này và nối chũng lại thành chuỗi là chúng ta đã tìm được auth key của bài này

```python
auth_key = ""

# byte_804A020 ^= 0x34
# byte_804A020 == 120  
byte_804A020 = 120 ^ 0x34 # = 76
auth_key += chr(byte_804A020)
# => auth_key[0] = 'L'

byte_804A021 = 49   
auth_key += chr(byte_804A021)
# => auth_key[1] = ''

# byte_804A022 ^= 0x32u
# byte_804A022 != 124
byte_804A022 = 124 ^ 0x32 # = 78
auth_key += chr(byte_804A022)
# => auth_key[2] = 'N'

# byte_804A023 ^= 0x88u
# byte_804A023 == -35
byte_804A023 = (256 - 35) ^ 0x88 # = 85
auth_key += chr(byte_804A023)
# => auth_key[3] = 'U'

# byte_804A024 != 88
byte_804A024 = 88
auth_key += chr(byte_804A024)
# => auth_key[4] = 'X'

print(auth_key)
# auth_key = "L1NUX"
```

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


Vậy key của bài này là **`L1NUX`**