
Turkish: 
Flareon, yangından kaynaklanan ters mühendislik zorlukları dizisidir
Çünkü tersine mühendislikle ilgilenen akıllı bireyleri bulmak ve işe almak istiyorlar.
Bir işe ihtiyacınız olursa, benimle iletişime geçin, size çözümleri satacağım. Şaka yapıyorum
Henüz bilmiyorum ne kadar ileriye gideceğim, tersine mühendislik oldukça zaman alıcı olabilir
Ve birçok zorluğun aslında benim dünyam olmayan Windows'a dayandığına inanıyorum.
neyse
Oyun basit bir örnek her anahtarı bulmak anahtarı analiz etmek
Bir e-posta adresi gibi gözüküyor ve Idi fişeği ile bitiyor - comm üzerindeki fişekle yazdığınız her mücadelenin anahtarını girin
CTF uygulaması bir sonraki mücadelenin kilidini açmak için
Oh, bu tarayıcıya kızmıştım mı?
Terminal nokta eğik çizgi az önce gösterilen dosyaları listelemek gerekiyordu ls işe yaramadı
Metin ve hatta CD ile bir dizine taşındıktan hemen sonra
kelimenin tam anlamıyla oynanamaz

English: 
Flareon is a series of reverse engineering challenges by fire
I because they want to find and hire smart individuals interested in reverse engineering
So if you need a job just contact me and I sell you the solutions. Just kidding
I don't know yet how far I will get as reverse engineering can be quite time-consuming
And I believe many challenges are based on Windows, which is not really my world
anyway
The game is simple analyze the sample find the key each key
Looks like an email address and ends with Idi flare - on comm enter the key for each challenge in the flare on
CTF app to unlock the next challenge and
Oh boy, did I get mad at this browser?
Terminal dot slash didn't work l s which is supposed to list files just showed
Text and even having moved with CD into a directory you could just move away
literally unplayable

English: 
So, let's look at the first challenge minesweeper
championship registration welcome to the fifth annual
Flareon challenge the minesweeper World Championship is coming soon, and we found the registration app. You weren't officially invited
But if you can figure out what the code is you can probably get in
anyway
Good luck and here we can download the file when you unpack the 7-zip archive with the password infected
You will get a dot jar file. I'm a hundred percent sure that the first challenge will be just the most basic thing ever
So I just immediately used JD GUI
Which is a java decompiler and right here in the main method you find that the string is compared to the email golden ticket
2018 at Flareon comm so this is our first flag. Let's copy it into the form and submit the flag, correct?

Turkish: 
Öyleyse ilk meydan mayın tarama gemisine bakalım.
şampiyona kaydı beşinci yıla hoşgeldiniz
Flareon, mayın Tarlası Dünya Şampiyonası'na yaklaşıyor ve yakında kayıt uygulamasını bulduk. Resmen davetli değildin
Ama kodun ne olduğunu bulabilirseniz, muhtemelen girebilirsiniz.
neyse
İyi şanslar ve burada 7-zip arşivini şifreli şifreyle açtığınızda dosyayı indirebiliriz
Bir nokta kavanoz dosyası alacaksınız. İlk mücadelenin şimdiye kadarki en temel şey olacağından yüzde yüz eminim
Bu yüzden hemen hemen JD GUI kullandım.
Hangi bir java decompiler ve tam burada ana yöntemde dize e-posta altın bilet ile karşılaştırıldığında olduğunu bulmak
Flareon Comm de 2018 bu yüzden bu bizim ilk bayrağımız. Hadi forma kopyalayalım ve bayrağını gönderelim, düzeltelim mi?

