alpertunga
Üye
Leviathan: Level 0 Writeup
ssh [email protected] -p 2223password: leviathan0
Makinemize giriş yaptık. Hemen bulunduğumuz dizinde neler varmış bir bakalım
.backup isimli bir klasör dikkatimizi çekiyor ve içerisine baktığımız zaman bookmarks.html isimli bir dosya olduğunu görüyoruz.
Bunun içerisinde ne varmış bir bakalım…
Uzun bir çıktı olduğu için incelemesi zor olacaktı. Bu yüzden leviathan1 kullanıcısı ile herhangi bir bilgi var mı diye grep aracından yardım alıyoruz. Ve leviathan1 kullanıcısına ait parolayı elde ediyoruz.
leviathan1:rioGegei8m
Leviathan: Level 1 Writeup
ssh [email protected] -p 2223password: rioGegei8m
İlk yazıda leviathan1 kullanıcısının parolasını elde etmiştik. Şimdi bu kullanıcı ile sisteme girerek leviathan2 kullanıcısına ait parola bilgisini bulmaya çalışacağız
check isimli bir dosyamız olduğunu görüyoruz. Çalıştıralım bakalım ne işe yarıyormuş
Bizden bir password istiyormuş. Burda bizden istediği parolayı öğrenmek için ltrace aracından yardım alacağız. Peki ltrace nedir ?
Evet kısaca ltrace şöyle bişiler. İsterseniz daha detaylı araştırabilirsiniz.
ltrace ./check komutunu giriyoruz ve daha sonra rastgele bir parola giriyoruz.
Gördüğünüz üzere aslında 3 karakterlik bir passworde ihtiyacımız varmış. Ve bu parolayıda strcmp fonksiyonu ile karşılaştırarak kontrol ediyor. Eee haliyle kontrol ettiği şey bizim parolamız oluyor.
Programımızı normal bir şekilde çalıştırıp bizden istediği parolayı girelim
Ve gördüğünüz üzere leviathan2 kullanıcısına geçiş yapmış olduk. Kullanıcılara ait parola bilgileri /etc/leviathan_pass/ dizini altında tutulmakta. İlgili dizinde ilgili dosyamızı okuduğumuz zaman leviathan2 kullanıcısının da parolasını öğrenmiş oluyoruz.
leviathan2ugahZi8Ta
Leviathan: Level 2 Writeup
ssh [email protected] -p 2223password: ougahZi8Ta
Elimizde gene 32 bit çalıştırılabilir bir linux dosyası mevcut. Hızlıca bakalım ne işe yarıyormuş
Bizden argüman olarak bir dosya istiyor ve daha sonra o dosyanın içerisinde yazan şeyi ekrana basıyor. Eee durum böyle olunca tabi aklımıza ilk olarak leviathan3 kullanıcısının parolasının olduğu dosyayı okutmak geliyor.
Ancak o kadar da basit değil
ltrace ile bi göz gezdirelim arkada ne olaylar dönüyormuş
İlk önce okumak istediğimiz dosyanın ne olduğuna bakıyor. Daha sonra bu dosyada yetkimiz var mı yok mu bunu kontrol ediyor. Eğer yetkimiz yok ise içeriğini bize göstermiyor
NOT : Burda yetkimizin olup olmadığını ilk başta bulunan access fonksiyonu ile tespit ediyor. Dosya leviathan3’e ait iken biz leviathan2 kullanıcısı olarak bakmaya çalıştığımızda da haliyle bize göstermiyor
Pekala o zaman biz bunu nasıl okuyacaz ? Yok mudur bunun bir yolu yordamı ? Eh soru olarak böyle bişi koydularsa vardır bişiler heralde
Bunu isterseniz uygulamalı olarak gösterelim
#include <stdio.h>
#include <stdlib.h>
int main(void) {
system("/bin/cat 1 2 '1 2'");
}
Şimdi /bin/cat işlemine 3 tane argüman verdik ve 3 argümanıda ekrana bastı. Burda dikkatimizi çeken birşey var. ‘1 2’ olarak yazdığımız zaman bizim '1 2' isimli dosyamızın içeriğini ekrana basıyor öyle değil mi ? Ancak tırnak ifadeleri olmadan direk 1 2 yazarsam önce 1 isimli dosyanın sonra 2 numaralı dosyayın içeriğini ekrana basıyor.
Yukarda bakmış olduğumuz ltrace çıktısına bakacak olursak eğer girmiş olduğumuz dizini ' ' (tek tırnaklar) arasına almadan direk argüman olarak kullanıyor. Yani ben /etc/leviathan_pass/leviathan3 dosyasını ln komutu yardımıyla bir dosya üzerine linklendirme/bağlantı kurma işlemi gerçekleştirsem ve daha sonra sembolik bağlantı dosyasının adında bir dosya daha oluşturup arasında boşluk bırakarak yanına rastgele bir kelime daha eklesem nasıl olur ?
Örnek verecek olacak olursak eğer;
ln -s /etc/leviathan_pass/leviathan3 leviathan3password
touch leviathan3password\ falanfilan
Artık iki tane dosyam var. Biri direk leviathan3password->/etc/leviathan_pass/leviathan3 diğeri ise 'leviathan3password falanfilan'
Ben eğer argüman olarak leviathan3password falanfilan dosyasını verirsem bu dosyanın izinlere bana ait olduğu için access kontrolünden geçecektir. Daha sonra system fonksiyonu içerisinde gelecektir. Dosyanın yolunu tırnak içerisinde almadığı içinde leviathan3password ve falanfilan isimli iki ayrı dosyayı okuyup ekrana basmaya çalışacaktır.
Sanırım bu kısmı anlatabildim. Eğer kafalarda soru işareti kalmadıysa devam edelim ve bunu uygulayalım
Ve gördüğünüz gibi yaptığımız işlem işe yaradı ve leviathan3 kullanıcısının parolasını elde ettik.
leviathan3:Ahdiemoo1j
NOT: Bu şekilde argüman verdiğimiz zaman arkada dönen olayı görmek isteyenler için şunuda şuraya bırakayım
Leviathan: Level 3 Writeup
ssh [email protected] -p 2223password: Ahdiemoo1j
Bu bölümde aslında daha önce yapmış olduğumuz Level 1 çözümünün aynısı. Parolayı girmemizi istediği kısma gelmeden önce şaşırtma amaçlı bir tane daha strcmp fonksiyonu eklenmiş sadece
leviathan4:vuH0coox6m
Leviathan: Level 4 Writeup
ssh [email protected] -p 2223password: vuH0coox6m
Bize binary olarak bir çıktı veriyor. Bu çıktıyı anlamlandırdığımız zaman büyük ihtimalle bize leviathan5 kullanıcısının parolasını verecektir.
Bunun için ufak bir script işimizi çözecektir
bin = "01010100 01101001 01110100 01101000 00110100 01100011 01101111 01101011 01100101 01101001 00001010"
yeni = bin.split()
decimal = ""
for i in yeni:
decimal += str(int(i, 2))
decimal += " "
password = bytes(map(int, decimal.split())).decode()
print("leviathan5 kullanıcısının parolası : ", password)
leviathan5:Tith4cokei
Leviathan: Level 5 Writeup
ssh [email protected] -p 2223password: Tith4cokei
Çalıştırıp bir bakalım bu sefer bizi ne bekliyormuş
Hmm /tmp dizininde bulunan file.log isimli dosyayı okuyormuş. O halde biz okumak istediğimiz /etc/leviathan_pass/leviathan6 dosyasını tmp dizini altında file.log isimli bir dosya ile bağlasak güzel şeyler olur sanırım
leviathan6:UgaoFee4li
Leviathan: Level 6 Writeup
ssh [email protected] -p 2223password: UgaoFee4li
Bizden 4 rakamlı bir parola istiyor. Hızlıca bir bash script yazalım ve brute-force yapalım
#!/bin/bash
for i in {0000..9999}
do
./leviathan6 $i
done
Veya direk terminal üzerinden şunu kullanabilirsiniz…
leviathan6@leviathan:~$ for i in {0000..9999}; do ./leviathan6 $i; done
leviathan7:ahy7MaeBo9
Leviathan: Level 7 Writeup
ssh [email protected] -p 2223password: ahy7MaeBo9
Evet bu seviyede herhangi bir soru yokmuş sadece bizi tebrik etmek için bir dosya koymuşlar. Bir de çözümünü yazıp paylaşmamamızı rica etmişler ama keşke bunu baştan söyleselerdi