Rehber › Kategori Rehberleri
Kategori Rehberleri

Misc CTF: Esolang, QR Kod ve Bulmacalar

Misc, bir CTF'te hiçbir kalıba tam oturmayan görevlerin toplandığı "her şey ve hiçbir şey" kategorisidir. Burada tek bir yöntem değil, esnek ve yaratıcı düşünmek kazandırır — bu yazıda esolang, QR kod, egzotik kodlama ve bulmaca mantığını sıfırdan öğreneceksin.

Özet
  • Misc = "diğerleri" kutusu: bir teknikten çok, kalıbı tanıma refleksi ister.
  • Brainfuck gibi esolangler garip görünür ama çevrimiçi yorumlayıcıya yapıştırınca kolayca çalışır.
  • QR/barkod bozuk bile olsa çoğu zaman hata düzeltme sayesinde okunabilir; okuyucu bir sonraki katmanı verir.
  • Karakter kümesine bak: sadece nokta-çizgi = Mors, iki karakter = ikili/whitespace, +-<>[] = Brainfuck.
  • Bazen cevap basittir; abartma, önce en bariz aracı dene.

Misc kategorisi tam olarak nedir?

Misc (miscellaneous = "çeşitli") bir CTF'te diğer kategorilere sığmayan her görevin atıldığı kutudur. Crypto değil ama biraz kod çözme var; forensics değil ama biraz dosya kurcalama var; bazen sadece bir zeka bulmacası. Yani Misc'te "hangi tekniği kullanacağım?" sorusunun tek bir cevabı yoktur.

Bu yüzden Misc'in kazandırdığı asıl beceri şudur: elindeki garip veriye bakıp "bu ne olabilir?" diye tahmin edebilmek. Bir CTF'çi için bu, çoğu zaman spesifik bir araçtan daha değerlidir. Genel bakış için önce CTF Nedir? yazısına, yol haritası için Rehber ana sayfasına göz atabilirsin.

Esolang: Brainfuck ve garip diller

Esolang (esoteric language), pratik iş için değil, eğlence ya da kafa karıştırmak için tasarlanmış programlama dilleridir. CTF'te bir metin verirler; ilk bakışta şifre sanırsın ama aslında çalıştırılınca flag'i yazan bir programdır.

En bilineni Brainfuck'tır. Sadece 8 karakteri vardır ve bir bant üzerinde bir işaretçi (pointer) gezdirir:

Örneğin şu minik program büyük harf A (ASCII 65) yazdırır:

++++++++[>++++++++<-]>+.

Mantığı şu: ilk hücreye 8 koy, döngüde ikinci hücreye 8 kez 8 ekle (8×8=64), sonra 1 daha ekleyip 65 yap ve yazdır. Panik yapmana gerek yok — bu tür bir metni bir çevrimiçi Brainfuck yorumlayıcısına yapıştırıp "run" demen genelde yeterlidir.

Brainfuck'ın akrabaları da vardır: Ook! (sadece Ook. Ook? Ook! ile yazılır) ve Whitespace (yalnız boşluk, tab ve satır sonundan oluşur — gözle görünmez!). İpucu: metinde tuhaf tekrar eden semboller görüyorsan, muhtemelen bir esolang'la karşı karşıyasın.

QR kod, barkod ve görsel bulmacalar

Misc'te sık çıkan bir tür de QR kod veya barkoddur. Bazen görüntü bozuk, ters renkli ya da parçalıdır — ama QR kodların içinde hata düzeltme (error correction) vardır, yani bir bölümü hasarlıyken bile okunabilir.