Turkish: 
Güzel. İlk zorluğu çözdük. Öyleyse en son mayın tarama gemisine geçmek için zaman kaybetmeyelim.
Mayın Tarlası şampiyonluğuna gireceksiniz. Aferin. Şimdi. Rekabet zamanı
İşte nihai mayın tarama gemisi ikili ritmi, şampiyonluğu kazandı ve sizi tekrar daha büyük mücadelelere taşıyacağız
Bu kez indirmek için ikili bir 7 alt arşiv olsun. Bir exe dosyası aldık
Sanırım, hala hala süper basit olan ikinci bir meydan okuma. Bu yüzden hemen sökme Ida açtım
Exe'i analiz etmek için burada sürüm 7'yi kullanıyorum, ancak nasıl yapılacağını seçtiğimizde tam burada
Dosyayı yükle
İkili bir dotnet gibi göründüğünü gördüm?
montaj ikilisi ve Ida’yı
Bu sadece düzenli bir PE derlenmiş ikili sonra boş görünüyor
Çünkü bu Dannette bir ikili.
Dediğim gibi, aslında Windows ile o kadar da deneyimli değilim.
Elbette yıllar boyunca burada bir şeyler topluyorsunuz, bu yüzden dotnet programlarının düzenli olarak derlenmediğini biliyorum.

English: 
Cool. We solved the first challenge. So let's not waste any time move on to the next one ultimate minesweeper
You'll Hecht your way into minesweeper championship. Good job. Now. It's time to compete
Here's the ultimate minesweeper binary beat it win the championship and we will move you on to greater challenges again
We get a 7 sub archive with the binary to download this time. We got an exe file
I assume because it's still just a second challenge that it's still super simple. So I immediately opened the disassembly Ida
I'm using the version 7 freeware here to analyze the exe but right here when we select how to
Load the file
Id I saw that the binary seems to be a dotnet?
assembly binary and if you would instruct Ida to assume
It's just a regular PE compiled binary then it looks empty
That's because this is a Dannette binary
Like I said, I'm really not that experienced with Windows though
Of course over the years you pick up stuff here and there so I know that dotnet programs are not compiled down to regular

English: 
x86 Intel CPU machine code but it's compiled to an intermediate language and the D compilation of that is super nice with tools like
il spy so we can open the binary in their
Ultimate minesweeper at first I was just clicking around. I didn't even execute the binary yet
I have no clue if we we have to play something
But the code doesn't look too large and I was just trying to get a feeling of what is implemented here
and of course
you quickly see names such as success pop up or fail your pop up and the minefield and so forth and
I immediately went for the success pop up
What else would I look at so this class has some texts as labels a picture and a text box the initialized component
initializes those
Components but also things like the text
Congratulations who have won the ultimate minesweeper championship and nobody cares. Here's your prize
But no flag here. Hmm. Is it maybe displayed as an image? That's the image containing the flag

Turkish: 
x86 Intel CPU makine kodu, ancak bir orta dilden derlendi ve bunun D derlemesi gibi araçlarla çok hoş
casusluk yap, böylece ikiliyi açabiliriz.
Başlangıçta Ultimate mayın tarama gemisi sadece tıklıyordum. Henüz ikili dosyayı bile çalıştırmadım
Bir şey oynamak zorunda kalırsak, hiçbir fikrim yok
Ancak kod çok büyük görünmüyor ve ben sadece burada ne uygulandığını hissetmeye çalışıyordum.
ve tabi ki
başarı gibi isimleri hızlı bir şekilde görürsünüz ya da pop-up'ınızı ve mayın tarlasını ve diğerlerini
Hemen başarıya ulaşmak için gittim
Başka ne bakmalıyım ki, bu sınıfın bir resim etiketli bazı metinleri ve ilklendirilen bileşeni bir metin kutusu olması
bunları başlatır
Bileşenler aynı zamanda metin gibi şeyler
Son mayın tarama gemisi şampiyonluğunu kazanan ve kimsenin umrunda olmayan tebrikler. İşte ödülün
Fakat burada bayrak yok. Hmm. Belki görüntü olarak gösteriliyor mu? Bayrağı içeren görüntü bu

English: 
So I was looking for that image resource, but I only found these balloons. Hmm. Also the other pictures do not have a flag
But when checking the success pop-up constructor which takes a key as parameter
You can see that it's assigned to the textbox 1 and that happens after the other
Components were initialized so that key is very likely the flag
So where does the key come from with right-click on the method name?
We can select analyze which opens up this tree structure below and here we can check where this function is used
So it's used inside the squared revealed callback of the main form this method takes a column and a row
integer and checks if a bomb was revealed so
Sounds like typical minesweeper in case a bomb was revealed
We would get the failure pop-up and exit but if that didn't happen
Then we see that a number is calculated based on the row and column and then added to a guess a list or array of
revealed cells

