Langsung ke konten utama

Unggulan

Mendeteksi Gambar Duplikat dengan Python: Panduan Praktis

Panduan OverTheWire Bandit Level 22 → 23

 

Panduan OverTheWire Bandit Level 22 → 23

Login

Gunakan perintah berikut untuk masuk:

ssh bandit22@bandit.labs.overthewire.org -p 2220

Kata Sandi: Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI


Tugas

Sebuah program dijalankan secara otomatis pada interval yang teratur oleh cron, penjadwal tugas berbasis waktu. Cari di /etc/cron.d/ untuk menemukan konfigurasi dan lihat perintah apa yang sedang dijalankan.


Teori Singkat

Cronjobs adalah program yang dijalankan secara otomatis pada interval tertentu. Di Linux, ada beberapa folder yang dapat berisi cronjobs, seperti cron.d, cron.daily, cron.hourly, cron.monthly, crontab, dan cron.weekly. Folder ini berisi file yang mendefinisikan bagaimana program dijalankan.

Di level ini, kita akan belajar tentang penggunaan variabel dalam skrip bash. Variabel adalah wadah untuk nilai. Untuk mendeklarasikan variabel dalam skrip bash, kita menggunakan sintaksis:

var_name=var_value

Untuk menyimpan hasil dari perintah ke dalam variabel, kita menggunakan sintaksis:

var_name=$(command)

Untuk mengakses nilai variabel yang sudah ada, kita menggunakan:

$var_name

Solusi

Langkah-langkahnya hampir sama dengan level sebelumnya:

  1. Periksa apa yang ada di folder /etc/cron.d untuk menemukan file yang relevan. Jalankan perintah berikut untuk melihat daftar file:

    ls -la /etc/cron.d
    

    Anda akan melihat beberapa file, termasuk cronjob_bandit23.

  2. Tinjau isi file cronjob_bandit23 untuk melihat perintah apa yang dijalankan. Gunakan perintah cat untuk membacanya:

    cat /etc/cron.d/cronjob_bandit23
    

    Isi file ini akan terlihat seperti ini:

    @reboot bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
    * * * * * bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
    

    Artinya, skrip /usr/bin/cronjob_bandit23.sh dijalankan setiap menit, setiap hari, dan juga setiap kali reboot. Output diarahkan ke /dev/null (untuk membuang output).

  3. Lihat isi skrip /usr/bin/cronjob_bandit23.sh untuk mengetahui apa yang dilakukannya:

    cat /usr/bin/cronjob_bandit23.sh
    

    Isi skrip ini adalah:

    #!/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
    

    Pada baris pertama, variabel myname diset dengan hasil dari perintah whoami, yang akan menghasilkan nama pengguna yang menjalankan skrip (yaitu bandit23 di level ini).

    Variabel mytarget menyimpan hasil dari perintah echo I am user $myname | md5sum | cut -d ' ' -f 1, yang menghasilkan hash MD5 dari string "I am user bandit23" dan mengabaikan bagian setelah spasi.

    Skrip kemudian menyalin kata sandi dari file /etc/bandit_pass/bandit23 ke dalam file /tmp/$mytarget, di mana $mytarget adalah nama file yang dihasilkan oleh hash MD5.

  4. Sekarang, Anda dapat menghitung nama file target dengan menjalankan perintah ini:

    echo I am user bandit23 | md5sum | cut -d ' ' -f 1
    

    Output dari perintah ini adalah:

    8ca319486bfbbc3663ea0fbe81326349
    
  5. Setelah itu, baca isi file di /tmp dengan nama yang dihitung sebelumnya untuk mendapatkan kata sandi level berikutnya:

    cat /tmp/8ca319486bfbbc3663ea0fbe81326349
    

    Anda akan mendapatkan kata sandi untuk level berikutnya:

    jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n

Komentar

Postingan Populer