# Guessing ![Pasted image](https://hackmd.io/_uploads/r1-yjMyZgg.png) ## Step 1 Trước tiên thì ta cần biết ta được cung cấp những file gì và nó đến từ đâu: 1. **Thư mục `PackageHelp`** – Chứa hàng loạt file `.exe` (ví dụ `nmap.exe`, `ncat.exe`, `nping.exe`), cùng các thư viện `.dll` như `libcrypto-3.dll`, `libssl-3.dll`… → đây chính là bản phân phối **Nmap/Zenmap** dành cho Windows (kèm theo Python, GTK, icon, licences…) . – Bên trong có cả thư mục `zenmap` với các file Python (`python.exe`, `.pyc`) và thư viện GTK → đây là giao diện đồ họa **Zenmap** chạy trên Python 3.11 trong Windows . 2. **Thư mục `W3SVC1`** – Chứa các file log với tên kiểu `u_ex230516.log`, `u_ex230517.log`, … → định dạng log **Microsoft IIS** (Internet Information Services) trên Windows Server, thông thường nằm dưới `C:\inetpub\logs\LogFiles\W3SVC1` . Ngoài ra ta còn được tác giả cung cấp thêm bức ảnh nì nữa: ![webshell](https://hackmd.io/_uploads/SJgWgQJ-ex.png) `webshell.png` là một **screenshot của thư mục webroot trên server** sau khi webshell đã được upload lên. Tác giả dùng nó để: 1. **Lộ danh sách các trang .aspx** có thể bị lợi dụng để upload (ví dụ `NhanVienPro.aspx`, `Thuvien.aspx`, `Thu_vien2.aspx`, `Donvi.aspx`) — chính là những ứng cử viên ta sẽ tìm trong log để biết page nào chứa chức năng upload. 2. **Cho thấy các binary đã được up lên** (`ncat32.exe` cùng hai thư viện SSL, file `p.exe`) để mở reverse-shell. Tóm lại, hình này chỉ để **nhìn lỏm cấu trúc thư mục**, từ đó biết được: * Phần **part2** của flag: ta sẽ tìm tên đúng của trang .aspx đã bị lợi dụng để upload. * Phần **part1**: xác định thời điểm kẻ tấn công upload thành công webshell ## Step 2 `IIS log` sẽ được đặt tên theo định dạng `u_exYYMMDD.log` → với ngày `15/05/2024` ta tìm `u_ex240515.log`. Và đây sẽ là dòng log ta cần quan tâm: ``` 2024-05-15 02:40:39 192.168.199.28 POST /ThuVien.aspx - 80 - 113.171.248.53 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/122.0.6261.112+Safari/537.36 http://actvn.edu.vn/ThuVien.aspx 200 0 0 39 ``` Ý nghĩa: đây chính là lần đầu hacker POST file (webshell) lên endpoint upload ThuVien.aspx, và server đã chấp nhận (HTTP 200). ``` 2024-05-15 02:40:43 192.168.199.28 GET /Thu_Vien/k.aspx - 80 - 113.171.248.53 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/122.0.6261.112+Safari/537.36 http://actvn.edu.vn/ThuVien.aspx 200 0 0 927 ``` Ý nghĩa: ngay sau khi upload, attacker GET vào k.aspx để khởi chạy webshell, chuẩn bị nhận lệnh hoặc tương tác tiếp. # Flag ``` KMACTF{2024-05-15_02:40:43_ThuVien.aspx} ``` # perfect day ![image](https://hackmd.io/_uploads/BJM-ItgWxe.png) ```python #!/usr/bin/env python3 from pwn import * from Crypto.Util.number import bytes_to_long, inverse HOST, PORT = "36.50.177.41", 5001 # 1) Danh sách bài hát & giá trị m (đệm kiểu '0xff') songs = [ b"House Of The Rising Sun", b"the Dock of the Bay", b"(Walkin' Thru The) Sleepy City", b"Redondo Beach", b"Pale Blue Eyes", b"Brown Eyed Girl", b"Feeling Good", b"Aoi Sakana", b"Perfect Day" ] M = [bytes_to_long(s + b"0xff" * (256 - len(s))) for s in songs] io = remote(HOST, PORT) for _ in range(32): io.recvuntil(b"p = ") p = int(io.readline().strip()) io.recvuntil(b"hint = ") hint = int(io.readline().strip()) t = ((hint - 1) // p) % p # t = m*k mod p residues = [m % p for m in M] # pre‑compute m mod p # 2) brute k ∈ [1..4096] for k in range(1, 4097): m_mod = (t * inverse(k, p)) % p if m_mod in residues: song_idx = residues.index(m_mod) io.sendline(songs[song_idx]) # gửi đúng tiêu đề break else: print("Không tìm thấy k!?") exit() print(io.recvall().decode()) # Flag ở đây ``` # Flag ``` KMACTF{did_you_enjoy_soundtrack_perfect_days} ```