Turkish: 
Bu yüzden bu görüntü kaynağını arıyordum, ancak yalnızca bu balonları buldum. Hmm. Ayrıca diğer resimlerde bayrak yoktur.
Fakat parametre belirlenirken başarıyı gösteren pop-up yapıcısını kontrol ederken
Bunun metin kutusuna 1 atandığını ve diğerinden sonra olduğunu görebilirsiniz.
Bileşenler başlatıldı, bu nedenle anahtar bayraktan büyük olasılıkla
Öyleyse anahtar, yöntem adına sağ tıklayarak nereden geliyor?
Aşağıdaki bu ağaç yapısını açan analizi seçebilir ve burada bu işlevin nerede kullanıldığını kontrol edebiliriz
Bu yüzden, ana formun, kare şeklinde açığa çıkarılan geri çağırma işleminde kullanılır, bu yöntem bir sütun ve bir satır alır
tamsayı ve bomba ortaya çıkardı mı diye kontrol eder.
Bir bomba ortaya çıkması durumunda tipik mayın tarama gemisi gibi geliyor
Başarısızlığı ortaya çıkarır ve çıkarırdık ama bu olmasaydı
Sonra, bir sayının satır ve sütuna göre hesaplandığını ve ardından bir tahmin listesine veya bir diziye eklendiğini görüyoruz.
açığa çıkan hücreler

Turkish: 
Bu yüzden, her seferinde Rho çarpı V tarafından hesaplanabilen hücre sayısını bombalamadı.
Alec Note sınırsız iyi gelir, böylece bu değişken adı garip
Hesaplama mantıklı olurdu
Rho çarpı sıra başına hücre sayısı artı sütun bu şekilde olsaydı, her hücreye sadece sayı
Bu nedenle, satır başına hücrelerin hücrelerinin bana bir günlük düğüm limiti adı verildiği görülmesi biraz tuhaf görünüyor
Ve bu yüzden biraz şaşırtma ya da karışıklık eklemek anlamına geldiğini düşünüyorum
Herhangi bir şekilde bu diziye doğru açığa çıkarılan hücreleri ekliyoruz ve eğer açığa çıkarılmamış hiçbir sol yoksa, başarıyı yaratıyoruz
Açığa çıkan hücreler dizisini alan, get anahtarı tarafından oluşturulan anahtar ile açılır. Öyleyse bu yöntemi kontrol edelim
Her şeyden önce, açığa çıkarılan hücrelerin dizisini sıralıyoruz, sonra rasgele bir tamsayı ile başlatılıyor.
ilk üç açığa çıkan hücre numaralarına göre ilk üçte üçe dayalı hesaplanan ve

English: 
So every time you didn't uncover a bomb the number of the cell which can be calculated by the Rho times V
Alec Note limitless come well, so so that variable name is weird
The calculation would make sense
If it were Rho times the amount of cells per row plus the column this way you just number each cell
So the fact that the cells per row values appears to be called me a log node limit seems a bit odd
And thus I think it's meant to add a little bit of obfuscation or confusion
In any way we add the correct revealed cells to this array and if there are none unrevealed left we create the success
Pop-up with the key generated by get key which gets the revealed cells array. So let's check out that method
First of all, we sort the array of revealed cells then random is initialized with an integer
calculated based on the first second third based on the first three revealed cell numbers and

Turkish: 
Bunun gibi rastgele başlatılması, bunun rasgele sayı üretecinin tohum değerini ayarladığı anlamına gelir.
Jeneratör sayısını bilmemeniz durumunda koltuk gerektirir
Temel olarak bir başlangıç ​​değeri ve rastgele sayıların üretildiğine bağlı olarak
Böylece aynı tohumu kullanarak aynı rasgele değerleri üretir
bu yüzden bu mücadelenin krateri hangi hücrelerin doğru hücrelerin olduğunu tam olarak bilir ve bu
Burada hesaplanan tamsayı her zaman aynı olacaktır
Böylece rastgele sayı üreteci her zaman aynı sayıları üretecektir.
En azından doğru hücreleri ortaya çıkardığın sürece, bu rastgelelik kolayca saldırabilir, ama bir saniye içinde açıkladım.
İlk önce bu kodu çabucak bitirelim.
yani burada büyük bir bayt dizisi ile başlatıldı
Görünüşe göre rastgele veri ve daha sonra ikinci bir bayt dizisi daha sonra rastgele sayı üretecindeki rastgele baytlarla doldurulur.
XOR olan döngüyü bulduk ki bu iki hatayı bir araya getirip ASCII olarak kodlanmış olmasına rağmen
Böylece X veya şifre çözme anahtarı göstermeli

