---
# System prepended metadata

title: BKCTF2023 - TLT
tags: [Writeups]

---

# The Last Trace (Miscellaneous - Medium)

> Đã rất lâu rồi S mới nghe lại bản nhạc tuổi thơ nhưng tiếc rằng nó đã không còn nữa, trong khi tìm kiếm nó, S đã thấy 1 số thứ thú vị, hãy cùng tìm hiểu!
> FLAG FORMAT: BKSEC{XXX}

## Phân tích ban đầu

Khi bắt đầu challenge để tải và giải nén, ta có được một file `music.dat`, là một file text thuần. Nội dung của file là 1 dãy ký tự dài được tách làm các cụm 2 ký tự. Theo phỏng đoán thì đây có vẻ là hexdump của một file. Sử dụng một trình chuyển hex2bin như [cái này](https://tomeko.net/online_tools/hex_to_file.php?lang=en), ta tải được 1 file... không có định dạng cụ thể. 

## Phần 1: `music.dat`

Để xem nội dung hex của file một cách trực quan hơn, mình chép toàn bộ nội dung của file lên [CyberChef](https://gchq.github.io/CyberChef). Kết quả hiện ra như hình dưới. Có thể thấy dòng chữ `Created with ezgif.com GIF maker` cho thấy đây là 1 file GIF. Như vậy header của file đã bị corrupt, vì 6 byte đầu của GIF là `GIF89a`. 

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

Sau khi chỉnh sửa trực tiếp trên CyberChef, nó tự động đưa ra lựa chọn để render GIF. Và có vẻ như GIF là các phần nhỏ của một mã QR.

![](https://hackmd.io/_uploads/rJ2o_1G63.gif)

Sử dụng một trang web khác để tách các khung hình của GIF ra, ta thấy có 9 khung ghép thành 1 tấm ảnh lớn 3x3. Khi thực hiện tách và ghép khung, ta có 1 mã QR.

![](https://hackmd.io/_uploads/Bkh-FJz6h.png)

Khi quét QR, ta thu được nội dung sau:

> Nếu cảm thấy mệt quá, em cho mượn: https://drive.google.com/file/d/1xebJa87ARLdgYgYmR-5aLB1lu5ckZxRH, thì thầm em nói nhỏ: "https://www.youtube.com/watch?v=9ar6S2wHZA8 never die"

## Phần 2: Nhạc siêu nhân cuồng phong cực cháy

Vào link drive, ta có 1 file `.wav` là nhạc siêu nhân cuồng phong (???). Khi nghe thử, có thể thấy phần giữa file bị rè. Ta có thể xem phổ âm của file bằng tùy chọn `Spectrogram` trong Audacity. Trong phổ âm, ở đoạn khoảng 50s có một số thông tin đáng chú ý.

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

### Mã QR

Vì mã QR ở đây bị lẫn với một phần phổ âm thanh gốc nên không thể quét trực tiếp. Tuy nhiên, vẫn còn dữ kiện chưa dùng là link YouTube. Link dẫn đến một video đã bị đánh bản quyền. Theo dự đoán thì đây là nhạc siêu nhân bản gốc.

Bằng việc sử dụng một công cụ như yt-dlp (`yt-dlp ytarchive:9ar6S2wHZA8 --extract-audio --audio-format wav`) ta có được file âm thanh gốc. Sau đó, đưa vào Audacity cùng với file chỉnh sửa. 

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

Bằng việc thao tác trên file gốc (chỉnh độ to của âm bằng amplify, invert audio), sau đó mix 2 track lại với nhau, ta thu được 1 track thứ 3 bao gồm mã QR rõ hơn nhiều, do phần nhạc đã tự triệt tiêu sau khi mix.

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

Khi quét mã QR, ta thu được text: `h1dd3n-w4v-4ud1o -> ngol r`

### Link pastebin

Vì lý do nào đó mà mình không mở được cả trang web pastebin trong ngày hôm đó. Đồng thời, có vẻ như link pastebin bị thiếu 1 kí tự bị che mất. Vì dự đoán rằng chỉ có 1 kí tự và phần ID của mỗi link được mã hóa base64, nên team đã viết 1 script bằng Python để tự động hóa phần mở web và xem nội dung pastebin. Thay vì dùng scraping để lấy nội dung, team đã chụp màn hình trang web và nhìn chằm chằm khi script đang chạy =))) 

```python
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager


alpha = 'abcdefghijklmnopqrstuvwxyz' + 'abcdefghijklmnopqrstuvwxyz'.upper() + '1234567890-_'

for c in alpha:
    driver = webdriver.Firefox()
    driver.get(f'https://pastebin.com/{c}Wwx9n8N')
    driver.get_screenshot_as_file(f'{c}.png')
    driver.quit()
```

Rất may là script chạy nhanh và khi đến `https://pastebin.com/mWwx9n8N`, thu được ảnh chụp sau:

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

Khi lấy được mã, đưa lên [dCode](https://www.dcode.fr/cipher-identifier) xác định được đây là mã hóa base32. Giải mã ta có 1 phần của flag: 

`BKSEC{1_l0v3_xxxxxx-xxx-xxxxx}`

Ghép cả 2 phần vào với nhau, ta thu được flag hoàn chỉnh.

`BKSEC{1_l0v3_h1dd3n-w4v-4ud1o}`