← Back to Tomes

ความยากที่พอดี คือความสนุกของ CTFThe Right Level of Difficulty Is What Makes CTF Fun

หลังจากผ่านเดือนแรกกันมาไม่รู้จะเริ่มปียังไงขอจัดสัก 1 บทความพูดถึง “ความสนุกของ CTF” เนื่องจากปีที่ผ่านมาได้มีการไปเล่น CTF ต่างๆ ทั้งในและต่างประเทศ เลยอยากจะเขียนเชิงมุมมองในมุมของตัวเองว่า CTF ที่เราว่าสนุกและยาก เนี่ยมันให้อะไรเรากลับมา

หลายคนอาจคิดว่า
 CTF ยิ่งยาก = ยิ่งสนุก

แต่ความจริงแล้ว
ความสนุกของ CTF ไม่ได้แปรผันตรงกับความยากของโจทย์แบบเส้นตรง

Piece of cake CTF

โจทย์ที่ง่ายเกินไป ทำให้เราไม่ต้องคิดแค่ทำตามแพตเทิร์นเดิม แล้วก็ผ่านไป สำหรับบางคนโจทย์แบบนี้อาจจะดูน่าเบื่อ แต่อย่างที่ได้บอกไปใน Blog ที่แล้วคนเราไม่ได้เก่งตั้งแต่เกิด แต่ผมเปิดตั้งแต่เด็ก บางทีโจทย์ง่ายสำหรับเราอาจจะยากสำหรับคนอื่น ง่ายเราไม่เท่ากัน แต่ถึงมันจะน่าเบื่อมันก็ควรมีไว้ในการแข่งขันนะ อย่างน้อยก็ช่วยเพิ่มแต้มให้เราในการแข่งขัน และ recheck ความรู้ไปในตัว

Insane CTF

โจทย์ที่ยากเกินไปจนมองไม่เห็นทาง(ใครปิดตา) เลยก็ไม่ได้สนุกมันกลายเป็นความท้อ และค่อย ๆ ดูดพลังออกไปโดยไม่รู้ตัว เคยไหมเปิดโจทย์ขึ้นมาแล้วไม่รู้จะไปยังไงลองหมดทุกทางทุกความรู้ที่มี คิดจนหัวแทบระเบิด แต่ก็แก้ปัญหาไม่ได้ จนหมดเวลาก็ยังทำไม่ได้ เพราะมันยากหรอ….ถึงทำไม่ได้ ป่าวครับผมหลับ หยอกกก ถ้ามันเป็นแค่ 1-2 รายการไม่เป็นไร แต่ถ้ามากกว่านั้นบางทีเราอาจจะรู้สึกท้อและเลิกไปเลย

CTF with AI

ไม่พูดถึงไม่ได้นั่นคือ AI ในยุคนี้มันโคตรแสนจะฉลาดอย่างกับมีพระเจ้าที่รู้ทุกอย่างอยู่ข้างกาย แต่ AI ที่ใช้ก็มีแบ่งตาม level อีก ไม่ว่าจะเป็น

  • AI ตัวฟรี
  • AI เสียตัง
    - แบบ Plus 
    - แบบ Pro
    - แบบ Pro Max 
    - แบบ Ultra
    - แบบ Ultra Instinct
ผมที่หลบความยากของ CTF ได้หมด

ซึ่งจุดนี้แสดงให้เห็นอะไร ซื้อ AI เถอะครับเพื่อช่วยโลกใบนี้ไว้ และช่วยทีมของคุณ แต่นั่นจะสนุกอะไรหากนำ AI มาใช้แล้ว Solve โจทย์ได้โดยที่คุณไม่รู้อะไรเลย ไม่รู้ว่าความยากของโจทย์ หรือสิ่งที่เจ้าของโจทย์อยากให้เราได้พบ อาจจะเป็นคำพูดปลอบใจหรือสมน้ำหน้าหากเราไปผิดทาง

อารมณ์เหมือนคุณเล่นเกม Mario คุณจะพบว่าในด่านที่ 2 หากกระโดดดีๆ จะสามารถไปเจอท่อเพื่อข้ามไปยังด่านอื่นๆ ได้โดยที่ไม่ต้องเล่นจบด่าน 2

แต่การนำ AI มาใช้ใน CTF ก็ช่วยลดทอนเราและย่นเวลาได้ในระดับนึงเลย และมันจะดีมากถ้าคุณมีการกลับมา Learn เพิ่มเติมจากการที่ AI ได้ปล่อยวิธีการทำโจทย์ และคำตอบออกมาให้คุณเพื่อที่คุณจะได้มีความรู้เพิ่มมากขึ้นกว่าเมื่อวาน