English: 
Initializing random like that means this is setting the seed value of the random number generator
In case you don't know to the number of generators require a seat
Basically an initial value and based on that the random numbers are generated
So using the same seed produces the same random values
so the crater of this challenge knows exactly which cells are the correct cells and that's the
Integer that is calculated here will always be the same
So the random number generator will always generate the same numbers
At least as long as you reveal the correct cells this randomness can be easily attacked, but I explained it in a second
Let's quickly finish that code first
so here a big byte array is initialized with
Seemingly random data and then a second byte array is filled with random bytes from the random number generator after
That we find the loop that is XOR ring both these errors together and despite encoded as ASCII is returned
So that X or decryption should reveal the key

Turkish: 
Yani temelde burada şifreli bir bayrak var ve anahtar dinamik olarak
Doğru tohum ve doğru tohum gerektiren doğru rastgele sayı üreteci ile üretilir ve doğru açığa çıkmış hücreler gerekir
Ancak bir zayıflık var
Her şeyden önce, tohum kesinlikle bir 32-bit tamsayıdır ve 32-bit tamsayılar o kadar büyük değildir.
Eksi 2 milyardan 2 milyara çıkarlar
Yani burada mümkün olan sadece dört milyar seçenek
Bu, bu bayt dizisini bayrağa şifresini çözene kadar dört milyar seçeneğin tümünü kaba bir şekilde zorlayabileceğimiz anlamına geliyor.
Flare uncom ile bittiğimizi biliyoruz, ancak kaba kuvveti daha da optimize edebiliriz çünkü tohumun
aynı zamanda açığa çıkan 3 hücreye göre hesaplanmıştır.
hemen önce sıralanmış
Bu, ilk hücrenin, ikinci hücrenin bundan daha büyük olması ve üçüncü hücrenin daha büyük olması gereken en küçük sayı olması gerektiği anlamına gelir.
Yani bunlar zaten iyi
kısıtlamaları ve bunun üzerine
Daha önce gördüğümüz hesaplama, bir hücre için maksimum miktarın ne kadar olduğunu bulmaya çalışabiliriz.

English: 
So basically we have here an encrypted flag and the key is dynamically
Generated through absolutely random number generator that requires the correct seed and the correct seed requires the correct revealed cells
But there is a weakness
First of all, the seed definitely is a 32-bit integer and 32-bit integers are not that huge
They go from minus 2 billion to 2 billion
So only four billion options that are possible here
Which means we can just brute-force all four billion options until we decrypt this byte array to the flag
which we know ends with at flare uncom but we can even optimize the brute force further because we know that the seed is
calculated based on the 3 revealed cells which are also
sorted right before
This means the first cell must be the smallest number the second cell must be larger than that and the third even larger
So these are already good
constraints and on top of that based on the
Calculation we have seen before we can try to find what the maximum amount for a cell even is

English: 
this via a log node limit number appears to be 30 and also the minefield is initialized with the size and
This one is also the via log note limit
So that means that the maximum number of four row and column is like 30 or 31 29, you know
I'm computer science is complicated
I'm not exactly sure if the first cell here started with zero or one in the callback handle of the clique
Whatever. It doesn't make the brute force worse, but now we have even more constraints
This means we can now just copy and paste the gate key function and wrap it into some loops to try out all
possible numbers for first second and third cell and
Here's the code we have three loops each loop is responsible for one cell
so a is the first be the second and C the third possible revealed cell and the max value for each of them is
30 times 30 that's the minesweeper grid size and also because the revealed cells are sorted
we know that B must be larger than a