Yaklaşım basittir:

  1. Görseli bir QR/barkod okuyucuya ver (telefon kamerası, çevrimiçi okuyucu ya da Python'da pyzbar kütüphanesi).
  2. Renkler tersse (siyah-beyaz yer değiştirmişse) görseli tersine çevir (invert) ve tekrar dene.
  3. Kod eksik köşe karesi (position marker) yüzünden okunmuyorsa, bir görsel düzenleyicide o kareleri tamamla.

Önemli bir refleks: QR'ı okuduğunda çıkan metin doğrudan flag olmayabilir. Çoğu zaman bu, bir sonraki katmandır — mesela base64 bir dizgi ya da bir link. Yani "okudum, bitti" deme; çıkan şeyi de çözmeyi dene. Katmanlı kodlama, hem Misc hem kripto challenge'larında çok yaygındır.

Egzotik ("base-esoterik") kodlamalar

Base64 ve hex artık standart; ama Misc bunların garip kuzenlerini sever. Bir metne bakıp hangi kodlama olduğunu tanımak işin yarısıdır. Küçük bir tanıma tablosu:

Bu kalıpları tanımak için en pratik araç CyberChef'tir; "Magic" tarifi çoğu yaygın kodlamayı otomatik dener. Yine de gözünle kalıbı tanıman, aracın önerisini doğru okumanı sağlar. Bir metni birden çok kez çözmen (base64 → hex → metin gibi) gayet normaldir.

Mantık bulmacaları ve programlamayla düşünme

Bazı Misc görevlerinde hiç kod çözmezsin; karşında bir mantık bulmacası vardır: bir sudoku benzeri kısıt problemi, bir nonogram, bir dizinin kuralını bulma ya da bir "acaba nasıl?" sorusu. Cevap genellikle bir sayıya veya kelimeye ulaşır ve flag ALTAY{...} biçiminde onu ister.

Burada iki yol vardır: elle çözmek ya da küçük bir program yazıp bilgisayara çözdürmek. İkincisi Misc ile coding challenge'ları arasındaki köprüdür. Örneğin binlerce olasılığı denemek gerekiyorsa, birkaç satır Python bunu saniyeler içinde yapar:

for anahtar in range(256):
    cozum = bytes(b ^ anahtar for b in veri)
    if b"ALTAY{" in cozum:
        print(anahtar, cozum)

Buradaki fikir şu: flag formatını (ALTAY{) biliyorsan, tüm ihtimalleri deneyip doğru olanı yakalayabilirsin. Bu "bilinen çıktıdan geriye gitme" mantığı Misc'te sık işine yarar.

Misc'e nasıl yaklaşılır? Kısa yol haritası

Kalıba girmeyen bu kategoride net bir refleks listesi işini kolaylaştırır:

  1. Başlığı ve açıklamayı dikkatle oku. Misc'te ipucu çoğu zaman görevin adında saklıdır.
  2. Verinin "şeklini" tanımla. Metin mi, görsel mi, ses mi, kod mu? Hangi karakterlerden oluşuyor?
  3. Kalıbı bir türe eşle. Yukarıdaki tanıma tablosunu ve +-<>[] gibi esolang işaretlerini hatırla.
  4. Uygun aracı dene. CyberChef (kodlama), çevrimiçi esolang yorumlayıcısı, QR okuyucu ya da birkaç satır Python.
  5. Katmanları soymayı unutma. İlk çözüm çoğu zaman ikinci bir bilmecedir.

Kullandığın çevrimiçi araçlar ve pratik denemeleri yalnız eğitim amaçlı ve yetkili ortamlarda — yani bu tür antrenman platformlarında — yap; gerçek sistemlere dokunma. Öğrendiğin bu kalıp-tanıma refleksini pekiştirmek için Misc kategorisindeki challenge'ları deneyebilir, takıldığında Rehber'deki diğer yazılara dönebilirsin. Unutma: Misc'te en güçlü silahın merak ve deneme cesaretidir.

Sıkça Sorulan Sorular

Misc CTF nedir, neden bir tekniği yok?

Misc, diğer kategorilere (crypto, web, forensics gibi) tam sığmayan görevlerin toplandığı "çeşitli" kutusudur. Tek bir yöntemi yoktur; amacı sana esnek ve yaratıcı düşünmeyi, yani garip bir veriye bakıp ne olduğunu tahmin etmeyi öğretmektir.

Brainfuck gibi bir metin gördüm, nasıl çalıştırırım?

Metni bir çevrimiçi Brainfuck (veya ilgili esolang) yorumlayıcısına yapıştırıp çalıştır demen çoğu zaman yeterlidir. Program genellikle flag'i doğrudan ekrana yazar; komutların tek tek ne yaptığını anlamak zorunda değilsin ama +, -, <, >, . işaretlerini görmen bunun bir esolang olduğunu ele verir.

QR kodu okudum ama flag çıkmadı, ne yapmalıyım?

QR'dan çıkan metin çoğu zaman doğrudan flag değil, bir sonraki katmandır — örneğin base64 bir dizgi ya da başka bir kod. Çıkan şeyi CyberChef gibi bir araçla tekrar çözmeyi dene; kod bozuksa da renkleri ters çevirip veya köşe karelerini tamamlayıp yeniden okut.

Bir metnin hangi kodlama olduğunu nasıl anlarım?

Karakter kümesine bak: sadece nokta-çizgi Mors'tur, sadece 0-1 ikili ASCII'dir, +-<>[] Brainfuck'tır, ACGT ise DNA kodlamasıdır. Emin olamazsan CyberChef'in "Magic" tarifi yaygın kodlamaları otomatik deneyerek sana bir tahmin sunar.

Misc çözmek için programlama bilmem şart mı?

Şart değil, birçok görev tarayıcıdaki araçlarla çözülür; ama binlerce olasılığı denemek gereken bulmacalarda birkaç satır Python işini saniyelere indirir. Flag formatını (ALTAY{) bildiğin için, tüm ihtimalleri deneyip doğru sonucu otomatik yakalamak en güçlü tekniklerden biridir.

Hadi pratiğe dök

Bu rehberdeki teknikleri Çeşitli kategorisindeki gerçek challenge’larda dene.

Çeşitli Challenge’ları →

Devam et