Siber Güvenlik 1

Bandit WriteUP – Part:1

Bandit WriteUP Part 2’yi de okumak isterseniz: https://caglar-celik.com/siber-guvenlik/bandit-writeup-part2/

Makine adresi: http://overthewire.org/wargames/bandit/

Terminal kullanmaya yönelik olan, bu makinede 34 aşama bulunuyor. Size terminal komutlarını öğretmek ve sinir bozucu hatalarda ne yapacağınızı öğretmek için oluşturulmuş. Biz çözerken oldukça eğlendik. Basit bir SSH bağlantısı ile başlıyoruz. Her bulduğumuz MD5 hashi, diğer SSH bağlantısının parolası oluyor. Takıldığınız yerlerde web sitesinden ip uçlarını okuyabilirsiniz, kullanabileceğiniz komutlara dair ipuçlarına erişebilirsiniz. “bandit0” ile ilk ssh bağlantımızı yaparak durumu kavrayalım.

bandit0

Amaç oyuna giriş yapmak. bandit.labs.overthewire.org adresine bandit0 kullanıcı adı ve bandit0 parolası ile giriş yapacağız. SSH portu 2220.

Çözüm için kullanabileceğiniz komutlar:

ssh

Yardımcı Kaynaklar

Çözüm:

ssh bandit0@bandit.labs.overthewire.org -p 2220 komutundan sonra parola için bandit0 yazıyoruz ve makineye bağlanıyoruz. Sonrasında readme içerisindeki MD5 hashi bize bandit1 için giriş anahtarımızı veriyor.

Flag: boJ9jbbUNNfktd78OOpsqOltutMc3MY1

bandit1

Bir sonraki seviyeye geçmek için kullanacağınız anahtar – isimli dosyada bulunuyor.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find

Yardımcı Kaynaklar

Çözüm:

Dosya ismi – (tire) olan bir dosya var. MD5 hashi de içinde. E şahane cat – der hemen dosya içine bakarım. Ama işte gelin görün ki bilgisayarlar o kadar da akıllı makineler değil. Siz tire işaretini kullandığınızda cat komutunun devamına bir parametre girmeniz bekleniyor. E madem öyle, ben de önceki dizine giderim oradan dosyayı okurum dedim. Başarılı da oldu.

Flag: CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

bandit2

Bir sonraki seviyeye geçmek için kullanacağınız anahtar “spaces in this filename” isimli dosyada bulunuyor.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find

Yardımcı Kaynaklar

Çözüm:

Bu seferki dosya isminde ise aralarda boşluk bulunuyor. Yani yine cat komutu ile pata küte okuyamıyoruz dosyayı. Onun yerine cat komutundan sonra TAB tuşuna basarak tamamlayabilirsiniz. Diğer yöntem ise her kelimeden sonra aralara ters slash(\) koymak.

Şu şekilde: cat spaces\ in\ this\ filename

 

Flag: UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

bandit3

Bir sonraki seviyeye geçmek için kullanacağınız anahtar inhere isimli dizinin içinde bulunuyor.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find

Çözüm:

inhere dizininin içinde ls komutu yaptığımızda herhangi bir şey görünmüyor. Ancak ls -la komutu ile dizindeki gizli dosyalara da erişmek mümkün.

Flag: pIwrPrtPN36QITSp3EQaw936yaFoFgAB

bandit4

Bir sonraki seviyeye geçmek için kullanacağınız anahtar, okunabilir olan tek dosyada yer alıyor.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find

Çözüm:

Yine gizli dosya… ls -la komutu ile dosyalara göz atıyorum. -file00 ile başlayan bir liste karşılıyor. Önceki dizine geçip file inhere/-file0* komutunu veriyorum. Bu sayede inhere dizini içinde file0 ismi ile başlayan tüm dosyaların dosya tipini görebiliyorum. E bize de okunabilir bir dosya var demişti soruda. O da görüldüğü üzere -file07. Flag onun içinde. İtiraf edeyim ki biz makineyi çözerken tüm dosyaların içini tek tek okuduk. Sonradan ya burada yüzlerce dosya olsaydı sorusu aklıma geldi ve alternatif olarak bu çözümü buldum.

Flag: koReBOKuIDDepwhWk7jZC0RTdopnAYKh

bandit5

Bir sonraki seviyeye geçmek için kullanacağınız anahtar inhere dizini içerisinde yer alıyor. Dosya execute edilemez, 1033 byte ve insanlar tarafından okunabilir.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find

Çözüm:

Madem dosya boyutu 1033 byte, ben de dosya boyutuna göre arama yapabilirim. find -size 1033c komutu ile anahtara ulaşıyorum.

Flag: DXjZPULLxYr17uwoI01bNLQbtFemEgo7

bandit6

Bir sonraki seviyeye geçmek için kullanacağınız anahtar sunucuda bir yerde saklanıyor. Kullanıcı bandit7, grup bandit6 olan bir dosya ve boyutu 33 byte.

Çözüm için kullanabileceğiniz komutlar:

ls, cd, cat, file, du, find, grep

Çözüm:

Madem sunucuda her yerde olabilir diyor, ben de kök dizine gider ve işleme orada devam ederim (cd .. komutu). Daha sonra find komutu ile user, grup ve boyuta göre arama yapabilirim.

find -size 33c -user bandit7 -group bandit6

Oldukça karışık bir çıktı geliyor. Ancak erişim iznimiz olan tek bir dosya var. İçini okuduğumda yeni anahtarımı almış oluyorum.

