Pendekatan belajar sambil melakukan untuk perintah find
Jika Anda tahu persis apa yang Anda cari, Anda tidak perlu menelusurinya; Anda hanya perlu menemukannya.
Tutorial ini akan membantu Anda memahami cara menggunakan perintah find secara efektif dalam konteks CTF. Ini ditulis sedemikian rupa sehingga Anda tidak perlu merujuk ke halaman manual untuk menyelesaikannya, meskipun saya merekomendasikan halaman manual untuk bacaan lebih lanjut.
Sintaks perintah dapat dipecah sebagai berikut:
find where what
Pertama, Anda memberi tahu sistem untuk menemukan sesuatu; kedua Anda memberi tahu di mana mencarinya; dan terakhir, Anda memberi tahu apa yang harus dicari. Anda tidak perlu menentukan saat Anda mencari di direktori kerja Anda. Selain itu, Anda juga dapat menggunakan karakter pengganti, dalam menentukan direktori dan nama.
Catatan: Tidak ada VM untuk diterapkan di ruangan ini. Anda hanya perlu memasukkan perintah yang akan digunakan untuk menemukan pertanyaan yang diajukan. Anda juga dapat menguji perintah di terminal Anda sendiri (jika Anda memiliki akses ke sistem Unix atau mirip Unix) untuk memeriksa keluaran dari pencarian dengan opsi yang berbeda. Namun, itu tidak perlu; ini adalah panduan, dan semua yang Anda butuhkan untuk menyelesaikan ruangan ini ada di deskripsi tugas.
Di terminal Anda, jalankan perintah:
touch file-1 file-2
Perintah ini akan membuat dua file, masing-masing bernama file-1 dan file-2, di direktori kerja Anda saat ini.
Sekarang, jalankan:
find file*
Seperti yang Anda lihat, perintah mengeluarkan kedua file Anda.
Kali ini, jalankan:
find * 1
Hanya file-1 yang ada di keluaran.
┌─[cyber@cyber]─[~/find]
└──╼ $touch file-1 file-2
┌─[cyber@cyber]─[~/find]
└──╼ $find file-*
file-1
file-2
┌─[cyber@cyber]─[~/find]
└──╼ $find *1
file-1
┌─[cyber@cyber]─[~/find]
└──╼ $
Sering kali, Anda tidak akan mencari sesuatu di direktori kerja Anda. Argumen pertama dari perintah find Anda adalah direktori yang ingin Anda cari. Perintah akan mencari di direktori itu dan di semua subdirektorinya. Jadi, jika Anda ingin mencari seluruh sistem berkas, perintah Anda harus dimulai dengan find /.
Dua flag yang sangat berguna adalah flag -type dan -name. Dengan -type, Anda dapat menggunakan d untuk hanya mencari direktori, dan f untuk hanya mencari file. Bendera -name digunakan untuk menentukan nama atau pola yang dicari. Anda dapat mengetik seluruh nama, atau menggunakan karakter pengganti untuk menentukan hanya sebagian dari nama. Jika Anda menggunakan karakter pengganti, Anda perlu menyertakan pola Anda dalam tanda kutip, jika tidak, perintah tidak akan berfungsi sebagaimana mestinya. Penting untuk diketahui bahwa Anda juga bisa menggunakan flag -iname; sama dengan -name, tetapi tidak membedakan huruf besar / kecil.
Temukan semua file yang namanya diakhiri dengan ".xml"
find / -type f -name "*.xml
Asnware = find / -type f -name "*.xml
Temukan semua file di direktori / home (rekursif) yang namanya "user.txt" (tidak membedakan huruf besar / kecil)
find /home -type f -iname user.txt
Answare = find /home -type f -iname user.txt
Temukan semua direktori yang namanya mengandung kata "exploits"
find / -type d -name "*expolit"
Answare = find / -type d -name "*exploit"
Dalam beberapa situasi, menentukan nama file saja tidak akan cukup. Anda juga dapat menentukan pemilik, ukuran, izin, dan waktu file terakhir diakses / diubah juga.
Nama pengguna dari pemilik file ditentukan dengan flag -user.
Ukuran file ditentukan dengan flag -size. Saat menggunakan nilai numerik, format -n, +n, dan n dapat digunakan, di mana n adalah angka. -n cocok dengan nilai yang lebih kecil dari n, +n cocok dengan nilai yang lebih besar dari n, dan n cocok dengan nilai persis n. Untuk menentukan ukuran, Anda juga membutuhkan sufiks. c adalah sufiks untuk byte, k untuk KiB, dan M untuk MiB. Jadi, jika Anda ingin menentukan ukuran kurang dari 30 byte, argumen -30c harus digunakan.
Bendera -perm digunakan untuk menentukan izin, baik dalam bentuk oktal (mis. 644) atau dalam bentuk simbolik (mis. u=r). Lihat di sini untuk referensi singkat. Jika Anda menentukan mode izin seperti yang ditunjukkan di atas (mis. 644 atau u=r), maka find hanya akan mengembalikan file dengan izin tersebut dengan tepat. Anda dapat menggunakan -
atau /
untuk membuat pencarian Anda lebih inklusif. Menggunakan -
awalan akan mengembalikan file dengan setidaknya izin yang Anda tentukan; ini berarti mode -444 akan mencocokkan file yang dapat dibaca oleh semua orang, bahkan jika seseorang juga memiliki izin tulis dan /
atau eksekusi. Menggunakan /
prefix akan mengembalikan file yang cocok dengan salah satu izin yang telah Anda setel; ini berarti bahwa mode /666 akan mencocokkan file yang dapat dibaca dan ditulisi oleh setidaknya salah satu grup (pemilik, grup, atau lainnya).
Terakhir, pencarian terkait waktu akan dibahas. Ini lebih kompleks tetapi mungkin terbukti berguna. Bendera terdiri dari kata dan awalan. Kata-katanya adalah min dan time, masing-masing untuk menit dan hari. Awalannya adalah a, m, dan c, dan digunakan untuk menentukan kapan file terakhir diakses, dimodifikasi, atau diubah statusnya. Sedangkan untuk nilai numerik, aturan yang sama dari flag -size berlaku, kecuali tidak ada sufiks. Untuk menggabungkan semuanya: untuk menentukan bahwa file terakhir diakses lebih dari 30 menit yang lalu, opsi -amin +30 digunakan. Untuk menentukan bahwa itu diubah kurang dari 7 hari yang lalu, opsi -mtime -7 digunakan. (Catatan: ketika Anda ingin menentukan bahwa file telah diubah dalam 24 jam terakhir, opsi -mtime 0 digunakan.)
Temukan semua file yang dimiliki oleh user "kittycat"
find / -type f user kittycat
Answare = find / -type f user kittycat
Find all files that are exactly 150 bytes in size
find / -type f -size 150c
Answare = find / -type f -size 150c
Temukan semua file di direktori / home (rekursif) dengan ukuran kurang dari 2 KiB dan ekstensi ".txt"
find / -type f -size -2k -name "*.txt"
Answare = find / -type f -size -2k -name "*.txt"
Temukan semua file yang benar-benar dapat dibaca dan ditulis oleh pemiliknya, dan dapat dibaca oleh orang lain (gunakan format oktal)
find / -type f -perm /666
Answer = find / -type f -perm /666
Temukan semua file yang hanya dapat dibaca oleh siapa saja (gunakan format oktal)
find / -type f -perm /444
Answare = find / -type f -perm /444
Temukan semua file dengan izin menulis untuk grup "orang lain", apa pun izin lainnya, dengan ekstensi ".sh" (gunakan format simbolik)
find / -type f -perm -o=w "*.sh"
Answare = find / -type f -perm -o=w "*.sh"
Temukan semua file di direktori / usr / bin (rekursif) yang dimiliki oleh root dan setidaknya memiliki izin SUID (gunakan format simbolik)
find / -type f -user root -perm -u=s
Answer = find / -type f -user root -perm -u=s
Temukan semua file yang tidak diakses dalam 10 hari terakhir dengan ekstensi ".png"
find / -type f -time +10 -name "*.png"
Answare = find / -type f -time +10 -name "*.png"
Temukan semua file di direktori / usr / bin (rekursif) yang telah diubah dalam 2 jam terakhir
find /usr/bin -type f -mmin +120
Answare = find /usr/bin -type f -mmin +120
Untuk menyimpulkan tutorial ini, ada dua hal lagi yang harus Anda ketahui. Yang pertama adalah Anda dapat menggunakan redirection operator> dengan perintah find. Anda dapat menyimpan hasil pencarian ke file, dan yang lebih penting, Anda dapat menekan keluaran dari setiap kemungkinan kesalahan agar keluaran lebih mudah dibaca. Ini dilakukan dengan menambahkan 2> / dev / null ke perintah Anda. Dengan cara ini, Anda tidak akan melihat hasil apa pun yang tidak boleh Anda akses.
Hal kedua adalah flag -exec. Anda dapat menggunakannya dalam perintah find untuk menjalankan perintah baru, mengikuti tanda -exec, seperti: -exec whoami ;. Kemungkinan yang diaktifkan oleh opsi ini berada di luar cakupan tutorial ini, tetapi terutama dapat digunakan untuk eskalasi hak istimewa.
Anda sekarang lebih siap untuk menemukan apa pun yang Anda cari dalam sistem file.