Picassor

ekte unirii_square.jpg isimli bir dosya var. dosya turu

file unirii_square.jpg 
	unirii_square.jpg: data

tur data oldugunan datayi incelemeye geciyorum

xxd unirii_square.jpg | head -5
	00000000: 5473 544b abbb e1ed e2ed abaa aaaa abe3  TsTK............
	00000010: abe3 abab 5455 abb0 c8c6 db98 859a 9b85  ....TU..........
	00000020: 9885 98e7 da98 8b9b d39e cf9c ca98 c8c9  ................
	00000030: 9a54 70ab e8ab aaaa aaaa aaaa aaaa aaaa  .Tp.............
	00000040: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa  ................

aslinda dosyanin sonunda .jpg diye uzanti birakmalari buyuk bir ipucu.
xor olabileceginden jpg dosyalarinin orjinal headerlarina bakiyorum.

1)FF D8 FF E0
2)FF D8 FF E1
(https://www.filesignatures.net/index.php?page=all&order=EXT&alpha=J)

sorudaki dosyayla orijinal header patterni eslesiyor, bu noktadan sonra elimdeki datanin xor isleminden gecmis bir dosya olduguna emin oluyorum.

xor ( ⊕ ) nedir?
xor kapisi lojik kapilardan birisidir.
2 farkli sekilde dusunulebilir.
girdideki 1 degerlerinin sayisi tek taneyse 1 dondurur, cift taneyse 0 dondurur.
girdideki degerler birbirlerinden farkliysa 1 dondurur, degilse 0 dondurur.
tersi alinabilir bir islemdir, yani:
a &#8853 b = c dersek
c &#8853 b = a ‘dir.

ama hala header icin elimde iki secenek var. birincisi E0 ikincisi E1 ile bitiyor. xor keyini hangisi tamamliyorsa onu secmem gerek.

printf '0x%X\n' $(( 0x5473544B ^ 0xFFD8FFE0))
	0xABABABAB
printf '0x%X\n' $(( 0x5473544B ^ 0xFFD8FFE1))
	0xABABABAA

dogru header e0 ile biten ve aradigimiz key AB ‘ymis.
hizli bir sekilde cozumlemek icin xordump isimli toolu kullandim.
sorudaki dosyayla orijinal header patterni eslesiyor, bu noktadan sonra elimdeki datanin xor islemi

python ~/toolz/xordump-master/xordump/xordump
	Input: unirii_square.jpg
	Key: AB

flag:
picassor.

Strange Behavior

bize verilen personal.bin isimli bir dosya.

file personal.bin 
personal.bin: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved  
sectors 4, root entries 512, sectors 62500(volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 64,  
 sectors/track 32, heads 64, serial number 0x39d716e5, unlabeled, FAT (16 bit)

dos boot sector olarak gorunuyor. oncelikle mount etmeyi deniyorum

sudo mkdir /mnt/strange
sudo mount -t vfat -v personal.bin /mnt/strange/
    mount: /dev/loop0 mounted on /mnt/strange.

fakat mount ettigimde, dosyada bekledigimden cok daha kucuk boyutta bir kisim boot ediliyor.
iceride 3 fotograf 1 video var. bir seye ulasamiyorum. mount ettigim kismi unmount ettim.
binwalk ile baktigimizda.

binwalk personal.bin 

    DECIMAL       HEXADECIMAL     DESCRIPTION
    --------------------------------------------------------------------------------
    86016         0x15000         JPEG image data, JFIF standard 1.02
    124928        0x1E800         JPEG image data, JFIF standard 1.01
    516096        0x7E000         JPEG image data, JFIF standard 1.01
    3240397       0x3171CD        MySQL ISAM index file Version 4
    6881280       0x690000        Zip archive data, at least v2.0 to extract, name: _rels/.rels
    6881561       0x690119        Zip archive data, at least v2.0 to extract, name: docProps/app.xml
    6881858       0x690242        Zip archive data, at least v2.0 to extract, name: docProps/core.xml
    6882276       0x6903E4        Zip archive data, at least v2.0 to extract, name: xl/_rels/workbook.xml.rels
    6882558       0x6904FE        Zip archive data, at least v2.0 to extract, name: xl/workbook.xml
    6883122       0x690732        Zip archive data, at least v2.0 to extract, name: xl/styles.xml
    6883922       0x690A52        Zip archive data, at least v2.0 to extract, name: xl/worksheets/_rels/sheet1.xml.rels
    6884284       0x690BBC        Zip archive data, at least v2.0 to extract, name: xl/worksheets/sheet1.xml
    6885858       0x6911E2        Zip archive data, at least v2.0 to extract, name: xl/sharedStrings.xml
    6886682       0x69151A        Zip archive data, at least v2.0 to extract, name: [Content_Types].xml
    6887716       0x691924        End of Zip archive

iceride, boot ettigimizde goremedigimiz bir zip dosyasi var. yanlis anlamadiysam direk dosya
nin sonuna sonradan eklenmis.

binwalk --dd='.*' personal.bin
    ...
cd _personal.bin.extracted

sektordeki dosyalar disinda elimizde artik bir zip var
zipin icindeki xml dosyalarini karistirdigimda. xl klasoru altinda sharedStrings. xml
dosyasinda flag saklanmis.

...
xml:space="preserve">&quot;The ABC&apos;s of Beth&quot;</t></si><si><t xml:space="preserve">  
timctf{d0nt_f0rg3t_t0_h4v3_fun}</t></si><si><t xml:space="preserve">&quot;The Rickchurian M  
ortydate&quot;</t></si><si><t xml:space="preserve">Dan Harmon</t></si></sst>
...

flag : timctf{d0nt_f0rg3t_t0_h4v3_fun}

Secret Data

ekte bir pcapng dosyasi var, wireshark ile aciyorum.
arama kismina timctf yazip soldan packet details seciyorum.
25562. pakette secret_header: timctf{wir3_sh4rk_is_aw3som3}
nasi soru ama baya iyi bence.