./var/lib/dpkg/info/bandit7.password

Flag: HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

 

bandit7

Bir sonraki seviyeye geçmek için kullanacağınız anahtar data.txt dosyasında millionth kelimesinin yanında yer alır.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Çözüm:

Gayet basit. Madem millionth yanında yer alıyor ben de millionthnin bulunduğu satırı getiririm.

grep -r millionth

Flag: cvX2JJa4CFALtqS87jk27qwqGhBM9plV

 

bandit8

Bir sonraki seviyeye geçmek için kullanacağınız anahtar data.txt dosyasında saklanır ve kendini sadece bir defa tekrar eder.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Yardımcı Kaynaklar

Çözüm:

Dosyayı okuyup tek tek bakacak olursanız durum facia. Elbette bunun da pratik bir yolu var.

cat data.txt | sort -n | uniq -c

Bu komut ile data.txt dosyasının içindekileri sort komutu ile sıralıyoruz, uniq komutu ile sayıyor ve yanına kaç tane olduğunu yazdırıyoruz. Zaten anahtar olmayan tüm veriler 10 kez tekrarlanmışken esas elemanımız 1 defa tekrarlanmış şekilde karşımıza çıkıyor.

Flag: UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

bandit9

Bir sonraki seviyeye geçmek için kullanacağınız anahtar data.txt içerisinde okunabilir formatta yer alıyor. “=” işaretinden sonrasına bakmanız yeterli.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Çözüm:

Eşittir işaretinden sonrasını görmek için bir arama atmam yeterli oluyor. Ancak bu defa cat komutu kullanamıyorum. Çünkü binary formatında bir dosya ile karşı karşıyayım. Ben de strings komutu ile binary formatındaki dosyaları okuyabiliyorum.

strings data.txt | grep “=”
Flag: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

 

bandit10

Bir sonraki seviyeye geçmek için kullanacağınız anahtar data.txt içerisinde base64 formatında.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Çözüm:

E adam daha ne desin? Base64 demiş, Şu dosyanın içinde demiş.

Flag: IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

 

bandit11

Bir sonraki seviyeye geçmek için kullanacağınız anahtar, tüm küçük harf (az) ve büyük harf (AZ) harflerinin 13 konumlu döndürüldüğü data.txt dosyasında saklanır.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Çözüm:

Hevesimiz kırıldı. Sezar sorulur mu böyle tatlı tatlı terminalle oynarken? Herhangi bir sezar decode aracına gidin ve 13 harf kaydırın. Cevap ortada.

Flag: 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

 

bandit12

Bir sonraki seviyeye ait anahtar, art arda sıkıştırılmış bir dosyanın hexdump’ı olan data.txt dosyasında saklanır. Bu seviye için, / tmp altında mkdir kullanarak çalışabileceğiniz bir dizin oluşturmak faydalı olabilir. Örneğin: mkdir / tmp / myname123. Sonra cp ile dosyayı kopyalayın ve mv kullanarak yeniden adlandırın.

Çözüm için kullanabileceğiniz komutlar:

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv, file

Çözüm:

Bizi sinir eden sorulardan. O kadar çok isim değiştirmemiz gerekti ki…

Öncelikle data.txt dosyasını tmp dizininde oluşturduğum zindik dizinine taşıdım. Daha sonrasında bu hexadecimal dosyayı tersine çevirmek için “xxd” isimli aracı kullandım.(Ben başka bir şekilde çevirdim ancak daha sonra araştırdığımda xxd’nin daha kolay olduğunu gördüm.) Daha sonra oluşan dosyanın türüne baktım. Ondan sonrası tam arap saçı. Dosya türüne göre dosya adını değiştirip sıkıştırılmış dosyadan çıkartıyoruz. Sonra tekrar dosya türüne bakıp başa sarıyoruz. Ta ki ASCII dosyasına erişene kadar.

Flag: 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

bandit13

Bir sonraki seviyeye ait anahtar,  / etc / bandit_pass / bandit14 içinde saklanır ve sadece kullanıcı bandit14 tarafından okunabilir. Bu seviye için bir sonraki anahtarı alamazsınız, ancak bir sonraki seviyeye giriş yapmak için kullanılabilecek özel bir SSH anahtarı alırsınız.

Not: localhost , üzerinde çalıştığınız makineyi ifade eden bir ana bilgisayar adıdır.

Çözüm için kullanabileceğiniz komutlar:

ssh, telnet, nc, openssl, s_client, nmap

Çözüm:

Makineye baktığımda bir ssh dosyası görüyorum. İpucundan da yola çıkarak bandit14 için SSH bağlantısı yapıyorum.

Daha sonra bağlandığım makinede, soruda verilen dosyayı okuyorum ve cevaba ulaşıyorum. Hepsi bu.

 

Flag: 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e

bandit14

Bir sonraki seviyeye ait anahtara erişmek için localhosttaki 30000’e bağlanıp bu bölümün parolasının girilmesi gerekiyor.

Çözüm için kullanabileceğiniz komutlar:

ssh, telnet, nc, openssl, s_client, nmap

Çözüm:

Zaten soruda verileni uygulayınca iş çözülüyor.

Flag: BfMYroe26WYalil77FoDi9qh59eK5xNr

“Bandit WriteUP – Part:1” üzerine 1 yorum

  1. mustafa dedi ki:

    eline sağlık abi çok bilgilendirici bir yazı olmuş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.