CTF ที่สนุก

จุดที่ CTF สนุกจริง ๆ คือ

โจทย์ที่ ยากพอให้เราต้องพยายาม
แต่ ไม่ยากจนหมดหวัง

เคยไหมที่นั่งทำโจทย์นึงแล้วมันรู้สึกสนุกแบบบอกไม่ถูก นั่งทำโจทย์ไปหัวเราะ สนุกกับโจทย์กับวิธีการที่เราศึกษาหรือหา document ต่างมาใช้ประกอบการแก้โจทย์นั้นและคุณได้เรียนรู้เพิ่มไปในตัวจากโจทย์ที่คุณได้ทำและมันไม่ได้ง่ายจนมันทำให้คุณเบื่อ หรือไม่ได้ยากจนทำให้คุณท้อ เพราะท้อเอาไว้ให้ลิงถือ

เป็นความยากที่บังคับให้เรา

  • ตั้งคำถาม
  • ลองผิด
  • ลองถูก

และค่อย ๆ ต่อจิ๊กซอว์จากสิ่งที่เรามีอยู่

ความยากแบบนี้. ทำให้เราเริ่มรู้สึกว่า 
อีกนิดเดียว น่าจะได้แล้ว
และทันทีที่เราแก้ผ่าน…เครื่องดับ ไม่ใช่ๆ ความสนุกไม่ได้มาจากคะแนน แต่มาจากความรู้สึกว่า

เราเพิ่งข้ามขีดจำกัดของตัวเองไปอีกขั้น (เดินขึ้นบันได้จากชั้น 1 ไป ชั้น 2 )

ที่นี้มาดูความเห็นจากเพื่อนร่วมในทีม Wowza กันว่ามีความเห็นกันอย่างไร

ความเห็นจากเพื่อนร่วมทีม Wowza

strings “Buaboon (Chicken0248)”

ให้มุมมองที่น่าสนใจมากว่า

CTF ที่ง่ายและยากอย่างพอดีคือ CTF ที่ AI ไม่สามารถ solve ได้
 แค่ส่งไฟล์ไปแล้วจบแต่ต้องการ human interaction ให้คนรู้สึกว่า 
“เราทำข้อนี้ได้จริง”

เขายังบอกอีกว่า
ความพอดีของ CTF เป็นเรื่อง subjective เพราะพื้นฐานของแต่ละคนไม่เหมือนกัน

บางคนชอบ CTF เบา ๆใคร ๆ ก็เล่นผ่านได้

บางคนชอบแกะของยากต้องอ่าน documentation หรือ use case แปลก ๆ เพื่อหาช่องโหว่ (มีแค่มันแหละที่ชอบแกะ use case)

ดังนั้น CTF ที่ดี
ควร balance ระหว่างคนสองกลุ่มนี้ให้ได้
มีโจทย์ที่ทุกคนทำได้
และในขณะเดียวกันก็มีโจทย์ที่ทำให้คนชอบความท้าทายได้ enjoy จริง ๆ

<script> alert(‘Kim (Kyokito)’) </script>

อธิบายมุมมองเรื่องความง่าย–ยากของ CTF ไว้ค่อนข้างชัดเจนว่า

ความง่ายหรือยากของ CTF
 จริง ๆ แล้วแตกต่างกันไปตามความถนัดของแต่ละคนอยู่แล้ว

แต่ถ้ามองในมุมของ “การออก CTF”
ความยากไม่ได้อยู่ที่จำนวนขั้นตอน
แต่อยู่ที่ ระดับของช่องโหว่ที่ถูกเลือกมาใช้
และที่สำคัญที่สุดคือ ช่องโหว่นั้น เข้าใจง่ายในการเรียนรู้แค่ไหน

ถ้าเป็นช่องโหว่ที่เราอ่านแล้วเข้าใจได้ภายในไม่กี่นาที
เช่น IDOR อ่านแล้วรู้ทันทีว่า
อ๋อ…มันโจมตีแบบนี้” (มันเข้าใจของมันคนเดียว)

CTF ก็มักจะเอาระดับพื้นฐานของช่องโหว่นั้นมาออก
เช่น การหา ID การเดาค่าตัวระบุตัวตน หรืออาจจะเป็นเลขธรรมดา หรือ Base64 นิดหน่อย

โจทย์แบบนี้ยังอยู่ในขอบเขตพื้นฐานและจะ “ง่ายทันที”สำหรับคนที่มีพื้นฐานอยู่แล้ว