Turkish: 
Bu bir log düğümü aracılığıyla limit numarası 30 gibi görünmekte ve mayın tarlası da büyüklük ile başlamaktadır.
Bu, aynı zamanda log notu limitidir.
Demek ki, maksimum dört satır ve sütun sayısı 30 veya 31 29 gibi.
Ben bilgisayar bilimi karmaşık
Buradaki ilk hücrenin, clique'ın geri çağırma tutamacında sıfır mı yoksa bir mi ile başladığından emin değilim.
Her neyse. Bu kaba kuvveti daha da kötüleştirmiyor, ama şimdi daha da fazla kısıtlamamız var.
Bu, artık geçit anahtarı işlevini kopyalayıp yapıştırabilir ve hepsini denemek için bazı döngülere sarabileceğimiz anlamına gelir.
birinci ikinci ve üçüncü hücre için muhtemel sayılar ve
İşte kodumuz üç döngüdür, her döngü bir hücreden sorumludur
bu nedenle, a birinci, ikinci ve C üçüncü olası açığa çıkarılan hücredir ve her biri için maksimum değer
30 kez 30 mayın tarama gemisi ızgara büyüklüğü ve ayrıca açığa çıkan hücreler sıralanır çünkü
B'nin bir büyükten büyük olması gerektiğini biliyoruz.

Turkish: 
Her zaman böylelikle B'yi a'dan büyük biri olarak başlatabiliriz ve aynı şey CC'nin en az bir tane büyük olması için geçerlidir.
B'den, böylece şifresi çözülen bayt dizgisinin içeriğini kontrol eder.
Flareon comm belki beş dakika süper hızlı kolay peasy alır
ama sonra kaba kuvvet sona erdiğinde şaşırdım ve
Beni gerçekten şaşırtan hiç bir anlamı olmayan şey bulamadı.
Bu yüzden bir noktada tohum için mümkün olan 4 milyar tamsayı değerinin tümünü bile kaba kuvvete zorladım.
Hala bulamadım. Bu çok garipti
Böylece D derleyicisine geri döndüm ve doğru hücrelerin ne olduğunu bulmaya çalıştım.
Böylece etrafa biraz baktım ve bu iki boyutlu alanı ya da mayın tarama gemisi ızgarasını buldum.
Boolenini doğru ya da yanlış sunun, böylece muhtemelen bir maden olup olmadığını bize söyleyin

English: 
Always so we can always start B being one larger than a and the same is true for C C being at least one larger
Than B so that brute force checking if the decrypted byte string contains
Flareon comm takes maybe five minutes super quick easy peasy
but then I was surprised when the brute force reached the end and
Didn't find anything what the heck that doesn't make any sense that really confused me
so at some point I even just brute force all possible 4 billion integer values for the seed and
Still didn't find it. That was so weird
So I went back into the D compiler and try to find what the correct cells are
So I looked a bit around and found this two dimensional areas or the minesweeper grid called mines
Present its boolean true or false so that probably tells us if there is a mine or not

English: 
And with the analyze feature we can again look for where this is you let's see where the get method is used
So where it reads this value and there is this garbage collect area, which also has mines present
bool
True or false and that one is used by
Allocate memory which gets passed in a minefield and that one has two loops going from zero to be allowed note limit
Which we know is the grid size 30
So just because these names like allocate memory
Garbage collect via a log node limit blahblah means something. It's really confusing to read the code
They refer to very different concepts in computer science, but the names are fooling us
We know that the two dimensional array
Variable garbage collect also has mine present and this flag can be true or false and is assigned to it
so this loop goes over the whole 30 times 30 grid and decides based on this obscure if statement using
Div a lock tab if a particular cell has a mine or not and that weird function takes R and C

Turkish: 
Ve analiz özelliği ile, bunun nerede olduğunu, bakalım yönteminin nerede olduğunu görelim.
Öyleyse bu değeri okuduğu yerde ve aynı zamanda mayınların da bulunduğu bu çöp toplama alanı var.
bool
Doğru veya yanlış ve bu kişi tarafından kullanılır.
Bir mayın tarlasında geçen hafızayı tahsis et
Bildiğimiz ızgara boyu 30
Öyleyse sadece bu isimler bellek ayırmak gibi
Bir günlük düğümü aracılığıyla çöp toplamak sınır blahblah bir şey ifade ediyor. Kodu okumak gerçekten kafa karıştırıcı.
Bilgisayar biliminde çok farklı kavramlara atıfta bulunuyorlar, ancak isimler bizi kandırıyor
İki boyutlu dizi olduğunu biliyoruz
Değişken çöp toplama da benim madenciliğe sahiptir ve bu bayrak doğru veya yanlış olabilir ve ona atanır.
bu yüzden bu döngü 30 kez 30 gridin tamamını geçer ve ifade kullanıldığında bu belirsizliğe dayanarak karar verir.
Belirli bir hücrenin mayınlı olup olmadığına ve garip işlevin R ve C ye sahip olması durumunda kilit sekmesini Div

