mô tả: Endless text. Endless effort. Endless suffe...
作成日: 2026年4月3日
使用モデル GPT-5.4 Thinking by Chat01
作成日: 2026年4月3日
使用モデル GPT-5.4 Thinking by Chat01
mô tả: Endless text. Endless effort. Endless suffering. Somewhere inside this Sanskrit manuscript, a flag has been hidden — buried deep enough to make anyone give up before reaching it. But that’s the whole point. Will you keep digging, or will the file break you first?
tìm flag có dạng: kashiCTF{...}
tìm ra flag rồi viết write up chi tiết bằng tiếng Việt
Đã tìm ra flag:
kashiCTF{1r0nhex_1s_n07_4_m4n} (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)
File PDF này nhìn qua giống một bản scan Sanskrit rất dài, đúng kiểu để người giải nản trước khi đào tới chỗ có flag. Khi kiểm tra sơ bộ, có vài dấu hiệu đáng ngờ:
Ý tưởng đúng ở đây không phải OCR toàn bộ 400+ trang, mà là soi cấu trúc PDF để tìm object bất thường.
Mình đi theo hướng:
Lý do: với PDF scan dạng này, mỗi trang thường chỉ có:
Nếu trang nào có thêm image/object khác, gần như chắc chắn đó là nơi cắm flag.
Khi duyệt cấu trúc từng trang, đa số page có content stream dài khoảng 69-71 byte, chỉ kiểu:
0.29876 0 0 0.29876 0 0 cm /F1 20 Tf q ... /X268 Do Q
Tức là chỉ vẽ đúng 1 ảnh scan.
Nhưng page 269 khác hẳn: content stream dài hơn hẳn và có 2 XObject:
/X268: ảnh scan bình thường của trang/X0: một image phụ hoàn toàn bất thường (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)Content stream của page 269 có dạng gần như:
q ... /X268 Do Q Q q q 0.000000000000000061232 1 -1 0.000000000000000061232 308 240 cm q 124 0 0 11.625 -27.553 269.16 cm /X0 Do Q Q Q
Cái matrix này cho thấy /X0 không được hiển thị như ảnh bình thường, mà bị xoay/dẹt/ép thành một dải rất nhỏ ở lề trái. Đó chính là lý do nhìn bằng mắt thường rất khó thấy.
Khi inspect resource của page 269, /X0 hiện ra là:
92887/DeviceRGB/FlateDecodeTức là đây là một ảnh RGB thô, không phải ảnh scan của trang sách. (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)
Chỉ cần extract object này ra thành ảnh là thấy flag ngay.
Ví dụ đoạn Python mình dùng:
pythonfrom pypdf import PdfReader from PIL import Image pdf = "challenge.pdf" r = PdfReader(pdf) page = r.pages[268] # page 269 x0 = page["/Resources"]["/XObject"]["/X0"].get_object() raw = x0.get_data() img = Image.frombytes( "RGB", (x0["/Width"], x0["/Height"]), raw ) img.save("page269_x0.png")
Mở page269_x0.png ra sẽ hiện trực tiếp:
textkashiCTF{1r0nhex_1s_n07_4_m4n}
Khi render riêng page 269 ở độ phân giải cao, có thể thấy flag thật ra đã được nhét vào lề trái, dưới dạng một strip dọc rất mảnh. Vì bị xoay và scale méo nên nếu chỉ lướt PDF bình thường gần như không ai để ý. (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)
Nói ngắn gọn:
Challenge này đánh vào tâm lý:
Nhưng về mặt PDF internals, nơi cần nhìn là:
Chỉ cần so sánh pattern “bình thường” với “bất thường” là lòi ra ngay page 269.
Flag cuối cùng là:
kashiCTF{1r0nhex_1s_n07_4_m4n} (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)
Nếu bạn muốn, mình có thể viết tiếp một bản write-up theo format CTF chuẩn hơn, gồm các mục Description / Analysis / Exploit / Flag / Lessons Learned.
flag sai rồi, tìm lại đi, những flag quá lộ là rác