mô tả: Endless text. Endless effort. Endless suffe...

Tạo vào: 3 tháng 4, 2026

Trả lời bằng GPT-5.4 Thinking bởi Chat01

Câu hỏi

Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf

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

Suy nghĩ

Identifying relevant skill for CTF flag in PDF

We need to extract the CTF flag from the uploaded PDF. I’ll likely use OCR or image analysis to access hidden binary or metadata layers. The challenge may involve spotting the flag hidden in a Sanskrit manuscript. I’ll review the required skills and check the skill directory for "pdfs."

Thought for 11s

Suy nghĩ

Writing detailed Vietnamese write-up

I need to write a detailed Vietnamese write-up and cite the uploaded file, though there’s no explicit line-range citation. I can reference the file generically as turn0file0, which proves the file exists. I may mention page 269 based on my own inspection, but no exact line citations are needed.

Thought for 13m 33s

Trả lời

Đã 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)

Write-up chi tiết

1) Nhận định ban đầu

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ờ:

  • PDF không có text layer hữu ích, gần như toàn ảnh scan.
  • Nhiều trang trông rất bình thường, dễ khiến người ta sa vào hướng OCR toàn bộ.
  • Một số tool render/extract không đi hết file, cho cảm giác file được dựng hơi “khó chịu” để cản phân tích. (Mantra Mahodadhi with Nauka Tika of Mahidhar by Jivanand Vidyasagar Bhattacharya 1892 - Siddheshvar Press Calcutta_compressed (1).pdf)

Ý 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.


2) Hướng tiếp cận

Mình đi theo hướng:

  1. Inspect PDF để xem số trang, object, stream.
  2. Kiểm tra content stream của từng page.
  3. So sánh page “bình thường” với page “dị”.
  4. Nếu có page chứa thêm XObject lạ thì extract riêng object đó ra.

Lý do: với PDF scan dạng này, mỗi trang thường chỉ có:

  • 1 ảnh nền của trang
  • 1 content stream rất ngắn chỉ để “đặt ảnh lên trang”

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.


3) Dấu hiệu bất thường trong page 269

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:

pdf
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ư:

pdf
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.


4) Trích riêng object lạ

Khi inspect resource của page 269, /X0 hiện ra là:

  • Width: 928
  • Height: 87
  • ColorSpace: /DeviceRGB
  • Filter: /FlateDecode

Tứ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:

python
from 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:

text
kashiCTF{1r0nhex_1s_n07_4_m4n}

5) Verify trực quan trên trang gốc

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:

  • Flag không nằm trong text
  • Flag không cần OCR full file
  • Flag nằm trong một image XObject phụ
  • XObject đó được transform để trở thành một vệt nhỏ ở lề trái của page 269

6) Vì sao cách này hiệu quả

Challenge này đánh vào tâm lý:

  • thấy file dài -> muốn bỏ
  • thấy Sanskrit scan -> nghĩ phải OCR
  • thấy tool render/extract lỗi ở vài chỗ -> càng nản

Nhưng về mặt PDF internals, nơi cần nhìn là:

  • số lượng XObject mỗi page
  • content stream nào dài bất thường
  • object nào không giống pattern chung của các page scan

Chỉ cần so sánh pattern “bình thường” với “bất thường” là lòi ra ngay page 269.


Kết luận

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.

Câu hỏi

flag sai rồi, tìm lại đi, những flag quá lộ là rác

Chia sẻ Q&A này