---
# System prepended metadata

title: PicoCTF  2023 Forensics Writeup
tags: [picoCTF2023]

---

[![hackmd-github-sync-badge](https://hackmd.io/17cUlB5SSv6LU2l6RjGTXw/badge)](https://hackmd.io/17cUlB5SSv6LU2l6RjGTXw)
> [time=Sun, Oct 29, 2023 10:34 PM]
> [name=Nguyen Minh]
## 1. hideme
- Tags: **steganography**
- Link đề bài: [Link](https://play.picoctf.org/practice/challenge/350?category=4&originalEvent=72&page=1&solved=0)
- Thử sử dụng `binwalk` tìm các file ẩn giấu. Ta phát hiện được một vài file nén zip. Download các file này về máy và tiến hành kiểm tra chúng.
![](https://hackmd.io/_uploads/BkZs9xnfp.png)
- Dùng `ls` lục lọi một chút, ta tìm được file **flag.png**. Quá nhanh cho bài đầu tiên.
>
![](https://hackmd.io/_uploads/rkPKnYRMp.png)

## 2. PcapPoisoning
- Tags: **pcap**
- Link đề bài: [Link](https://play.picoctf.org/practice/challenge/362?category=4&originalEvent=72&page=1&solved=0)
- Bài này có vẻ cũng khá nhanh khi ra chỉ dùng `strings` kiểm tra các xâu có trong file và `uniq` để xóa các xâu trùng.
![](https://hackmd.io/_uploads/S1C81qRMT.png)

## 3. who is it
- Tags: **email**
- Link đề bài: [Link](/https://play.picoctf.org/practice/challenge/388?category=4&originalEvent=72&page=1&solved=0)
- Thử đọc email đề cho và ta phát hiện địa chỉ IP của người gởi.
![](https://hackmd.io/_uploads/B1IUW9Rfp.png)
- Tra thông tin địa chỉ IP bằng `whois` và ta có được tên thật sự của người gởi (hay flag cần tìm).
![](https://hackmd.io/_uploads/ByZWM90zp.png)

## 4. FindAndOpen
- Link đề bài: [link](https://play.picoctf.org/practice/challenge/348?category=4&originalEvent=72&page=1&solved=0)
- Tiến hành dùng `Wireshark` để khảo sát file Pcap đề cho.
![image.png](https://hackmd.io/_uploads/rkOXFHWXp.png)
- Mở **Protocol Hierachy Statistics** kiểm tra các thành phần gói tin và ta đã phát hiện các **Data** khả nghi. Sử dụng Filter lọc chúng ra và tiến hành phân tích tiếp.
![image.png](https://hackmd.io/_uploads/rkduYHbXp.png)
- Có 52 gói tin chứa data và ta không thể follow các streams để theo dõi. Để ý các data này là các chuỗi có nghĩa và thấy có gợi ý rằng flag đã bị tách thành nhiều phần. Vậy ta sẽ lọc lấy toàn bộ các data này ra, chuyển nó từ Hex về ASCII và xem ta có gì nào.
![image.png](https://hackmd.io/_uploads/SkHXcBZ7p.png)
- Thêm luôn `uniq` để lọc các data trùng nhau và chuyển toàn bộ về ASCII, ta nhận được 1 đoạn mã **base64** ở giữa. Giải mã đoạn **base64** này và ta nhận được nửa flag đầu. Và *bí mật* mà đề nhắc đến chính là mật khẩu của file zip đề cho. Mất một khoảng thời gian lớn để tôi có thể nhận ra nó ;-;
![image.png](https://hackmd.io/_uploads/HkPE3BZX6.png)
- Giải nén file zip bằng password là nửa flag lúc nãy và ta tìm được flag. 
![image.png](https://hackmd.io/_uploads/By5m6HbQa.png)

## 5. MSB
- Tags: **steganography**
- Link đề bài: [link](https://play.picoctf.org/practice/challenge/359?category=4&originalEvent=72&page=1&solved=0)
- Kiểm tra sơ bộ về bức ảnh này, ta phát hiện ảnh bị nhiễu kì lạ. Nguyên nhân bị nhiễu có thể đến từ việc các bit trọng số cao bị chỉnh sửa. Thêm quả tựa bài "MSB" thì ta hướng ngay đến việc kiểm tra bit cao nhất. Để ý ảnh dạng **8-bit/color RBG**, đây sẽ là chìa khóa đưa ta đến flag.
![image.png](https://hackmd.io/_uploads/SJWGKYGQ6.png)
- Ta sẽ sử dụng tool `stegsolve` và vào mục *Data Extract*.
![image.png](https://hackmd.io/_uploads/By8AqKz7T.png)
- Ảnh có dạng **8-bit/color RBG** và ta cần tách bit có trọng số cao nhất. Vậy ta sẽ lấy bit 7 của Red, Blue và Green. Sau đó ta đã thu được một đoạn text có nghĩa.
![image.png](https://hackmd.io/_uploads/r1M5stGXp.png)
- Lưu đoạn text vào file **tmp.txt**, sử dụng `grep` kiểm tra và ta đã phát hiện flag có trong đoạn text. Ta không thấy hết flag vì nó bị ngắt dòng. Đến đây ta chỉ việc xử lí chỗ ngắt dòng và dấu cách thừa, ta có flag.
![image.png](https://hackmd.io/_uploads/Sy6zpKM7a.png)

## 6. Invisible WORDs
>Do you recognize this cyberpunk baddie? We don't either. AI art generators are all the rage nowadays, which makes it hard to get a reliable known cover image. But we know you'll figure it out. The suspect is believed to be trafficking in classics. That probably won't help crack the stego, but we hope it will give motivation to bring this criminal to justice!
Download the image [here](https://artifacts.picoctf.net/c/403/output.bmp)
- Nhìn vào bức hình đề cho, ta biết chắc chắn nó có vấn đề :v 
- Mình đã mở raw data của bức ảnh bằng Okteta và nhìn thấy điều thú vị sau khi cuộn xuống.

![Screenshot 2024-01-24 144015](https://hackmd.io/_uploads/SyUOGrRFT.png)
- Từ offset `0x52d88` trở đi thì mình thấy các cột `FF 00` như thế này. Đây là gợi ý về việc dữ liệu sẽ ngăn cách nhau bởi 2 bytes.

![Screenshot 2024-01-24 151456](https://hackmd.io/_uploads/Bke2vr0Ka.png)
- Quay trở lại đầu thì mình phát hiện ra chữ `PK` là header của file zip. Đúng ra thì header của file zip là `50 4B 03 04` nhưng ở đây nó đã bị ngăn cách thành `50 4B` và `03 04`. 
- Ta dễ dàng kết luận: file zip đã được giấu trong file bmp ban đầu và theo dạng ứng với 2 bytes zip thì có 2 bytes bmp liền sau. 
- Viết code Python trích xuất file zip ra thôi, lấy từ đoạn `0x8C`. Nhưng như vậy thì khi trích ra sẽ dính phải nùi `FF 00` ở cuối, nên ra chỉ trích đến `0x52D88`.
```python!
with open("output.bmp", 'rb') as f:
    image = f.read()

start = 0x8c 
end = 0x52d88 
zip_data = b''

o = open("new_output.zip", 'wb')

for i in range(start, end, 4):
    zip_data += image[i:i+2]

o.write(zip_data)
o.close()
```
- Giải nén file `new_output.zip` ta được file `ZnJhbmtlbnN0ZWluLXRlc3QudHh0`. Giải mã bằng base64 ta được tên file là `frankenstein-test.txt`. Giờ tìm flag trong đây thoi.
![Screenshot 2024-01-24 153334](https://hackmd.io/_uploads/ryv_sH0Ya.png)


## 7. UnforgottenBits
- Tags: **disk**
- - Link đề bài: [link](https://play.picoctf.org/practice/challenge/383?category=4&originalEvent=72&page=1&solved=0)