แต่ถ้าเป็น CTF ที่ยากขึ้น
มักจะเลือกช่องโหว่ที่ซับซ้อนกว่า
ต้องอาศัยการอ่านโค้ด
หรือการ chain ช่องโหว่หลายจุดเข้าด้วยกัน
เช่น

XSS → Self-CSRF → Double File Extension → Command Injection (ผ่าน XSS)

โจทย์ลักษณะนี้
ไม่ได้ยากเพราะชื่อช่องโหว่ (ให้พูดใหม่อีกที)
แต่ยากเพราะผู้เล่นต้องเข้าใจหลายส่วนพร้อมกัน
ทั้ง flow ของระบบ
พฤติกรรมของช่องโหว่
และความสัมพันธ์ระหว่างแต่ละขั้น

และนี่คือจุดที่
CTF เปลี่ยนจาก “โจทย์พื้นฐาน” ไปเป็น “โจทย์ที่ทดสอบความเข้าใจจริง ๆ”

XCN Nate (Natsuiro)

มองเรื่องความยากของ CTF ไว้ตรงไปตรงมาว่า

ยากของแต่ละคนไม่เท่ากัน” (คำนี้คุ้นๆนะ)

สำหรับเขาLab ที่ “ง่าย” 
คือ Lab ที่ไม่ต้องพลิกแพลงอะไรเลยมองแล้วตอบได้ทันที

เช่น
 Vulnerable service version → ได้ CVE → ยิง metasploit

โจทย์แบบนี้
ถ้ามีพื้นฐานก็แทบจะเป็นงานตามขั้นตอน

แต่ Lab ที่ “ยาก
ไม่ใช่ Lab ที่ทำไม่ได้แต่เป็น Lab ที่ถ้าใช้แค่พื้นฐานจะต้องใช้เวลามากเกินสมควร

จำนวนขั้นตอนเยอะขนาดระบบใหญ่ต้องเรียนรู้ technique เพิ่ม
อาศัยประสบการณ์หรือบางครั้งก็ต้องสู้กับสิ่งที่ไม่เคยเห็นมาก่อนแบบถึก ๆ เลย

Nate มองว่า
Lab ที่ดี
ควรสร้างการเรียนรู้ใหม่ให้ผู้เล่นเสมอไม่ว่าจะเป็น

  • การ refine สิ่งที่รู้อยู่แล้ว
  • introduce concept / technique ใหม่เข้ามา
และที่สำคัญควรมี 
Reward เล็ก ๆ จากความสำเร็จ

เพื่อรักษา momentum และทำให้ผู้เล่นอยากเรียนรู้ต่อไป

สุดท้ายนี้ขอทิ้งคำคมไว้ปิดท้ายเหมือนเดิม

cat /etc/คำคม

root:x:0:0:root:/root:/bin/ashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinCTF:ที่สนุกคือ:CTF:ที่ทำให้เราเก่งขึ้นกว่าตัวเองเมื่อไม่กี่ชั่วโมงก่อน:/sabastiaz:/bin/zshshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/mail:/sbin/nologin

เกือบลืม Blog นี้เกิดจากความขี้เกียจของ system(“cat%20Chicken0248)

After getting through the first month of the year, I decided to kick things off with a blog post about "The Fun of CTF." Over the past year I've played various CTF competitions both locally and abroad, and I wanted to write about it from my own perspective — what do we actually get out of a CTF that feels fun or challenging?

Many people might think:
The harder the CTF = the more fun it is

But the truth is,
the fun of CTF doesn't scale linearly with difficulty.

Piece of Cake CTF

Challenges that are too easy don't require much thought — just follow the same pattern and you're done. Some people might find these boring. But as I mentioned in a previous blog, nobody is born skilled. Easy for us might still be hard for someone else — "easy" isn't universal. Even if they feel tedious, they should exist in competitions: at the very minimum they help boost your score and double-check your foundational knowledge.

Insane CTF

Challenges so hard you can't even see a path forward aren't fun either — they turn into discouragement and slowly drain your energy without you realizing it. Have you ever opened a challenge and had absolutely no idea where to start? Tried every approach you know, thought until your head nearly exploded, and time ran out with nothing? Was it too hard? ...No, I just fell asleep. (Kidding.) If it's just 1-2 challenges like this, it's fine. But if there are many, you might just feel defeated and give up entirely.

CTF with AI

Can't ignore it — AI these days is incredibly intelligent, like having an all-knowing deity by your side. But AI comes in tiers too:

  • Free AI
  • Paid AI
    - Plus tier
    - Pro tier
    - Pro Max tier
    - Ultra tier
    - Ultra Instinct tier