Turkish: 
Hangi açıkça sadece satır ve sütun ve açıkça bir hesaplama.
Uçları çevirmek ve daha sonra bu sonucun kilit tiplerinde olup olmadığını kontrol eder
Bu yüzden sadece bizi atmak ve aklı olan ve olmayan hücreleri şaşırtmak için
Ama kanmayın
Ayrıca bizim kilit tiplerimizi tersine çevirmemiz ve satır ve sütunu bulmamız gerekmiyor.
Tüm kodu tekrar kopyalayıp yapıştırabiliriz.
Tüm önemli numaraları aldığımızdan emin olduktan sonra ne dediğimizi yazdırabiliriz.
Yanlış yani aklımda bulunmadığında kaçtığımızda üç hücre buluruz
Aklı olmaması gereken yerde ve şimdi oyunu uygulayabiliriz
İşte bu ve sıradaki hücreleri sayın ve 1 2 & 3 hücrelerini bulun ve biz kazanın.
İşte bayrak hileleri her zaman mercimek sakininde kazanıyor, ama hala kafam karıştı
Neden kaba kuvvetimiz işe yaramadı, ama şimdi doğru olan 3 hücreyi bildiğimize göre

English: 
which is just row and column obviously and that's a calculation on it and
Flipping the bits and then checks if that result is contained in via lock types
So it's just to throw us off and obfuscate the cells that have and don't have a mind
But we don't get fooled
We also don't really have to invert those we a lock types and figure out the row and column
We can just copy and paste the whole code again
Make sure that we get all the important numbers and then we simply print when we what said
False so when the mind is not present when we run that we find three cells
Where there shouldn't be a mind and now we can execute the game
Here this and count the cells on rows and find the cells 1 2 & 3 and we win
Here's the flag cheaters always win at flareon calm, but I'm still confused
Why our brute force didn't work, but now that we know the exact 3 cells that are correct

English: 
we can test our code we can just hard code a B and C based on the rows and columns we got and
Otherwise the code is the same C the random number generator
generate the XOR K XOR device
I
Get it. I'm so dumb
Okay, so I had this whole ending prepared where I showed that even
hard-coding the seed in a loop didn't really work and it was
Alternating the flag and garbage and I didn't fight my bag when I did the challenge
I also didn't find it when I prepared the script for the video
It didn't see it
When I edited this part only now in my second round of editing where I draw my overlays it clicked
I'm so dumb. The encrypted flag array too is initialized once and the XOR operation is
Modifying those bytes. So in the next loop round, we now have garbage in that array, too
And it's not the encrypted flag anymore
Thus my brute-force failed by initializing array two in each loop. It works

Turkish: 
kodumuzu test edebiliriz sadece sahip olduğumuz satır ve sütunlara dayanarak bir B ve C kodunu zorlayabiliriz.
Aksi halde kod aynı C rasgele sayı üretecidir.
XOR K XOR cihazı oluşturun
ben
Anla. ben çok aptalım
Tamam, bu yüzden bütün bunları hazırladığım yerde hazırladım
bir döngü içinde tohum kodlama gerçekten işe yaramadı ve oldu
Bayrakları ve çöpleri değiştirerek, meydan okuduğumda çantamla kavga etmedim
Video için senaryoyu hazırladığımda da bulamadım
Görmedi
Bu bölümü yalnızca şimdi düzenlediğimde, düzenleme turumda yer paylaşımlarımı çizdiğim yere tıkladı
Ben çok aptalım. Şifreli bayrak dizisi de bir kez başlatılır ve XOR işlemi
Bu baytları değiştirme. Yani bir sonraki döngüde, şimdi de bu dizilimde çöp var.
Ve artık şifreli bayrak değil.
Böylece kaba kuvvetim, her döngüde ikinci diziyi başlatarak başarısız oldu. İşe yarıyor
