XOR Kapısı
Ele geçirilen bir programın parola kontrol rutini disassemble edildi. Kaynak şu şekilde geri getirildi:
``c`
int check(char *s){
unsigned char k = 0x42;
for(int i=0; s[i]; i++)
if((s[i] ^ k) != enc[i]) return 0;
return 1; /* dogru parola = flag */
}
Program, girdinin her byte’ını sabit bir anahtarla XOR’layıp gömülü enc dizisiyle karşılaştırıyor. enc dizisi (hex):
030e16031b393a72301d2b2e291d2923322b3f`
Kabul edilen tek parola doğrudan flag’indir.
Bu challenge ne öğretiyor?
- XOR, aynı anahtarla iki kez uygulandığında veriyi geri veren bit düzeyinde bir işlemdir.
- Disassembly, makine kodunu okunabilir komutlara çevirir.
- Hex (onaltılık), her baytı 0-9 ve a-f ile iki karakterde gösterir.
- Tersine mühendislik challenge'ları bir programın mantığını okuyup tersine çevirmeyi öğretir.