Me dodging every CTF challenge difficulty

What does this demonstrate? Buy an AI subscription, save the world, and help your team. But where's the fun if AI just solves everything for you without you understanding anything? You won't know the difficulty, what the challenge creator wanted you to discover — it might just be empty comfort or gloating when you went down the wrong path.

It's like playing Mario — in World 2 if you jump just right you can find a pipe to warp to later worlds without finishing level 2.

But using AI in CTF does help reduce effort and save time to a certain extent. And it becomes genuinely valuable if you go back and learn more from the solutions and answers AI gives you — so you're more knowledgeable today than you were yesterday.

The Fun CTF

The point where CTF is genuinely fun is when:

A challenge that is hard enough to make you try
but not so hard it feels hopeless

Have you ever sat working on a challenge and felt inexplicably happy about it? Laughing while solving it, enjoying the techniques and documentation you're hunting down, learning something new along the way — and it wasn't so easy it bored you, or so hard it discouraged you. (Leave discouragement to the monkeys.)

It's the kind of difficulty that forces you to:

  • Ask questions
  • Try wrong approaches
  • Try right approaches

And gradually piece together the puzzle from what you have.

That kind of difficulty makes you feel like:
"Just a little more — I think I've got it"
And the moment you solve it... okay, not your computer crashing. The fun doesn't come from points, but from the feeling that:

You just pushed past your own limits by one more step (climbing the stairs from floor 1 to floor 2)

Now let's hear opinions from my Wowza teammates:

Perspectives from Wowza Teammates

strings "Buaboon (Chicken0248)"

Offered a fascinating perspective:

A CTF that is easy and hard in just the right measure is one that AI cannot solve
just by submitting the file — it requires human interaction so the player feels
"I actually solved this myself"

He also noted that the "right balance" in CTF is subjective because everyone's baseline is different.

Some people enjoy light CTFs that anyone can breeze through.

Some people enjoy dissecting hard challenges that require reading documentation or unusual use cases to find the vulnerability (he's the only one who actually enjoys weird use cases).

Therefore, a good CTF
should balance between these two groups:
having challenges everyone can solve,
and at the same time, challenges that let those who love difficulty genuinely enjoy themselves.

Kim (Kyokito)

Explained the easy–hard spectrum of CTF quite clearly:

The ease or difficulty of CTF
genuinely differs based on each person's strengths.

But from the perspective of "designing a CTF,"
difficulty isn't about the number of steps
but about the sophistication of the vulnerability chosen
and most importantly, how accessible it is to learn.

If it's a vulnerability you can understand within a few minutes of reading — like IDOR, you read it and immediately know: "Ah, it's attacked like this" — that challenge will tend to use that vulnerability at a fundamental level, such as finding an ID, guessing an identifier value, or maybe a bit of Base64.

Those challenges stay within foundational scope and will be "immediately easy" for people who already have that background.

But harder CTF challenges
often choose more complex vulnerabilities
requiring code reading
or chaining multiple vulnerabilities together, like:

XSS → Self-CSRF → Double File Extension → Command Injection (via XSS)

These challenges
aren't hard because of the vulnerability names — (let me rephrase that) —
but hard because the player must understand multiple things simultaneously:
the system's flow,
the behavior of each vulnerability,
and the relationship between each step.

And this is the point where
CTF shifts from "fundamental challenges" to "challenges that test genuine understanding"

XCN Nate (Natsuiro)

Has a straightforward view on CTF difficulty:

"Hard is different for each person" (familiar phrase, isn't it?)

For him, a "easy" lab
is a lab that requires no twists at all — you look at it and answer immediately.

For example:
Vulnerable service version → get CVE → fire metasploit

This type of challenge,
if you have the basics, is almost a procedural task.

But a "hard" lab
isn't one that can't be solved — it's one that if you only use basics, would take far more time than reasonable.

Many steps across a large system, needing to learn additional techniques,
requiring experience, or sometimes just grinding through things you've never seen before.

Nate believes a
good lab
should always create new learning for the player, whether:

  • Refining what you already know
  • Introducing new concepts/techniques
And most importantly it should have
small rewards from small successes

To maintain momentum and keep the player wanting to learn more.

Finally, let me leave you with a closing quote as always

cat /etc/quotes

root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
CTF:the-fun-kind-is:CTF:that-makes-you-better-than-yourself-a-few-hours-ago:/sabastiaz:/bin/zsh
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin

Almost forgot — this blog was born from the laziness of system("cat Chicken0248")