OverTheWire Bandit Çözümleri: Adım Adım Rehber
🇹🇷 OverTheWire Bandit serisinin Türkçe adım adım çözüm rehberi. Linux komut satırı temellerini, gizli dosya bulmayı ve temel siber güvenlik becerilerini bu CTF walkthrough'u ile hızlıca öğrenin.
Video
uzakta…
Walkthrough
Oyun Linki: overthewire.org/wargames/bandit/
Bandit Level 0 -> 1
Verilen bilgilere göre host:
bandit.labs.overthewire.orgport:2220kullanıcı adı:bandit0Parola:bandit0. Bu bilgilere göre/home/bandit0/readmeadresindeki anahtarı bulalım.ssh ile bağlanalım:
ssh bandit0@bandit.labs.overthewire.org -p 2220parolayı bize verdiği gibi
bandit0şeklinde girelim. ssl uyarısına yes diyelim.bağlandıktan sonra cat ile içine bakalım:
cat /home/bandit0/readmeyeni seviyeye geçiş anahtarımız:
NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjLexitile oturumu sonlandıralım. çünküsu banditgibi oturum değiştirmeye izin vermiyor.
Bandit Level 1 -> 2
ssh ile bağlanalım:
ssh bandit1@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjLlsile listeleyince adı-olan bir dosya gördük.cat -komutunu girdiğimizde çalışmayacak. bunun sebebi:
https://stackoverflow.com/questions/42187323/how-to-open-a-dashed-filename-using-terminalcat < -kullanabiliriz.cat ./-kullanabiliriz.
yeni parola:
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
Bandit Level 2 -> 3
ssh ile bağlanalım:
ssh bandit2@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzilsilespaces in this filenameadındaki dosyayı gördük.dosya adında boşluklar olduğu için iki seçeneğimiz var:
kaçış karakterinden faydalanırsak:
cat spaces\ in\ this\ filenamestring olarak işlersek:
cat "spaces in this filename"
yeni parola:
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
Bandit Level 3 -> 4
ssh ile bağlanalım:
ssh bandit3@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiGlsileinhereadında bir dizine ulaştık vechile içine girdik.lsile listelediğimizde bir sonuç çıkmadı. emin olmak içinls -lahile tüm dosyaları gördük..hiddenisimli dosyayı cat ile açarsak:yeni parola:
2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe
Bandit Level 4 -> 5
ssh ile bağlanalım:
ssh bandit4@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
2EW7BBsr6aMMoJ2HjW067dm8EgX26xNelsileinhereadında bir dizine ulaştık vechile içine girdik.lsile birçok dosyanın olduğunu gördük.filekomutuyla dosyalar hakkında bilgi alabiliriz:1 2 3 4 5 6 7 8 9 10 11
bandit4@bandit:~/inhere$ file ./* ./-file00: data ./-file01: data ./-file02: data ./-file03: data ./-file04: data ./-file05: data ./-file06: data ./-file07: ASCII text ./-file08: data ./-file09: data
sadece
-file07dosyasının ASCII text olduğunu gördük. bakmamız gereken bu dosya.cat ./-file07ile dosyayı açarsak:yeni parola:
lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
Bandit Level 5 -> 6
ssh ile bağlanalım:
ssh bandit5@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqRlsileinhereadında bir dizine ulaştık vechile içine girdik.lsile birçok dizinin bulunduğunu gördük.verdiği bilgilere göre ulaşmamız gereken dosya:
- human-readable
- 1033 bytes in size
- not executable
olmalıymış.
dosya boyutuna göre listelemede
dukomutu işe yarar.-aparametresi verirseniz, dosyaları recursive olarak tarar. vermezseniz sadece o dizini tarar.-bparametresi de her dosyanın byte olarak boyutunu verir.grepile çıkan sonucu dosya boyutu olan1033ile filtrelersek:du -a -b | grep 1033aradığımız dosyanın
1033 ./maybehere07/.file2olduğunu görürüz.cat:
cat ./maybehere07/.file2yeni parola:
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
Bandit Level 6 -> 7
ssh ile bağlanalım:
ssh bandit6@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJUlsileinhereadında bir dizine ulaştık vechile içine girdik.verdiği bilgilere göre ulaşmamız gereken dosya:
- owned by user bandit7
- owned by group bandit6
- 33 bytes in size
olmalıymış.
findkomutuyla/araması yapabiliriz. böylece ulaşımımız olan her yerde dosyayı aramış oluruz.-type fparametresi, sadece dosyaları görmemize yardımcı olacak.-user bandit7arametresi, bandit7’ye ait olan dosyaları görmemize yardımcı olacak.-group bandit6arametresi, bandit6 grubuna ait olan dosyaları görmemize yardımcı olacak.-size 33carametresi, 33 byte olan dosyaları görmemize yardımcı olacak.find / -type f -user bandit7 -group bandit6 -size 33cçalıştırdığımızda bir sürü permission denied hatası aldık. hataları görmezden gelmek için:komutu söylenen şekilde düzenleyelim:
find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/nullaradığımız dosya:
/var/lib/dpkg/info/bandit7.passwordcat:
cat /var/lib/dpkg/info/bandit7.passwordyeni parola:
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
Bandit Level 7 -> 8
ssh ile bağlanalım:
ssh bandit7@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99Scat ile
data.txtdosyasını açtığımızda birçok kelime ve parola görünecek.bize
millionthsözcüğünün hemen yanında olduğu bilgisi verilmiş. o zaman grep komutuyla birleştirirsek filtreleyebiliriz:cat data.txt | grep millionthyeni parola:
TESKZC0XvTetK0S9xNwm25STk5iWrBvP
Bandit Level 8 -> 9
ssh ile bağlanalım:
ssh bandit8@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
TESKZC0XvTetK0S9xNwm25STk5iWrBvPcat ile
data.txtdosyasını açtığımızda birçok kelime ve parola görünecek. bizden istediği içerisinde tek sefer geçen sözcüğü bulmamız.sort komutuyla txt içindeki sözcükleri sıralayabiliriz:
sort data.txt. ancak bu haliyle de yakalamamız zor olacak. uniq komutu aynı satırlara süzgeç uygulayabilir.-uparametresine baktığımızda-u, --unique only print unique linesistediğimiz sonuca ulaşabiliriz. bu iki komutu birleştirirsek:sort data.txt | uniq -uyeni parola:
EN632PlfYiZbn3PhVK3XOGSlNInNE00t
Bandit Level 9 -> 10
ssh ile bağlanalım:
ssh bandit9@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
EN632PlfYiZbn3PhVK3XOGSlNInNE00tcat ile
data.txtdosyasını açtığımızda okuyamadığımız bir veriyle karşılaştık.açıklamalara göre aradığımız sözcüğün başında birkaç tane
=varmış. bunun için veriyicatile değil destringsile açmalıyız. çünkü veri,file data.txtile bakarsakdatatüründe. iki tane eşittir işaretiyle filtrelersek:strings data.txt | grep ==yeni parola:
G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
Bandit Level 10 -> 11
ssh ile bağlanalım:
ssh bandit10@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6scat ile dosyayı açarsak:
VGhlIHBhc3N3b3JkIGlzIDZ6UGV6aUxkUjJSS05kTllGTmI2blZDS3pwaGxYSEJNCg==bu bir
base64 encoded text. ister online ister terminalden bunu decode edebiliriz:decode:
cat data.txt | base64 -dya dabase64 -d data.txtyeni parola:
6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
Bandit Level 11 -> 12
ssh ile bağlanalım:
ssh bandit11@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
6zPeziLdR2RKNdNYFNb6nVCKzphlXHBMcat ile dosyayı açarsak:
Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEiROT13 şifrelemesiyle karşı karşıyayız. ister online ister offline decode yapabiliriz:
terminalimize bunun için bir alias ekleyelim:
alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"şimdi yapmamız gereken bunları birleştirmek:
cat data.txt | rot13yeni parola:
JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
Bandit Level 12 -> 13
ssh ile bağlanalım:
ssh bandit12@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRvhexdump bir data.txt dosyası vermiş. /tmp/ dizininde yeni bir dizin oluşturup oraya taşımamızı istemiş.
cd /tmpvemktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.3jUaTPgTT4. isim farklı olabilir.data.txt dosyasını buraya kopyalayalım ve adını data olarak değiştirelim:
cp ~/data.txt datahead dataile içerisine göz atalım:xxd komutuyla
reverse hash dumpyapabiliyoruz. o zamancat data | xxd -r > dumpkomutuyla dump adında bir dosyaya yazalım.file dumpile özelliklerine baktığımızda:gzip compressed data, was "data2.bin"data2.bin adında gzip ile sıkıştırılmış bir dosya olduğunu gördük.adını data.gz yapabiliriz:
mv dump dump.gzsıkıştırılmış dosyayı çıkaralım:
gzip -d dump.gz
file dumpile özelliklerine baktığımızda:bzip2 compressed dataolduğunu gördük. bu, bzip2 ile sıkıştırılmış bir dosya.adını data2.bz yapabiliriz:
mv dump dump.bzsıkıştırılmış dosyayı çıkaralım:
bzip2 -d dump.bz
file dumpile özelliklerine baktığımızda:gzip compressed data, was "data4.bindata4.bin adında gzip ile sıkıştırılmış bir dosya olduğunu gördük.adını data.gz yapabiliriz:
mv dump dump.gzsıkıştırılmış dosyayı çıkaralım:
gzip -d dump.gz
file dumpile özelliklerine baktığımızda:POSIX tar archive (GNU)bir tar arşivi olduğunu gördük.adını data.tar yapabiliriz:
mv dump dump.tarsıkıştırılmış dosyayı çıkaralım ve arşivi silelim:
tar -xf dump.tar && rm dump.tar
file data5.binile özelliklerine baktığımızda:POSIX tar archive (GNU)bir tar arşivi olduğunu gördük.adını data.tar yapabiliriz:
mv data5.bin dump.tarsıkıştırılmış dosyayı çıkaralım ve arşivi silelim:
tar -xf dump.tar && rm dump.tar
file data6.binile özelliklerine baktığımızda:bzip2 compressed datayine bu, bzip2 ile sıkıştırılmış bir dosya.adını data2.bz yapabiliriz:
mv data6.bin dump.bzsıkıştırılmış dosyayı çıkaralım:
bzip2 -d dump.bz
file dumpile özelliklerine baktığımızda:POSIX tar archive (GNU)yine bir tar arşivi olduğunu gördük.adını data.tar yapabiliriz:
mv dump dump.tarsıkıştırılmış dosyayı çıkaralım ve arşivi silelim:
tar -xf dump.tar && rm dump.tar
file data8.binile özelliklerine baktığımızda:gzip compressed data, was "data9.bin"data9.bin adında gzip ile sıkıştırılmış bir dosya olduğunu gördük.adını data.gz yapabiliriz:
mv data8.bin dump.gzsıkıştırılmış dosyayı çıkaralım:
gzip -d dump.gz
file dumpile özelliklerine baktığımızda:ASCII textolduğunu görüyoruz.- cat:
cat dump
- cat:
yeni parola:
wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw
Bandit Level 13 -> 14
ssh ile bağlanalım:
ssh bandit13@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
wbWdlBxEir4CaE8LaPhauuOo6pwRmrDwlsilesshkey.privateadında bir dosya olduğunu gördük. bunu aktarmamız gerekecek:bağlantıyı
logoutveyaexitile kapatalım.dosyayı bu komutla lokale indirelim:
scp -P 2220 bandit13@bandit.labs.overthewire.org:sshkey.private .cat:
cat sshkey.private1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAxkkOE83W2cOT7IWhFc9aPaaQmQDdgzuXCv+ppZHa++buSkN+ gg0tcr7Fw8NLGa5+Uzec2rEg0WmeevB13AIoYp0MZyETq46t+jk9puNwZwIt9XgB ZufGtZEwWbFWw/vVLNwOXBe4UWStGRWzgPpEeSv5Tb1VjLZIBdGphTIK22Amz6Zb ThMsiMnyJafEwJ/T8PQO3myS91vUHEuoOMAzoUID4kN0MEZ3+XahyK0HJVq68KsV ObefXG1vvA3GAJ29kxJaqvRfgYnqZryWN7w3CHjNU4c/2Jkp+n8L0SnxaNA+WYA7 jiPyTF0is8uzMlYQ4l1Lzh/8/MpvhCQF8r22dwIDAQABAoIBAQC6dWBjhyEOzjeA J3j/RWmap9M5zfJ/wb2bfidNpwbB8rsJ4sZIDZQ7XuIh4LfygoAQSS+bBw3RXvzE pvJt3SmU8hIDuLsCjL1VnBY5pY7Bju8g8aR/3FyjyNAqx/TLfzlLYfOu7i9Jet67 xAh0tONG/u8FB5I3LAI2Vp6OviwvdWeC4nOxCthldpuPKNLA8rmMMVRTKQ+7T2VS nXmwYckKUcUgzoVSpiNZaS0zUDypdpy2+tRH3MQa5kqN1YKjvF8RC47woOYCktsD o3FFpGNFec9Taa3Msy+DfQQhHKZFKIL3bJDONtmrVvtYK40/yeU4aZ/HA2DQzwhe ol1AfiEhAoGBAOnVjosBkm7sblK+n4IEwPxs8sOmhPnTDUy5WGrpSCrXOmsVIBUf laL3ZGLx3xCIwtCnEucB9DvN2HZkupc/h6hTKUYLqXuyLD8njTrbRhLgbC9QrKrS M1F2fSTxVqPtZDlDMwjNR04xHA/fKh8bXXyTMqOHNJTHHNhbh3McdURjAoGBANkU 1hqfnw7+aXncJ9bjysr1ZWbqOE5Nd8AFgfwaKuGTTVX2NsUQnCMWdOp+wFak40JH PKWkJNdBG+ex0H9JNQsTK3X5PBMAS8AfX0GrKeuwKWA6erytVTqjOfLYcdp5+z9s 8DtVCxDuVsM+i4X8UqIGOlvGbtKEVokHPFXP1q/dAoGAcHg5YX7WEehCgCYTzpO+ xysX8ScM2qS6xuZ3MqUWAxUWkh7NGZvhe0sGy9iOdANzwKw7mUUFViaCMR/t54W1 GC83sOs3D7n5Mj8x3NdO8xFit7dT9a245TvaoYQ7KgmqpSg/ScKCw4c3eiLava+J 3btnJeSIU+8ZXq9XjPRpKwUCgYA7z6LiOQKxNeXH3qHXcnHok855maUj5fJNpPbY iDkyZ8ySF8GlcFsky8Yw6fWCqfG3zDrohJ5l9JmEsBh7SadkwsZhvecQcS9t4vby 9/8X4jS0P8ibfcKS4nBP+dT81kkkg5Z5MohXBORA7VWx+ACohcDEkprsQ+w32xeD qT1EvQKBgQDKm8ws2ByvSUVs9GjTilCajFqLJ0eVYzRPaY6f++Gv/UVfAPV4c+S0 kAWpXbv5tbkkzbS0eaLPTKgLzavXtQoTtKwrjpolHKIHUz6Wu+n4abfAIRFubOdN /+aLoRQ0yBDRbdXMsZN/jvY44eM+xRLdRVyMmdPtP8belRi2E2aEzA== -----END RSA PRIVATE KEY-----
indirdiğimiz dosya ile ssh’e bağlanalım. bunun için ssh
-iparametresini kullanarak private key belirtebiliriz.ssh bandit14@bandit.labs.overthewire.org -p 2220 -i sshkey.privatekomutunu girdiğimizde parola istiyor.hata mesajı:
Permissions 0640 for 'sshkey.private' are too open.dosyayı sadece bize ait olarak ayarlayalım:
chmod 700 sshkey.privatedosya artık sadece bana ait:
ls -l:
-rwx------ 1 fr0stb1rd fr0stb1rd 1679 May 12 15:05 sshkey.privatetekrar:
ssh bandit14@bandit.labs.overthewire.org -p 2220 -i sshkey.privateve artık
bandit14@banditolarak bağlanabiliyoruz.bandit14 için anahtarı bulalım:
cat /etc/bandit_pass/bandit14yeni parola:
fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq
Bandit Level 14 -> 15
ister
sshkey.privateistersek de yeni edindiğimiz parola ile bağlanabiliriz.key ile:
ssh bandit14@bandit.labs.overthewire.org -p 2220 -i sshkey.privatessh ile:
ssh bandit14@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq
burada istenen şey, 30000 portuna şu anki parolayı girerek yeni parolayı almamız. bakalım 30000 portunda ne varmış?
basit bir nmap taraması yapalım:
nmap localhost:1 2 3 4 5 6 7 8 9 10 11 12 13 14
bandit14@bandit:~$ nmap localhost Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-12 21:41 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00015s latency). Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 1111/tcp open lmsocialserver 1840/tcp open netopia-vo2 4321/tcp open rwhois 8000/tcp open http-alt 30000/tcp open ndmps Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
30000 portunda bir ndmps çalışıyormuş. netcat ile bu seviyenin parolasını gönderelim:
netcat localhost 30000 <<< "fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq"ya da
netcat localhost 30000 < /etc/bandit_pass/bandit14ya da
netcat localhost 30000yazıp parolayı yazabiliriz.
1 2
Correct! jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt
yeni parola:
jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt
Bandit Level 15 -> 16
ssh ile bağlanalım:
ssh bandit15@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
jN2kgmIXJ6fShzhT2avhotn4Zcka6tntOpenSSL, ağ üzerinde güvenli iletişim için bir kütüphanedir. HTTPS’te kullanılan Transport Layer Security (TLS) ve Secure Sockets Layer (SSL) şifreleme protokollerini destekliyor.
SSL/TLS kullanarak bir sunucuya bağlanacağız. bunun için openssl’in içinde olan s_client‘i kullanabiliriz.
tek komut ile:
echo jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt | openssl s_client -ign_eof -connect localhost:30001ya da:
cat /etc/bandit_pass/bandit15 | openssl s_client -ign_eof -connect localhost:30001ya da önce:
openssl s_client -connect localhost:30001ile bağlanıp ardındanjN2kgmIXJ6fShzhT2avhotn4Zcka6tntverisini gönderebiliriz.
yeni parola:
JQttfApK4SeyHwDlI9SXGR50qclOAil1
Bandit Level 16 -> 17
ssh ile bağlanalım:
ssh bandit16@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
JQttfApK4SeyHwDlI9SXGR50qclOAil131000 ve 32000 arasındaki portlardan birinde ssl açık olanları taramamızı istiyor. bunun için nmap taraması yapabiliriz.
-sVparametresini de girerek servis taraması yapalım. bu parametre, her port için ssl olup olmadığını kontrol edecektir. haliyle biraz uzun sürebilir (~5dk).nmap:
nmap -sV localhost -p 31000-320001 2 3 4 5 6 7 8 9 10 11
bandit16@bandit:~$ nmap -sV localhost -p 31000-32000 Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-13 13:09 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00014s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 31046/tcp open echo 31518/tcp open ssl/echo 31691/tcp open echo 31790/tcp open ssl/unknown 31960/tcp open echo
işimize yarayan portlar:
31518ve31790olacak. çünkü ssl servisi olarak görüyoruz.önce 31518 portunu deneyelim:
tek komut ile:
echo JQttfApK4SeyHwDlI9SXGR50qclOAil1 | openssl s_client -ign_eof -connect localhost:31518ya da:
cat /etc/bandit_pass/bandit16 | openssl s_client -ign_eof -connect localhost:31518ya da önce:
openssl s_client -connect localhost:30001ile bağlanıp ardındanJQttfApK4SeyHwDlI9SXGR50qclOAil1verisini gönderebiliriz.
31518portunu denediğimizde aynı parolayı geri döndürdü.1 2 3 4
``` read R BLOCK JQttfApK4SeyHwDlI9SXGR50qclOAil1 ```
şimdi 31790 portunu deneyelim:
tek komut ile:
echo JQttfApK4SeyHwDlI9SXGR50qclOAil1 | openssl s_client -ign_eof -connect localhost:31790ya da:
cat /etc/bandit_pass/bandit16 | openssl s_client -ign_eof -connect localhost:31790ya da önce:
openssl s_client -connect localhost:31790ile bağlanıp ardındanJQttfApK4SeyHwDlI9SXGR50qclOAil1verisini gönderebiliriz.
31790portunu denediğimizde bir rsa private key döndürdü.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
``` -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama +TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT 8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM 77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3 vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY= -----END RSA PRIVATE KEY----- ```
yeni seviyeye bağlanmak için bu anahtarı kullanacağız. bunu
bandit17isminde yeni bir dosyaya kaydedelim:nanoyu açalım- kopyaladığımız rsa private key’i yapıştıralım.
ctrl+xile çıkalımyile kaydedelimbandit17yazarak isimlendirelim.- cat:
cat bandit17yazarak oluşturduğumuz dosyayı kontrol edelim.
Bandit Level 17 -> 18
önceki seviyede edindiğimiz anahtarla bağlanalım:
ssh bandit17@bandit.labs.overthewire.org -p 2220 -i bandit17bir hata mesajı alacağız:
It is required that your private key files are NOT accessible by others.dosyayı sadece bize ait olarak ayarlayalım:
chmod 700 bandit17- dosya artık sadece bana ait:
ls -l:
-rwx------ 1 fr0stb1rd fr0stb1rd 1675 May 13 09:25 bandit17- dosya artık sadece bana ait:
tekrar:
ssh bandit17@bandit.labs.overthewire.org -p 2220 -i bandit17ve artık
bandit17@banditolarak bağlanabiliyoruz.
bandit17 için anahtarı bulalım:
cat /etc/bandit_pass/bandit17bu seviyenin parolası:
VwOSWtCA7lRKkTfbr2IDh6awj9RNZM5eyeni seviyeye geçmek için home dizinindeki
passwords.newvepasswords.olddosyalarında farklı olan satırı bulmamızı istemiş. ve parolanınpasswords.newdosyasında olduğu bilgisini vermiş. bunun içindiffaracını kullanabiliriz.diff:
diff passwords.new passwords.old1 2 3 4
42c42 < hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg --- > p6ggwdNHncnmCNxuAt0KtKVq185ZU7AW
burada diff aracında anlamamız gereken şey, ilk parametre ve ikinci parametrede ne girdiysek, sonuç da sağ ve sol olarak ikiye ayrılır. önce
passwords.newparametresini verdiğim için<olan her satırpasswords.newdosyasında,>olan her satır da ikinci parametrede yanipasswords.olddosyasındadır.o halde aradığım anahtar:
hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg
ayrıca
sortile de bu işlemi yapabiliriz:sort:
sort passwords.old passwords.new | uniq -u1 2
hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg p6ggwdNHncnmCNxuAt0KtKVq185ZU7AW
bu iki satır unique imiş. o zaman
passwords.newdosyasında grep ile filtrelersem hangisinin olduğunu bulabilirim:cat passwords.new | grep p6ggwdNHncnmCNxuAt0KtKVq185ZU7AWbir yanıt döndürmedi demek ki bulamadı.cat passwords.new | grep hga5tuuCLF6fFzUpnagiMN8ssu9LFrdgise buldu. keyi yine bulmuş olduk.
yeni parola:
hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg
Bandit Level 18 -> 19
ssh ile bağlanalım:
ssh bandit18@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
hga5tuuCLF6fFzUpnagiMN8ssu9LFrdghemen server’dan attı:
1 2
Byebye ! Connection to bandit.labs.overthewire.org closed.
bilgilere göre home dizininde readme isimli dosya varmış. bu dosyaya bir bakalım.
ssh ile bağlandıktan sonra bir komut girebilirsiniz. örneğin ls komutu çalıştıralım:
ssh bandit18@bandit.labs.overthewire.org -p 2220 lsve bir
readmedosyası gördük. cat ile içine bakalım.ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme
1 2 3 4 5 6 7 8 9 10 11 12
_ _ _ _ | |__ __ _ _ __ __| (_) |_ | '_ \ / _` | '_ \ / _` | | __| | |_) | (_| | | | | (_| | | |_ |_.__/ \__,_|_| |_|\__,_|_|\__| This is an OverTheWire game server. More information on http://www.overthewire.org/wargames bandit18@bandit.labs.overthewire.org's password: awhqfNnAbc1naukrpqDYcF95h7HoMTrCbu işlemi yeni bir bash spawn ederek yapabiliriz. özellikle art arda komutlar gireceksek bu daha faydalı bir yöntemdir:
ssh bandit18@bandit.labs.overthewire.org -p 2220 /bin/bash
ssh bandit18@bandit.labs.overthewire.org -p 2220 -t /bin/sh
yeni parola:
awhqfNnAbc1naukrpqDYcF95h7HoMTrC
Bandit Level 19 -> 20
ssh ile bağlanalım:
ssh bandit19@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
awhqfNnAbc1naukrpqDYcF95h7HoMTrClisteleyelim:
ls -l-rwsr-x--- 1 bandit20 bandit19 14876 Oct 5 2023 bandit20-dobu durumda dosyanın sahibi bandit20 ve grubu bandit19.
-rwsr-x---bayraklarının anlamı, bandit19 kullanıcısı bu dosyayı çalıştırınca dosya sanki bandit20 çalıştırmış gibi davranabilmesidir. bunun ispatını./bandit20-do idile yapabiliriz:uid=11019(bandit19) gid=11019(bandit19) euid=11020(bandit20) groups=11019(bandit19)euid=11020(bandit20)programın bandit20 adına komutları çalıştıracağının kanıtıdır.bu dosyayı parametresiz olarak çalıştırmamızı istemiş.
./bandit20-do1 2
Run a command as another user. Example: ./bandit20-do id
her seviyenin anahtarına o seviyedeyken ulaşabiliyorduk. o zaman bandit20’nin anahtarına da bu programı doğru kullanarak ulaşabiliriz.
önce /etc/bandit_pass dizinini kontrol edelim:
ls /etc/bandit_pass:1 2 3 4
bandit0 bandit12 bandit16 bandit2 bandit23 bandit27 bandit30 bandit4 bandit8 bandit1 bandit13 bandit17 bandit20 bandit24 bandit28 bandit31 bandit5 bandit9 bandit10 bandit14 bandit18 bandit21 bandit25 bandit29 bandit32 bandit6 bandit11 bandit15 bandit19 bandit22 bandit26 bandit3 bandit33 bandit7
bu program olmadan anahtarı göstermeye çalışalım:
cat /etc/bandit_pass/bandit20
- erişim engellendi.
bize verilen programla deneyelim:
./bandit20-do cat /etc/bandit_pass/bandit20
yeni parola:
VxCazJaVykI6W36BkBU0mJTCM8rR95XT
Bandit Level 20 -> 21
ssh ile bağlanalım:
ssh bandit20@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
VxCazJaVykI6W36BkBU0mJTCM8rR95XTlisteleyelim:
ls -l-rwsr-x--- 1 bandit21 bandit20 15600 Oct 5 2023 suconnectbir server açıp, herhangi bir bağlantı oluşturulduğunda şu anki parolayı göndermemiz isteniyor. böylece şu anki parola uyuşursa yeni parolayı bize
suconnectprogramı verecek.netcat ile bir server oluşturabiliriz. bağlantıda bir string göndermek için:
biraz düzenlersek:
echo -n 'VxCazJaVykI6W36BkBU0mJTCM8rR95XT' | nc -l -p 1234 &- sonuna
&koyduk ki arkaplanda çalışsın. 1234portunu açtık.- echo’da
-nparametresini verdik kinewlinekarakterlerini işlemesin.
- sonuna
şimdi programa açtığımız portu parametre olarak gönderelim:
./suconnect 1234:1 2 3
Read: VxCazJaVykI6W36BkBU0mJTCM8rR95XT Password matches, sending next password NvEJF7oVjkddltPSrdKEFOllh9V1IBcq
yeni parola:
NvEJF7oVjkddltPSrdKEFOllh9V1IBcq
Bandit Level 21 -> 22
ssh ile bağlanalım:
ssh bandit21@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
NvEJF7oVjkddltPSrdKEFOllh9V1IBcq/etc/cron.d/dizinine bakmamızı istemiş. ls:ls -lah /etc/cron.d/-rw-r--r-- 1 root root 120 Oct 5 2023 cronjob_bandit22dosyasına bakalım. cat:cat /etc/cron.d/cronjob_bandit221 2
@reboot bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null * * * * * bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null
bu cron, her dakika çalışıyor, sistemi yeniden başlatıyor ve bandit22 kullanıcısı olarak
/usr/bin/cronjob_bandit22.shdosyasını çalıştırıyor. bunu manipüle edebiliriz. cat:cat /usr/bin/cronjob_bandit22.sh1 2 3
#!/bin/bash chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv cat /etc/bandit_pass/bandit22 > /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
bu shell dosyası çalıştığında,
/tmp/dizinindekit7O6lds9S0RqQh9aMcz6ShpAoZKF7fgvdosyasına 644 bayrağını veriyor ve/etc/bandit_pass/bandit22dosyasından okuduğu değeri/tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgvdosyasına yazıyor. o zaman bu dosyaya göz atarsak sonraki parolamızı bulmuş olacağız. cat:cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgvyeni parola:
WdDozAdTM2z9DiFEQ2mGlwngMfj4EZff
Bandit Level 22 -> 23
ssh ile bağlanalım:
ssh bandit22@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
WdDozAdTM2z9DiFEQ2mGlwngMfj4EZff/etc/cron.d/dizinine bakmamızı istemiş. ls:ls -lah /etc/cron.d/-rw-r--r-- 1 root root 122 Oct 5 2023 cronjob_bandit23dosyasına bakalım. cat:cat /etc/cron.d/cronjob_bandit231 2
@reboot bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null * * * * * bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
bu cron, her dakika çalışıyor, sistemi yeniden başlatıyor ve bandit23 kullanıcısı olarak
/usr/bin/cronjob_bandit23.shdosyasını çalıştırıyor. bunu manipüle edebiliriz. cat:cat /usr/bin/cronjob_bandit23.sh1 2 3 4 5 6 7 8
!/bin/bash myname=$(whoami) mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1) echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget" cat /etc/bandit_pass/$myname > /tmp/$mytarget
kodu incelersek, whoami ile çalışacak değer
bandit23olacaktır. çünkü bu dosyayı çalıştıran kişi crontab’de bandit23 olarak ayarlanmış. o haldemynamedeğeribandit23olacaktır.mytargetdeğerinin ne döndüreceğini terminalden çalıştırarak bulabiliriz:echo I am user bandit23 | md5sum | cut -d ' ' -f 1bu komut,
I am user bandit23tümcesini md5 ile hash’leyip sondaki gereksiz karakterleri kaldırıyor ve echo ile yazıyor.
bu komut
8ca319486bfbbc3663ea0fbe81326349değerini döndürdü. o haldemytargetdeğeri8ca319486bfbbc3663ea0fbe81326349olacaktır.cat /etc/bandit_pass/$myname > /tmp/$mytargetburada ise/etc/bandit_pass/bandit23değerinin/tmp/8ca319486bfbbc3663ea0fbe81326349dosyasına yazıldığını anlıyoruz. o halde cat:cat /tmp/8ca319486bfbbc3663ea0fbe81326349yeni parola:
QYw0Y2aiA672PsMmh9puTQuhoz8SyR2G
Bandit Level 23 -> 24
ssh ile bağlanalım:
ssh bandit23@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
QYw0Y2aiA672PsMmh9puTQuhoz8SyR2G/etc/cron.d/dizinine bakmamızı istemiş. ls:ls -lah /etc/cron.d/-rw-r--r-- 1 root root 120 Oct 5 2023 cronjob_bandit24dosyasına bakalım. cat:cat /etc/cron.d/cronjob_bandit241 2
@reboot bandit24 /usr/bin/cronjob_bandit24.sh &> /dev/null * * * * * bandit24 /usr/bin/cronjob_bandit24.sh &> /dev/null
bu cron, her dakika çalışıyor, sistemi yeniden başlatıyor ve bandit24 kullanıcısı olarak
/usr/bin/cronjob_bandit24.shdosyasını çalıştırıyor. bunu manipüle edebiliriz. cat:cat /usr/bin/cronjob_bandit24.sh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/bin/bash myname=$(whoami) cd /var/spool/$myname/foo echo "Executing and deleting all scripts in /var/spool/$myname/foo:" for i in * .*; do if [ "$i" != "." -a "$i" != ".." ]; then echo "Handling $i" owner="$(stat --format "%U" ./$i)" if [ "${owner}" = "bandit23" ]; then timeout -s 9 60 ./$i fi rm -f ./$i fi done
bu betik her çalıştığında (yani her dakikada bir)
$mynamedeğişkeninebandit24değeri otomatik atandığı için/var/spool/bandit24/foo/dizinindeki tüm dosyaları önce çalıştırıp sonra siliyor:ilk kontrol satırı:
if [ "$i" != "." -a "$i" != ".." ];dizin veya üst dizin söz konusuysa silmiyor.ikinci kontrol satırı:
if [ "${owner}" = "bandit23" ]; thendosyanın sahibibandit23ise siliyor yoksa silmiyor.şu anda bandit23 olduğumuz için bizim yazacağımız scripti silecektir.
o halde bir script yazalım ve bu scripti
/var/spool/bandit24/foo/dizinine taşıyalım. her seviyede o seviyenin kullanıcısının erişimiyle parolayı bulabiliyorduk. o zaman bu konuma yazacağımız script de bandit24 kullanıcısı tarafından çalıştırılacak.öncelikle
/tmp/dizinine gidelim. burada rahatça çalışabiliriz:mktemp -dvecd /tmp/tmp.7eLTwOoNAmdiyerek çalışma dizinimize gidelim.nanotext editörünü açalım. içerisine basit bir script yazacağım. istediğimiz dosya:/etc/bandit_pass/bandit24. o zaman bunu şu anki konuma kopyalayan basit bir script yazıyorum:1 2
#!/bin/bash cp /etc/bandit_pass/bandit24 /tmp/tmp.7eLTwOoNAm/bandit24
çıkış yapıp
virus.shdosya ismiyle kaydediyoruz. siz istediğiniz isimle kaydedebilirsiniz. dosyayı cat ile açıp kontrol etmeyi unutmayın.oluşturduğumuz dizine (
/tmp/tmp.7eLTwOoNAm/bandit24) herkesin ulaşabilmesi, yazabilmesi ve çalıştırabilmesi gerekiyor. bunun içinchmod 777 .yapalım vels -laile tekrar kontrol edelim.virus.sh dosyasına da çalıştırılabilir (executable) bayrağını ekleyelim:
chmod 777 ./virus.shcp ./virus.sh /var/spool/bandit24/foo/virus.shile kopyalayalım ve arada birlskomutunu çalıştıralım ki dosya geldiğinde haberimiz olsun.maksimum 60 saniye sonra
bandit24belirecek. ancak bir sorun var:
dosya izinleriyle beraber kopyalanmış. bunu aşmamız gerekecek.
cp komutuyla dosya izinleri olmadan kopyalamanın yolunu bulmalıyız.
- virus.sh dosyasını şu şekilde düzenlersek:
1 2
#!/bin/bash cp --no-preserve=mode,ownership /etc/bandit_pass/bandit24 /tmp/tmp.7eLTwOoNAm/bandit24
ve bir dakika sonra, cat:
cat bandit24ta daa.parola:
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar
ayrıca cp ile değil de
catile de yapabiliriz.bunun için şu an varolduğumuz dizinde pass24 adında bir dosya oluşturalım:
touch pass24pass24 dosyasına tüm izinleri verelim ki bandit24 kullanıcısı içine yazabilsin:
chmod 777 pass24oluşturduğumuz dizine (
/tmp/tmp.7eLTwOoNAm/bandit24) herkesin ulaşabilmesi, yazabilmesi ve çalıştırabilmesi gerekiyor. bunun içinchmod 777 .yapalım vels -laile tekrar kontrol edelim.virus.sh dosyasının içeriğini şu şekilde değiştirelim:
1 2
#!/bin/bash cat /etc/bandit_pass/bandit24 > /tmp/tmp.7eLTwOoNAm/pass24
bu işlem, cat ile dosyayı açıp okuyacak ve
/tmp/tmp.7eLTwOoNAm/pass24adresindeki oluşturduğumuz dosyanın içine yazacak.cp ./virus.sh /var/spool/bandit24/foo/virus.shile kopyalayalım ve arada birls -lakomutunu çalıştıralım kipass24dosyasının boyutu değiştiğinde haberimiz olsun.ve parolayı ele geçirdik.
yeni parola:
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar
Bandit Level 24 -> 25
ssh ile bağlanalım:
ssh bandit24@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGarbizden istediği 30002 portuna 0000-9999 arasındaki tüm pinleri denememiz. bunu yaparken örnek format şu şekilde olmalıymış:
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 0000VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 0001…
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 9999
tüm olasılıkları denemek için öncelikle bir tanesini deneyip çıktı almayı deneyelim.
mktemp -dile yeni bir çalışma ortamı oluşturalım ve içine girelim:cd /tmp/tmp.qUkib7SF1Nbunun için bir script yazabiliriz:
1 2 3 4 5
#!/bin/bash for i in {0000..9999} do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> possible.txt done
bu script, 0000 ile 9999 arasında dönecek ve
possible.txtdosyasına yazacak.nano ile yazdığımız betiği
write.sholarak kaydedelim.chmod +x write.shile çalıştırma bayrağı ekleyelim.şimdi bu dosyayı netcat kullanarak 30002 portuna gönderebiliriz.
cat possible.txt | nc localhost 30002 > sonuc.txt &sonuc.txt dosyasına netcat return değerini yazacak.
sonuna
&koyduk ki arkaplanda çalışsın.arada bir
ls -lyaparak sonuc.txt dosyasının boyutunu kontrol edebiliriz. dosya boyutu sabit kalıyorsa işlem tamamlanmış demektir.
- bu şekilde gönderince sunucu çökebiliyor. tıpkı fotoğraftaki gibi. bu yüzden işlemi ikiye ayıralım.
işlemi ikiye ayırarak deneyelim.
ilk script 0000-5555 arasını pos1.txt dosyasına yazsın. bunun için nano ile pos1.sh dosyasını hazırlayalım.
1 2 3 4 5
#!/bin/bash for i in {0000..5555} do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> pos1.txt done
ikinci script 5555-9999 arasını pos2.txt dosyasına yazsın. bunun için nano ile pos2.sh dosyasını hazırlayalım.
1 2 3 4 5
#!/bin/bash for i in {5555..9999} do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> pos2.txt done
ikisine de çalıştırma izinleri verelim:
chmod +x pos1.sh && chmod +x pos2.shikisini de çalıştıralım:
./pos1.sh && ./pos2.shbrute-force:
birinci dosyayı netcat ile 30002 portuna brute-force’layalım.
cat pos1.txt | nc localhost 30002 > sonuc.txtikinci dosyayı da gönderelim.
cat pos2.txt | nc localhost 30002 > sonuc.txt
eğer bu adımlarda sunucu çöküyorsa sonra tekrar oynamayı deneyin.
komutların sonuna
&ekleyerek çalıştırırsanız arkaplanda çalışacaktır.örnek:
cat pos2.txt | nc localhost 30002 > sonuc.txt &.böylece ara sıra
ls -lyaparak dosya boyutuna bakabilirsiniz.işlem başladığında
[1] 62842gibi bir yanıt verir. bupidyani process id’dir.bittiğinde de bildirim alırsınız.
örnek:
[1]+ Done cat pos1.txt | nc localhost 30002 > sonuc.txtişlemleri görüntülemek için ara sıra
ps aux‘a da bakabilirsiniz (önemli)
işlem tamamlandığında
sort sonuc.txt | grep -v "Wrong"komutunu uygulayalım.sort sonuc.txt: bu komut, sonuc.txt dosyasındaki içeriği sıralar. sıralama, satırların alfabetik olarak küçükten büyüğe veya büyükten küçüğe sıralanması anlamına gelir. bu durumda, satırlar varsayılan olarak alfabetik olarak sıralanacaktır.grep -v "Wrong": bu komut, grep aracını kullanarak belirli bir metni içermeyen satırları ekrana yazdırır.-vparametresi, belirtilen metni içermeyen satırları seçmek için kullanılır. yani, “Wrong” ifadesini içermeyen tüm satırlar ekrana yazdırılır.bu iki komut pipe (
|) işaretiyle (sort sonuc.txt | grep -v "Wrong") birbirine bağlanmıştır. bu, bir komutun çıktısını diğerine iletmek için kullanılır. yani,sortkomutunun çıktısı grep komutuna girer ve “Wrong” ifadesini içermeyen satırlar ekrana yazdırılır. bu şekilde, işlemler sırayla gerçekleştirilir ve sonuçlar filtrelenir.
- yeni parola:
p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8d
başka bir şekilde de yapabiliriz.
- her döngü arasına 0.1 saniyelik bekleme ekleyelim. bunun için sleep komutunu kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/bin/bash process_lines() { while IFS= read -r line; do while true; do if output=$(echo "$line" | nc -w 2 localhost 30002 2>&1); then echo "$output" >> sonuc.txt break fi done sleep 0.01s done < "possible.txt" } process_lines
bu script:
daha önceden yazdığımız possible.txt dosyasından her satırı tek tek okuyacak
her satırı netcat ile localhost’a 30002 portuna gönderecek
her satır için çalışan netcat dönüşünü (return) sonuc.txt’ye ekleyecek.
#!/bin/bash:bu satır, bash betiğinin yürütülebilir olduğunu belirtir. betiğin bir bash kabuğunda çalıştırılacağını ifade eder.process_lines()bu satır, process_lines adında bir fonksiyon tanımlar. fonksiyonun içindeki komutlar, bu fonksiyon çağrıldığında çalıştırılacaktır.while ifs= read -r line; do:bu satır, possible.txt dosyasındaki her satırı tek tek işlemek için bir döngü başlatır. her satır, line değişkenine atanır.while true; do:sonsuz bir döngü başlatır. her döngü adımında, nc komutunun çalışma durumu kontrol edilecek ve gerekirse tekrar denenecek.output=$(echo "$line" | nc -w 2 localhost 30002 2>&1):bu ifade,echo "$line" | nc -w 2 localhost 30002komutunu çalıştırır ve bu komutun çıktısını output değişkenine atar. burada:echo "$line": line değişkeninin değerini (possible.txt dosyasından okunan her satır) standart çıktıya yazdırır.|: bu, “pipe” operatörüdür ve bir komutun çıktısını başka bir komuta giriş olarak sağlar.nc -w 2 localhost 30002: bu, nc komutunu çalıştırır ve -w 2 seçeneği ile 2 saniyelik bir zaman aşımı belirler. localhost üzerindeki30002numaralı bağlantı noktasına bir ağ bağlantısı kurmaya çalışır.2>&1: bu, standart hata çıktısını (stderr) standart çıktıya (stdout) yönlendirir. bu sayede, herhangi bir hata mesajı da output değişkenine atanır.- yani, bu satır, nc komutunu çalıştırarak bir bağlantı kurar ve output değişkenine bu komutun çıktısını atar. eğer bağlantı kurma işlemi başarılı ise (yani, herhangi bir hata olmadan işlem tamamlanırsa), then bloğu içindeki komutlar çalıştırılır.
echo "$output" >> sonuc.txt:komutun çıktısını sonuc.txt dosyasına ekler.break:iç içe döngülerin içinde bulunduğu döngüden çıkar. yani, while true döngüsünden çıkar ve bir sonraki satıra geçer. diğer yazılım dillerinde gördüğümüz break ile aynı.done:iç içe döngülerin iç döngüsünün sonunu belirtir.sleep 0.01s:her işlem arasında 0.01 saniye bekleme süresi ekler.done < "possible.txt":dış döngünün sonunu belirtir ve possible.txt dosyasındaki satırların sonuna gelindiğini ifade eder.process_lines:tanımlanan process_lines fonksiyonunu çağırır. bu, betiğin çalışmasını başlatır.eğer yine sorun çıkarırsa
sleep 0.01sdeğerini arttırabiliriz.nanoile bu scriptibekleyerek.sholarak kaydedelim.chmod +x bekleyerek.shile çalıştırma yetkilerini verelim./bekleyerek.shile çalıştırıp ~3 dakika bekleyelim.
betiğin daha gelişmiş ve hızlı hali (aynı anda 5 işlem yaptırdığımız için):
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/bin/bash process_lines() { cat "possible.txt" | xargs -P 5 -I {} -n 1 sh -c ' while true; do if output=$(echo "$1" | nc -w 2 localhost 30002 2>&1); then echo "$output" >> hizlisonuc.txt break fi sleep 0.01 done ' sh {} } process_lines
sonunda scriptin tamamlandığını göreceğiz. bütün return değerlerini
sonuc.txtdosyasına yazdı.uyarı: bu, önerdikleri yöntem değil. bu yöntemle, her seferinde tekrar tekrar bağlantı yapmış oluruz.
şimdi bu sonuc.txt dosyasından şifreyi ayıklayalım.
sort sonuc.txt | grep -v "Wrong"komutunu uygulayalım.sort sonuc.txt: bu komut, sonuc.txt dosyasındaki içeriği sıralar. sıralama, satırların alfabetik olarak küçükten büyüğe veya büyükten küçüğe sıralanması anlamına gelir. bu durumda, satırlar varsayılan olarak alfabetik olarak sıralanacaktır.grep -v "Wrong": bu komut, grep aracını kullanarak belirli bir metni içermeyen satırları ekrana yazdırır.-vparametresi, belirtilen metni içermeyen satırları seçmek için kullanılır. yani, “Wrong” ifadesini içermeyen tüm satırlar ekrana yazdırılır.bu iki komut pipe (
|) işaretiyle (sort sonuc.txt | grep -v "Wrong") birbirine bağlanmıştır. bu, bir komutun çıktısını diğerine iletmek için kullanılır. yani,sortkomutunun çıktısı grep komutuna girer ve “Wrong” ifadesini içermeyen satırlar ekrana yazdırılır. bu şekilde, işlemler sırayla gerçekleştirilir ve sonuçlar filtrelenir.
yeni parola:
p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8d
Bandit Level 25 -> 26
ssh ile bağlanalım:
ssh bandit25@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8dlsilebandit26.sshkeyadında bir dosya olduğunu gördük. bunu aktarmamız gerekecek.bağlantıyı
logoutveyaexitile kapatalım.dosyayı bu komutla lokale indirelim:
scp -P 2220 bandit25@bandit.labs.overthewire.org:bandit26.sshkey .cat:
cat bandit26.sshkey1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEApis2AuoooEqeYWamtwX2k5z9uU1Afl2F8VyXQqbv/LTrIwdW pTfaeRHXzr0Y0a5Oe3GB/+W2+PReif+bPZlzTY1XFwpk+DiHk1kmL0moEW8HJuT9 /5XbnpjSzn0eEAfFax2OcopjrzVqdBJQerkj0puv3UXY07AskgkyD5XepwGAlJOG xZsMq1oZqQ0W29aBtfykuGie2bxroRjuAPrYM4o3MMmtlNE5fC4G9Ihq0eq73MDi 1ze6d2jIGce873qxn308BA2qhRPJNEbnPev5gI+5tU+UxebW8KLbk0EhoXB953Ix 3lgOIrT9Y6skRjsMSFmC6WN/O7ovu8QzGqxdywIDAQABAoIBAAaXoETtVT9GtpHW qLaKHgYtLEO1tOFOhInWyolyZgL4inuRRva3CIvVEWK6TcnDyIlNL4MfcerehwGi il4fQFvLR7E6UFcopvhJiSJHIcvPQ9FfNFR3dYcNOQ/IFvE73bEqMwSISPwiel6w e1DjF3C7jHaS1s9PJfWFN982aublL/yLbJP+ou3ifdljS7QzjWZA8NRiMwmBGPIh Yq8weR3jIVQl3ndEYxO7Cr/wXXebZwlP6CPZb67rBy0jg+366mxQbDZIwZYEaUME zY5izFclr/kKj4s7NTRkC76Yx+rTNP5+BX+JT+rgz5aoQq8ghMw43NYwxjXym/MX c8X8g0ECgYEA1crBUAR1gSkM+5mGjjoFLJKrFP+IhUHFh25qGI4Dcxxh1f3M53le wF1rkp5SJnHRFm9IW3gM1JoF0PQxI5aXHRGHphwPeKnsQ/xQBRWCeYpqTme9amJV tD3aDHkpIhYxkNxqol5gDCAt6tdFSxqPaNfdfsfaAOXiKGrQESUjIBcCgYEAxvmI 2ROJsBXaiM4Iyg9hUpjZIn8TW2UlH76pojFG6/KBd1NcnW3fu0ZUU790wAu7QbbU i7pieeqCqSYcZsmkhnOvbdx54A6NNCR2btc+si6pDOe1jdsGdXISDRHFb9QxjZCj 6xzWMNvb5n1yUb9w9nfN1PZzATfUsOV+Fy8CbG0CgYEAifkTLwfhqZyLk2huTSWm pzB0ltWfDpj22MNqVzR3h3d+sHLeJVjPzIe9396rF8KGdNsWsGlWpnJMZKDjgZsz JQBmMc6UMYRARVP1dIKANN4eY0FSHfEebHcqXLho0mXOUTXe37DWfZza5V9Oify3 JquBd8uUptW1Ue41H4t/ErsCgYEArc5FYtF1QXIlfcDz3oUGz16itUZpgzlb71nd 1cbTm8EupCwWR5I1j+IEQU+JTUQyI1nwWcnKwZI+5kBbKNJUu/mLsRyY/UXYxEZh ibrNklm94373kV1US/0DlZUDcQba7jz9Yp/C3dT/RlwoIw5mP3UxQCizFspNKOSe euPeaxUCgYEAntklXwBbokgdDup/u/3ms5Lb/bm22zDOCg2HrlWQCqKEkWkAO6R5 /Wwyqhp/wTl8VXjxWo+W+DmewGdPHGQQ5fFdqgpuQpGUq24YZS8m66v5ANBwd76t IZdtF5HXs2S5CADTwniUS5mX1HO9l5gUkk+h0cH5JnPtsMCnAUM+BRY= -----END RSA PRIVATE KEY-----
indirdiğimiz dosya ile ssh’e bağlanalım. bunun için ssh
-iparametresini kullanarak private key belirtebiliriz.ssh bandit26@bandit.labs.overthewire.org -p 2220 -i bandit26.sshkeyhata mesajı:
Permissions 0640 for 'bandit26.sshkey' are too open.dosyayı sadece bize ait olarak ayarlayalım:
chmod 700 bandit26.sshkeydosya artık sadece bana ait:
ls -l:
-rw------- 1 fr0stb1rd fr0stb1rd 1679 May 16 15:49 bandit26.sshkeytekrar:
ssh bandit26@bandit.labs.overthewire.org -p 2220 -i bandit26.sshkeyyeni bir hata mesajı alıyoruz:
Connection to bandit.labs.overthewire.org closed.karşı sunucu anında bağlantıyı sonlandırıyor. bağlantıdan sonra bir bash spawnlamaya çalışalım. böylece yeni shell’imiz kapanmaz.
her kullanıcının bir varsayılan kabuk (
shell) ayarı vardır. bu özellikle ssh kullanılırken önemlidir, çünkü bu varsayılan kabuk, gösterilecek olan kabuktur. bir kullanıcının varsayılan kabuğunun ne olduğu bilgisi,/etc/passwddosyasındaki kullanıcı satırının sonunda bulunabilir.bandit25olarak yeniden giriş yapıpbandit26kabuğunu öğrenelim.ssh ile bağlanalım:
ssh bandit25@bandit.labs.overthewire.org -p 2220önceki seviyenin parolasını girelim:
p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8dbandit26için olan bash’i bulalım:cat /etc/passwd | grep bandit26bandit26:x:11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtextcat:
cat /usr/bin/showtext1 2 3 4
#!/bin/sh export TERM=linux exec more ~/text.txt exit 0
export TERM=linux: Bu satır, TERM ortam değişkeninin değerini ‘linux’ olarak ayarlar. TERM değişkeni, terminal türünü belirtir ve betiğin düzgün bir şekilde çalışması için bazı durumlarda gereklidir.linux, terminalin Linux türü olduğunu belirtir.more, dosyaları etkileşimli bir modda görüntülemeyi sağlayan bir kabuk komutudur. özellikle, bu etkileşimli mod, dosyanın içeriğinin terminal penceresinde tam olarak görüntülenemeyecek kadar büyük olduğu durumlarda çalışır. bu etkileşimli modda izin verilen bir komutv‘dir. bu komut dosyayıvimadlı düzenleyicide açar.vim bir metin düzenleyicidir. ayrıca kabuk komutlarını çalıştırmanızı sağlar. kısıtlanmış bir ortamdan çıkmak ve bir kabuk oluşturmak için vim’i kullanmak mümkündür. kullanıcının varsayılan kabuğunu oluşturmak için, komut
:shellkullanılır. kabuğu/bin/basholarak değiştirmek için komut:set shell=/bin/sh‘dir.
o zaman terminal penceresini küçülterek işleme devam edelim. böylece
moreişlemine girebiliriz.exitile çıkış yapalım.ssh bandit26@bandit.labs.overthewire.org -p 2220 -i bandit26.sshkeygörüldüğü gibi tüm içerik gösterilmiyor. daha fazla içeriği görmek için kaydırma yapmamızı bekleyen bir more komutumuz var, bu komut çalışmasını tamamladığında ise
exit 0yürütülüyor. yani komutu ortasında durduruyoruz.şimdi etkileşimli mod özelliğini kullanabiliriz. etkileşimli modda
v(görsel mod), belirli metin alanlarını görsel olarak vurgulamanıza (seçmenize) ve onlar üzerinde komut çalıştırmanıza izin verir.vtuşuna basalım ve vim’e girelim. vim’de:set shell=/bin/bashkomutu, harici komutları çalıştırırken vim tarafından kullanılan kabuğu değiştirmek için kullanılır. bu komut, kabuğu genellikle bash kabuğu olan/bin/basholarak ayarlar.:set shell=/bin/bashdiyelim ve bu işlemi gerçekleştirelim.şimdi
:shelldiyerek ayarladığımız bash’i çalıştıralım.ve bandit26 olarak yeni bir shell açtık:
bandit26@bandit:~$artık terminal boyutunu büyütebiliriz.bandit26 için anahtarı bulalım:
cat /etc/bandit_pass/bandit26yeni parola:
c7GvcKlw9mC7aUQaPx7nwFstuAIBw1o1
Bandit Level 26 -> 27
terminal penceremizi küçültelim.
ssh ile bağlanalım:
ssh bandit26@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
c7GvcKlw9mC7aUQaPx7nwFstuAIBw1o1moresözcüğü belirincevdiyelim.:set shell=/bin/bashile terminali ayarlayalım.:shelldiyerek ayarladığımız bash’i çalıştıralım, terminal penceresini artık büyütebiliriz.ls -ldiyerek ne var ne yok diyebakalım.bandit27-doisminde bir dosya var ve suid yetkisine sahip. programını deneyelim.bu, bandit27 kullanıcısı iel komut çalıştırmamızı sağlayacak. o halde parolayı almaya çalışalım.
./bandit27-do cat /etc/bandit_pass/bandit27yeni parola:
YnQpBuifNMas1hcUFk70ZmqkhUU2EuaS
Bandit Level 27 -> 28
ssh ile bağlanalım:
ssh bandit27@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
YnQpBuifNMas1hcUFk70ZmqkhUU2EuaSssh://bandit27-git@localhost/home/bandit27-git/repoadresinde bir git reposu varmış. bunu klonlamamızı istemiş. parola bu seviyenin parolasıyla aynıymış. ayrıca port 2220’da çalışıyormuş.mktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.pHaDrLfaAc. isim farklı olabilir. bu dizine gidelim. cd:cd /tmp/tmp.pHaDrLfaAcgit clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repoyeni parola:
AVanL161y9rsbcJIsFHuw35rjaOM19nR
Bandit Level 28 -> 29
ssh ile bağlanalım:
ssh bandit28@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
AVanL161y9rsbcJIsFHuw35rjaOM19nRssh://bandit28-git@localhost/home/bandit28-git/repoadresinde bir git reposu varmış, 2220 portundaymış, parola da şu anki seviyenin parolasıymış.mktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.bU7UdKcIu4. isim farklı olabilir. bu dizine gidelim. cd:cd /tmp/tmp.bU7UdKcIu4git clone ssh://bandit28-git@localhost:2220/home/bandit28-git/repoiçeride bir readme dosyası var ancak parola sansürlenmiş. git geçmişini kontrol edelim:
git logfix info leakcommitinden de anlayabileceğimiz gibi, son commit’te parolayı xxx olarak değiştirmiş olma ihtimalleri yüksek. önceki commiti görüntüleyelim:git show f08b9cc63fa1a4602fb065257633c2dae6e5651bile baktığımızda daha önceki commit’te parolayı readme dosyasına yazmış. son sürümde ise xxx olarak değiştirmiş. tam tahmin ettiğimiz gibi.bu işlemi git checkout ile de yapabiliriz.
git checkout f08b9cc63fa1a4602fb065257633c2dae6e5651b
yeni parola:
tQKvmcwNYcFS6vmPHIUSI3ShmsrQZK8S
Bandit Level 29 -> 30
ssh ile bağlanalım:
ssh bandit29@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
tQKvmcwNYcFS6vmPHIUSI3ShmsrQZK8Sssh://bandit29-git@localhost/home/bandit29-git/repoadresinde bir git reposu varmış, 2220 portundaymış, parola da şu anki seviyenin parolasıymış.mktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.NMXrq4miBS. isim farklı olabilir. bu dizine gidelim. cd:cd /tmp/tmp.NMXrq4miBSgit clone ssh://bandit29-git@localhost:2220/home/bandit29-git/repo‘No passwords in production!’ cümlesi, başka dallar (branches) olabileceği izlenimini veriyor. bu yüzden kontrol edelim:
git branch -atüm branşları sıra sıra kontrol edelim:
git checkout devlsile listeleyipcat README.mddersek:yeni parola:
xbhV3HpNGlTIdnjUrdAlPzc2L6y9EOnS
Bandit Level 30 -> 31
ssh ile bağlanalım:
ssh bandit30@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
xbhV3HpNGlTIdnjUrdAlPzc2L6y9EOnSssh://bandit30-git@localhost/home/bandit30-git/repoadresinde bir git reposu varmış, 2220 portundaymış, parola da şu anki seviyenin parolasıymış.mktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.qw27gRj8KF. isim farklı olabilir. bu dizine gidelim. cd:cd /tmp/tmp.qw27gRj8KFgit clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repocd repoile içine giriplsdedik ve listeledik.cat README.mdile içine bakınca bizime dalga geçti:just an epmty file... muahahadedi. başka branşları kontrol edelim:git branch -a1 2 3 4 5
bandit30@bandit:/tmp/tmp.qw27gRj8KF/repo$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master bandit30@bandit:/tmp/tmp.qw27gRj8KF/repo$
başka branş yok, log yok, hiçbir şey yok. bir de tag’e bakalım. git tag’ini kontrol ettiğimizde,
secretadlı tarihte bir nokta buluyoruz.git show secretdersek:yeni parola:
OoffzGDlzhAlerFJ2cAiz1D41JW1Mhmt
Bandit Level 31 -> 32
ssh ile bağlanalım:
ssh bandit31@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
OoffzGDlzhAlerFJ2cAiz1D41JW1Mhmtssh://bandit31-git@localhost/home/bandit31-git/repoadresinde bir git reposu varmış, 2220 portundaymış, parola da şu anki seviyenin parolasıymış.mktemp -dile yeni bir temp dizin oluşturalım. benim dizinim burası:/tmp/tmp.IU9AtQ0u0I. isim farklı olabilir. bu dizine gidelim. cd:cd /tmp/tmp.IU9AtQ0u0Igit clone ssh://bandit31-git@localhost:2220/home/bandit31-git/repoklonlama bitince
repodizinindeki readme dosyasında şöyle yazıyor:1 2 3 4 5 6
This time your task is to push a file to the remote repository. Details: File name: key.txt Content: 'May I come in?' Branch: masterdediklerini yapmak için,
bir
txtdosyası oluşturacağız ve adıkey.txtolacak.içine
May I come in?yazacağızmasterbranşınapush‘layacağız.
o halde yapalım:
echo -n 'May I come in?' > key.txtgit add key.txtdediğimizde ya.gitignoredosyasında txt dosyaları için olan engeli kaldıracağız ya da-fparametresi ileforceolarak push edeceğiz.git add key.txt -fdiyerek zorla ekledik.git commit -m 'ekleme'ile dosyayı ekledik.git pushile master branşına push etmeye çalıştık.- bu komutu
git push origin masterolarak kullanmak daha medenicedir ama bu şekilde kullanırsanız da kimse sizi bıçaklamaz (opsiyonel)
- bu komutu
yeni parola:
rmCBvG56y58BXzv98yZGdO7ATVL5dW8y
Bandit Level 32 -> 33
ssh ile bağlanalım:
ssh bandit32@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
rmCBvG56y58BXzv98yZGdO7ATVL5dW8y
ls dediğimizde LS şeklinde büyük karakterlerle çalıştıran bir shell’e denk geldik.
linux’ta, yerel değişkenler, kabuk değişkenleri ve ortam değişkenleri olmak üzere değişkenler bulunur. bu değişkenlerin adları yalnızca büyük harflerle yazılır. Komut satırında
VAR_NAME=var_valueyazarak tanımlanırlar. bir değişkenin içeriğini görmek içinecho $VAR_NAMEyazabilirsiniz. tüm ortam değişkenlerini yazdırmak için printenv kullanabilirsiniz. bilmekte fayda olan bazı yaygın değişkenler şunlardır:TERM: geçerli terminal emülasyonuHOME: geçerli kullanıcıya ait ev dizininin yoluLANG: geçerli yerel ayarlarıPATH: komutların çalıştırılacağı dizinlerin listesiPWD: geçerli çalışma dizininin yoluSHELL: geçerli kullanıcının kabuğunun yoluUSER: geçerli oturum açmış kullanıcı
linux’ta büyük harfle yazılan şeyler değişkenlerdir. özellikle, $0 değişkeni bir kabuğa referans içerir. bunu kendi makinenizde echo $0 yazarak görebilirsiniz. bu sayede büyük harf kabuğundan çıkabilir ve komutları tekrar kullanabiliriz.
örneğin:
./betik.sh arg1 arg2 arg3şeklinde bir komut girip çalıştırırsak:$0:./betik.sh$1:.arg1$2:arg2$3:arg3olacaktır. o halde bizim senaryomuzda şu anda$0, shell’e yani birshkomutuna referanstır.
sh uppercase.shdiye çalıştırıldığını düşünürsek:1 2 3
- `$0`: `sh` - `$1`: `uppercase.sh`
$0yazıp denersek, artık normal bir shell’e sahibiz.1 2 3 4 5 6 7 8 9
>> $0 $ ls -la total 36 drwxr-xr-x 2 root root 4096 Oct 5 2023 . drwxr-xr-x 70 root root 4096 Oct 5 2023 .. -rw-r--r-- 1 root root 220 Jan 6 2022 .bash_logout -rw-r--r-- 1 root root 3771 Jan 6 2022 .bashrc -rw-r--r-- 1 root root 807 Jan 6 2022 .profile -rwsr-x--- 1 bandit33 bandit32 15128 Oct 5 2023 uppershell
burada göreceğimiz gibi:
-rwsr-x--- 1 bandit33 bandit32 15128 Oct 5 2023 uppershell- uppershell dosyası bandit33 ayrıcalıkları ile çalışıyor. yani şu anda içinde bulunduğumuz shell, bandit33 kullanıcısı yetkilerine sahip. bunu kanıtlamak için
whoamiveyaidkullanalım.
- uppershell dosyası bandit33 ayrıcalıkları ile çalışıyor. yani şu anda içinde bulunduğumuz shell, bandit33 kullanıcısı yetkilerine sahip. bunu kanıtlamak için
bandit33 için anahtarı bulalım:
cat /etc/bandit_pass/bandit33yeni parola:
odHo63fHiFqcWWJG9rLiLDtPm45KzUKy
Bandit Level 33 -> 34
ssh ile bağlanalım:
ssh bandit33@bandit.labs.overthewire.org -p 2220önceki seviyede bulduğumuz parolayı girelim:
odHo63fHiFqcWWJG9rLiLDtPm45KzUKy1 2 3 4 5 6 7 8 9 10 11 12
bandit33@bandit:~$ ls -l total 4 -rw------- 1 bandit33 bandit33 430 Oct 5 2023 README.txt bandit33@bandit:~$ cat README.txt Congratulations on solving the last level of this game! At this moment, there are no more levels to play in this game. However, we are constantly working on new levels and will most likely expand this game with more levels soon. Keep an eye out for an announcement on our usual communication channels! In the meantime, you could play some of our other wargames. If you have an idea for an awesome new level, please let us know!
ve oyunu bitirdik.
Notlar
her oyun arası
exitveyalogoutile oturumu sonlandırdık. çünküsu banditgibi oturum değiştirmeye izin vermiyor.terminalden kopyalama işlemini metni seçtikten sonra
ctrl+shift+cile, terminale yapıştırma işleminictrl+shift+vile yapabilirsiniz.bu makale, linux temellerini gerçekten pratik yaparak deneyimlemenizi sağlayacak. kafanızda bundan önce
ls ile cd'yi öğrendim ben artık linux biliyorumdüşüncesi varsa bunu silmeye yarayacak.you know nothing Jon Snowseviyeleri bitirdikten sonra, gidip video çekin, not alın, gidip siz de makale şeklinde yazın. benden daha da güzelini yapın. daha da açıklayıcı olun. bunları yapmayacaksanız gidin kafanızı çöp kutusuna sokun daha iyi.
yeni yazıda ya da projede görüşmek dileğiyle, esenlikler…

































