Yusuf Can Çakır tarafından yazılmıştır.
Merhabalar herkese, bugün sizlere TryHackMe’de bulunan Linux Challenges adlı odanın çözümünü anlatacağım. Bu oda VIP’ler için olduğundan dolayı soruları paylaşmayacağım sadece cevaplar olacaktır. Şimdiden keyifli okumalar.
Burada, oda da anlatılacaklar gösterilmektedir. Alt tarafta makineyi kaldırmamızı istemektedir. Makineyi kaldırdıktan sonra SSH ile bağlanıyoruz ve bizlere kaç tane dosya olduğunu soruyor, 3 tane dosya bulunmaktadır.
Task1
Flag1‘e flag1.txt dosyasını cat ile yazdırdığımızda ulaşabiliriz. Ek olarak bir kullanıcı adı ve şifre elde ettik.
Task2-1
Ufak bir tarama sonrasında Flag2.txt’nin bob isimli klasörün içinde olduğunu öğrendim. Klasörün içerisine girerek, cat komutu yardımıyla flag’i aldım.
Task2-2
Bu flag’i alabilmem için bob kullanıcısına geçiş yapmam gerekti. Bob kullanıcısının bilgilerini flag1.txt dosyasında zaten almıştık. Geçiş yapmak için su bob yazıyorum, ardından da şifreyi giriyorum.
Task2-3
Bob kullanıcısına geçtikten sonra ana dizininde ls -al yazdığımda bütün dosyalar listelendi. Listelendikten sonra sorudan da yola çıkarak .bash_history dosyasını cat yardımıyla ekrana bastırdım ve flag3‘ü de almış oldum.
Task2-3.2
Bu bayrağı alabilmek için crontab isimli komuttan yardım aldım. Soruda bunu kullanmam gerektiğini açıkça belirtiyordu zaten. (Crontab’ın nasıl kullanılacağını merak ederseniz buraya bakabilirsiniz.)
Task2-4.1
Nano ekranı çıkıyor ve içerisinde bizim flag4‘ümüz.
task2-4.2
Burada tek tek aramak yerine grep komutunu kullandım.
grep -rnw "flag5"
Gördüğünüz gibi lib/terminfo/E/flag5.txt dosyası bizi bekliyor.
task2-5
5. flag’de de yaptığım gibi grep komutundan yardım aldım. Flag6’nın olduğu dosyayı bulup cat ile yazdırdım ancak | grep c9 yaptım gördüğünüz gibi. Bunun sebebi soruda ilk iki karakterin c9 ile başladığını söylüyor olmasıdır.
task2-6
Sistemde çalışan process’lere bakmamız gerektiğini söylüyordu soruda. Bu şekilde bütün process’leri listeleyebilirsiniz benim gibi veya ps -aef | grep “flag” şeklinde de yapabilirsiniz.
task2-7.1
task2-7.2
Flag8 bir tar.gz halinde karşımıza çıkıyor. tar.gz’yi çıkarmak için:
tar -xvf flag8.tar.gz
yazıyoruz ve cat komutu yardımıyla flag8’i de alıyoruz.
task2-8
Soruda host dosyalarına bir bak diyordu, host dosyasına bakmak için:
cat /etc/hosts
komutunu kullandım ve flag9’u aldım.
task2-9
Soruda sistemdeki diğer kullanıcıların içerisinide bir yerde flag var demektedir. Diğer kullanıcıların bilgilerine ve flag’e ulaşmak için cat /etc/passwd yazdım ve flag10’u aldım.
task2-10
Flag11’in .bashrc dosyasında olduğunu bizlere soruda veriyor, tek yapmam gereken cat .bashrc yazmaktı.
task3-1.1
task3-1.2
Soruda bizlere flag12’nin MOTD dosyasında olduğunu söylüyor. Açıkçası tam olarak bilmiyordum ve biraz araştırdım. Bu sitede MOTD dosyasının /etc/update-motd.d de olduğunu söylüyor. Klasör içerisinde biraz gezindikten sonra 00-header isimli dosyası buldum ve cat ile içindekileri yazdırdım.
task3-12
Soruda iki adet script dosyası bulunmakta fakat farklılıkları var diyordu. İki farklı dosyanın içerik farkını bulmak için:
grep -v -F -x -f script1 script2
komutunu yazdım ve flag’i aldım.
task3-13
Linux sistemlerde log dosyaların nerede tutulduğunu soruyor. Cevap /var/log. İçerisine girip baktığımda flagtourteen.txt isimi bir .txt dosyası buldum.
task3-14.1
task3-14.2
Soruda sistemle ilgili (çekirdek vb.) bilgilerin tutulduğu yerde flag’in olduğunu söylüyor. Bende /var/log’un içindeki /etc/*release e bakıyorum ve flag15’i alıyorum.
task3-15
Soruda mount bilgisin verdiği için /media ya girdim ve böyle bir manzara ile karşılaştım. Tek tek aşağıya inip flag’i aldım.
task3-16
Bu flag baya kolaydı fakat alice kullanıcısına geçmeyi unutursanız işler karışır ve flag’i bulamazsınız.
task3-17
Bu soru için alice kullanıcısındaki gizli dosyalara baktım ve flag18’e ulaştım.
task3-18
Bizlere flag19 dosyasının 2345. satırına bakmamızı söylüyor ve bunu yapabilmek için head -n 2345 flag19 yazıyorum.
task3-19.1
Ve flag karşımızda.
task3-19.2
Flag20.txt dosyasına baktığımda base64 ile şifrelenmiş bir veri buldum. Bunu da decode etmek için:
echo encode_edilmiş_veri | base64 --decode
yazıyorum ve flag20’yi alıyorum.
task4-20
flag21.php isimli bir flag’in olduğunu ve bizim bulmamızı istiyor. Bunun içinde:
find /* -name flag21.php
yazıyorum ve /home/bob/flag21.php de bulunduğunu öğreniyorum.
task4-21.1
less komutu ile flag21.php içerisindeki yazıları okutuyorum ve flag’i alıyorum.
task4-21.2
task4-21.3
Yeniden alice kullanıcısına geçiyorum ve flag22 dosyasının hex verilerini öğrenmek için xxd komutunu kullanıyorum Flag22 karşımızda.
task4-22
Flag23 dosyasına reverse yapmamı istemektedir. Bunun için ise rev komutunu kullanıyorum ve flag23’ü alıyorum.
task4-23
Flag24’ün nerede olduğunu tam olarak bilmediğim için find komutu yardımıyla bir arama yapıyorum ve flag24 /home/garry’nin içerisinde olduğunu görüyorum.
task4-24.1
Garry klasörüne girip flag24 dosyasının, dosya türüne bakıyorum ve bir UNİX dosyası olduğunu görüyorum. Ardından dosyaya işlem yapabilmek için garry kullanıcısına geçiyorum ve strings komutu ile okunabilir değerlere bakıyorum.
task4-24.2
task4-24.3
Soru sormamış direk butona tıklayarak geçiyoruz.
Aşağıdaki komut ile flag26’yı buldum.
task4-26
Alica kullanıcısna geri geçip /home dizinindeki flag27’yi cat komutu ile ekrana bastırıyoruz.
task4-27
Soruda hangi kernel versiyonunu kullandığımızı soruyor. Bunu öğrenmek için uname -srm komutunu kullanıyorum ve flag28’i alıyorum.
task4-28
Flag29 dosyasını bulmak için yeniden find komutunu kullanıyorum ve garry isimli kullanıcının içerisinde olduğunu görüyorum.
task4-29
Garry kullanıcısına tekrardan geçiyorum ve bütün boşlukları, satırları temizliyorum. En altta flag’imiz çıkıyor.
task4-29.1
curl komutunu kullanmamı söylüyor ve bende kullanıp flag30’u alıyorum.
task5-30
Mysql’e girip database bilgilerini çekmemi istiyor bu yüzden aşağıdaki komutları girip flag’i alıyorum.
mysql -u root -p
show databases;
task5-31
Flag31’deki database’e girip table’ları listeletiyoruz ve içerisindeki flag isimli veriyi yazdırıyoruz
show databases;
use database_ismi;
show tables;
select * from flags;
task5-32
Bu soruda kişisel $PATH’i yazdırmamızı istiyor bu yüzden bob kullanıcısın içine girip (soruda bob’u istiyor.) cat .profile yazıyorum ve flag’i alıyorum.
task5-33
Bob kullanıcısna geri dönmemi ve sistemin hangi değerleri kullandığını öğrenmemizi istiyor. Bunun için ise printevn komutunu kullanıyorum.
task5-34
Sistemdeki bütün gruplara bakmamı istiyor soruda. Bunun için less /etc/group komutunu kullanıp bütün grupları listeliyorum.
task5-35.1
Flag35 bizi aşağıda bekliyor.
task5-35.2
hacker kullanıcısının okuma izni olan dosyayı buluyoruz ve cat komutu ile bunu okutuyoruz.
task5-36
Son flag’i de aldık gördüğünüz gibi. Uzun bir makine olduğu için biraz yorucuydu benim için. Farklı bir writeup konusunda görüşmek dileğimle, hoşçakalın…
[TR] TryHackMe Linux Challenges Writeup
Merhabalar herkese, bugün sizlere TryHackMe’de bulunan Linux Challenges adlı odanın çözümünü anlatacağım. Bu oda VIP’ler için olduğundan dolayı soruları paylaşmayacağım sadece cevaplar olacaktır. Şimdiden keyifli okumalar.
Task 1 Linux Challenges Introduction
Burada, oda da anlatılacaklar gösterilmektedir. Alt tarafta makineyi kaldırmamızı istemektedir. Makineyi kaldırdıktan sonra SSH ile bağlanıyoruz ve bizlere kaç tane dosya olduğunu soruyor, 3 tane dosya bulunmaktadır.
Task1
Task 2 The Basics
Flag – 1
Flag1‘e flag1.txt dosyasını cat ile yazdırdığımızda ulaşabiliriz. Ek olarak bir kullanıcı adı ve şifre elde ettik.
Task2-1
Flag – 2
Ufak bir tarama sonrasında Flag2.txt’nin bob isimli klasörün içinde olduğunu öğrendim. Klasörün içerisine girerek, cat komutu yardımıyla flag’i aldım.
Task2-2
Flag – 3
Bu flag’i alabilmem için bob kullanıcısına geçiş yapmam gerekti. Bob kullanıcısının bilgilerini flag1.txt dosyasında zaten almıştık. Geçiş yapmak için su bob yazıyorum, ardından da şifreyi giriyorum.
Task2-3
Bob kullanıcısına geçtikten sonra ana dizininde ls -al yazdığımda bütün dosyalar listelendi. Listelendikten sonra sorudan da yola çıkarak .bash_history dosyasını cat yardımıyla ekrana bastırdım ve flag3‘ü de almış oldum.
Task2-3.2
Flag – 4
Bu bayrağı alabilmek için crontab isimli komuttan yardım aldım. Soruda bunu kullanmam gerektiğini açıkça belirtiyordu zaten. (Crontab’ın nasıl kullanılacağını merak ederseniz buraya bakabilirsiniz.)
Task2-4.1
Nano ekranı çıkıyor ve içerisinde bizim flag4‘ümüz.
task2-4.2
Flag – 5
Burada tek tek aramak yerine grep komutunu kullandım.
grep -rnw "flag5"
Gördüğünüz gibi lib/terminfo/E/flag5.txt dosyası bizi bekliyor.
task2-5
Flag – 6
5. flag’de de yaptığım gibi grep komutundan yardım aldım. Flag6’nın olduğu dosyayı bulup cat ile yazdırdım ancak | grep c9 yaptım gördüğünüz gibi. Bunun sebebi soruda ilk iki karakterin c9 ile başladığını söylüyor olmasıdır.
task2-6
Flag – 7
Sistemde çalışan process’lere bakmamız gerektiğini söylüyordu soruda. Bu şekilde bütün process’leri listeleyebilirsiniz benim gibi veya ps -aef | grep “flag” şeklinde de yapabilirsiniz.
task2-7.1
task2-7.2
Flag – 8
Flag8 bir tar.gz halinde karşımıza çıkıyor. tar.gz’yi çıkarmak için:
tar -xvf flag8.tar.gz
yazıyoruz ve cat komutu yardımıyla flag8’i de alıyoruz.
task2-8
Flag – 9
Soruda host dosyalarına bir bak diyordu, host dosyasına bakmak için:
cat /etc/hosts
komutunu kullandım ve flag9’u aldım.
task2-9
Flag – 10
Soruda sistemdeki diğer kullanıcıların içerisinide bir yerde flag var demektedir. Diğer kullanıcıların bilgilerine ve flag’e ulaşmak için cat /etc/passwd yazdım ve flag10’u aldım.
task2-10
Task 3 Linux Functionality
Flag – 11
Flag11’in .bashrc dosyasında olduğunu bizlere soruda veriyor, tek yapmam gereken cat .bashrc yazmaktı.
task3-1.1
task3-1.2
Flag – 12
Soruda bizlere flag12’nin MOTD dosyasında olduğunu söylüyor. Açıkçası tam olarak bilmiyordum ve biraz araştırdım. Bu sitede MOTD dosyasının /etc/update-motd.d de olduğunu söylüyor. Klasör içerisinde biraz gezindikten sonra 00-header isimli dosyası buldum ve cat ile içindekileri yazdırdım.
task3-12
Flag – 13
Soruda iki adet script dosyası bulunmakta fakat farklılıkları var diyordu. İki farklı dosyanın içerik farkını bulmak için:
grep -v -F -x -f script1 script2
komutunu yazdım ve flag’i aldım.
task3-13
Flag – 14
Linux sistemlerde log dosyaların nerede tutulduğunu soruyor. Cevap /var/log. İçerisine girip baktığımda flagtourteen.txt isimi bir .txt dosyası buldum.
task3-14.1
task3-14.2
Flag – 15
Soruda sistemle ilgili (çekirdek vb.) bilgilerin tutulduğu yerde flag’in olduğunu söylüyor. Bende /var/log’un içindeki /etc/*release e bakıyorum ve flag15’i alıyorum.
task3-15
Flag – 16
Soruda mount bilgisin verdiği için /media ya girdim ve böyle bir manzara ile karşılaştım. Tek tek aşağıya inip flag’i aldım.
task3-16
Flag – 17
Bu flag baya kolaydı fakat alice kullanıcısına geçmeyi unutursanız işler karışır ve flag’i bulamazsınız.
task3-17
Flag – 18
Bu soru için alice kullanıcısındaki gizli dosyalara baktım ve flag18’e ulaştım.
task3-18
Flag – 19
Bizlere flag19 dosyasının 2345. satırına bakmamızı söylüyor ve bunu yapabilmek için head -n 2345 flag19 yazıyorum.
task3-19.1
Ve flag karşımızda.
task3-19.2
Task 4 Data Representation, Strings and Permissions
Flag – 20
Flag20.txt dosyasına baktığımda base64 ile şifrelenmiş bir veri buldum. Bunu da decode etmek için:
echo encode_edilmiş_veri | base64 --decode
yazıyorum ve flag20’yi alıyorum.
task4-20
Flag – 21
flag21.php isimli bir flag’in olduğunu ve bizim bulmamızı istiyor. Bunun içinde:
find /* -name flag21.php
yazıyorum ve /home/bob/flag21.php de bulunduğunu öğreniyorum.
task4-21.1
less komutu ile flag21.php içerisindeki yazıları okutuyorum ve flag’i alıyorum.
task4-21.2
task4-21.3
Flag – 22
Yeniden alice kullanıcısına geçiyorum ve flag22 dosyasının hex verilerini öğrenmek için xxd komutunu kullanıyorum Flag22 karşımızda.
task4-22
Flag – 23
Flag23 dosyasına reverse yapmamı istemektedir. Bunun için ise rev komutunu kullanıyorum ve flag23’ü alıyorum.
task4-23
Flag – 24
Flag24’ün nerede olduğunu tam olarak bilmediğim için find komutu yardımıyla bir arama yapıyorum ve flag24 /home/garry’nin içerisinde olduğunu görüyorum.
task4-24.1
Garry klasörüne girip flag24 dosyasının, dosya türüne bakıyorum ve bir UNİX dosyası olduğunu görüyorum. Ardından dosyaya işlem yapabilmek için garry kullanıcısına geçiyorum ve strings komutu ile okunabilir değerlere bakıyorum.
task4-24.2
task4-24.3
Flag – 25
Soru sormamış direk butona tıklayarak geçiyoruz.
Flag – 26
Aşağıdaki komut ile flag26’yı buldum.
find / -xdev -type f -print0 2>/dev/null | xargs -0 grep -E '^[a-z0-9]{32}$' 2>/dev/null
task4-26
Flag – 27
Alica kullanıcısna geri geçip /home dizinindeki flag27’yi cat komutu ile ekrana bastırıyoruz.
task4-27
Flag – 28
Soruda hangi kernel versiyonunu kullandığımızı soruyor. Bunu öğrenmek için uname -srm komutunu kullanıyorum ve flag28’i alıyorum.
task4-28
Flag – 29
Flag29 dosyasını bulmak için yeniden find komutunu kullanıyorum ve garry isimli kullanıcının içerisinde olduğunu görüyorum.
task4-29
Garry kullanıcısına tekrardan geçiyorum ve bütün boşlukları, satırları temizliyorum. En altta flag’imiz çıkıyor.
task4-29.1
Task 5 SQL, FTP, Groups and RDP
Flag – 30
curl komutunu kullanmamı söylüyor ve bende kullanıp flag30’u alıyorum.
task5-30
Flag – 31
Mysql’e girip database bilgilerini çekmemi istiyor bu yüzden aşağıdaki komutları girip flag’i alıyorum.
mysql -u root -p
show databases;
task5-31
Flag – 32
Flag31’deki database’e girip table’ları listeletiyoruz ve içerisindeki flag isimli veriyi yazdırıyoruz
show databases;
use database_ismi;
show tables;
select * from flags;
task5-32
Flag – 33
Bu soruda kişisel $PATH’i yazdırmamızı istiyor bu yüzden bob kullanıcısın içine girip (soruda bob’u istiyor.) cat .profile yazıyorum ve flag’i alıyorum.
task5-33
Flag – 34
Bob kullanıcısna geri dönmemi ve sistemin hangi değerleri kullandığını öğrenmemizi istiyor. Bunun için ise printevn komutunu kullanıyorum.
task5-34
Flag – 35
Sistemdeki bütün gruplara bakmamı istiyor soruda. Bunun için less /etc/group komutunu kullanıp bütün grupları listeliyorum.
task5-35.1
Flag35 bizi aşağıda bekliyor.
task5-35.2
Flag – 36
hacker kullanıcısının okuma izni olan dosyayı buluyoruz ve cat komutu ile bunu okutuyoruz.
task5-36
Son flag’i de aldık gördüğünüz gibi. Uzun bir makine olduğu için biraz yorucuydu benim için. Farklı bir writeup konusunda görüşmek dileğimle, hoşçakalın…
Moderatör tarafında düzenlendi: