← Back to list

Walkthrough Overthewire Bandit Level 12 — Level 33

Bandit merupakan bagian dari tantangan Over The Wire, Berikut saya akan mencoba menyelesaikan tantangan bandit dari Level 12 hingga Level…

Riyadhlakadimu · 2026-02-27 14:42 · 0 claps · 22.0 min read
#bandit #overthewire-writeup
Open on Medium ↗

Walkthrough Overthewire Bandit Level 12 — Level 33

Bandit merupakan bagian dari tantangan Over The Wire, Berikut saya akan mencoba menyelesaikan tantangan bandit dari Level 12 hingga Level 33. (Level 34 hingga saat ini masih belum ada).

Level 12 — Level 13

Level Goal :

The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work. Use mkdir with a hard to guess directory name. Or better, use the command “mktemp -d”. Then copy the datafile using cp, and rename it using mv (read the manpages!)

Pertama kita masuk dengan akses ssh ke machine bandit12. dengan ssh dan masukan password dari password yang kita dapetin di level sebelumnya

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

berdasarkan petunjuk yang diperikan, sebaiknya kita buat direktori sementara dengan command mktemp -d dan copykan data.txt di direktori itu dan merenamenya sesuai prefrensi (saya merenamenya dengan nama hexa).

kemudian, kita tahu kalau type file ini adalah ASCII, tapi saat kita lihat isinya, ini dalam format hexadecimal, jadi kita akan mekakai hexadump dengan commad xxd untuk melakukan dump pada file hexa dan ouputnya disimpan di compressed.

karena pada petunjuk yang diberikan, kita harus melakukan decompresi secara berulang, sembari melihat tie data pada file yang di decompresi. jadi polanya :

rename sesuai file decompresi → decompresi sesuai format file→ lihat tipe file dengan outputnya → rename sesuai file decompresi.

akukan sampai dapat password ke machine berikutnya.

disini kita melihat kalau tipe dari file compresed ini di compress dengan gzip, jadi kita harus rename ke eksistensi gz dan melakukan decompres. setelah itu kita cek ouputnya, dan kini outputnya adalah bzip2.

Lakukan hal yang sama dengan melakukan rename output tadi ke format bz2. lalu lakukan decompress dengan bzip2. jika kita melihat tipe output filenya, dia kembali menjadi gzip lagi dengan data yang terkompresi dengan gzip. dan kini file sebelumnya yang di compresi adalah data4.bin

lakukan hal yang sama seperti tahap sebelumnya dalam menangani format file gzip. setelah itu kita lihat outputnya, dan diketahui kalau. kini data5bin yang sebelumnya telah dikompresi dengan tar. jadi kita melakukan rename ke format tar, lalu di dekompresi dengan tar lagi, dan kini kita mendapatkan data5.bin

karena ternyata setelah dicek tipe file data5.bin yang merupakan tar file, kita coba decompresi lagi dan didapatkan data6.bin yang dikompress dengan bzip2. jadi kita akan melakukan dekompres pada data6.bin ini

hasilnya adalah data6.bin.out yang di kompres dengan tar dan hasilnya adalah data8.bin

karena ternyata file data8.bin ini dikompres dengan gzip. jadi khusus ini kita harus melakukan rename ke format .gz. lalu melakukan dekompress. dan kini kita mendapatkan password ke machine berikutnya

The password is FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn

Level 13 — Level 14

Level Goal

The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14. For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note: localhost is a hostname that refers to the machine you are working on

Pada tantangan kali ini. untuk mendapatkan akses ke bandit14. kita harus login dengan public key yang diberikan pada tantangan kali ini. simpel saja. kita akan menyimpan key itu di perangkat kita lalu kita pakai buat login ke bandit14

Dan Login pun berhasil……….

Level 14 — Level 15

Level Goal

The password for the next level can be retrieved by submitting the password of the current level to port 30000 on localhost.

Objektif pada tantangan ini adalah menemukan password dari bandit level 14. karena sebelumnya kita login pakai public key, kita jadi gak tahu apa passwordnya, jadi kita harus menemukannya dan mengirimkannya ke port 30000. passwordnya disimpan di path /etc/bandit_pass/bandit14 dan kita bisa langsung menggunakan netcat untuk mengirim password ke port 30000.

bandit14@bandit:~$ cat /etc/bandit_pass/bandit14
MU4VWeTyJk8ROof1qqmcBPaLh7lDCPvS
bandit14@bandit:~$ echo "MU4VWeTyJk8ROof1qqmcBPaLh7lDCPvS" | nc localhost 30000
Correct!
8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo

Level 15 — Level 16

Level Goal

The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL/TLS encryption.

Helpful note: Getting “DONE”, “RENEGOTIATING” or “KEYUPDATE”? Read the “CONNECTED COMMANDS” section in the manpage.

Pada level kali ini. sangat mirip dengan Level 14 — Level 15. yang membedakan adalah. di level ini memanfaatkan koneksi SSL/TLS Ecryption untuk menghubungkan ke Port 30001. caranya sedikit berbeda. karena kita tidak memakai nc tetapi memakai openssl untuk membuat koneksi yang aman dan melakukan verifikasi SSL ke koneksi kita. kemudian kita menggunakan s_client untuk openssl bahwa kita akan bertindak sebagai client.

bandit15@bandit:/etc/bandit_pass$ openssl s_client -connect localhost:30001                                                                                                                  CONNECTED(00000003)                                                                                                                                                                          Can't use SSL_get_servername                                                                                                                                                                 depth=0 CN = SnakeOil                                                                                                                                                                        verify error:num=18:self-signed certificate                                                                                                                                                  verify return:1                                                                                                                                                                              depth=0 CN = SnakeOil                                                                                                                                                                        verify return:1                                                                                                                                                                              ---                                                                                                                                                                                          Certificate chain                                                                                                                                                                             0 s:CN = SnakeOil                                                                                                                                                                              i:CN = SnakeOil                                                                                                                                                                              a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA256                                                                                                                                        v:NotBefore: Jun 10 03:59:50 2024 GMT; NotAfter: Jun  8 03:59:50 2034 GMT                                                                                                                 ---                                                                                                                                                                                          Server certificate                                                                                                                                                                           -----BEGIN CERTIFICATE-----                                                                                                                                                                  MIIFBzCCAu+gAwIBAgIUBLz7DBxA0IfojaL/WaJzE6Sbz7cwDQYJKoZIhvcNAQEL                                                                                                                             BQAwEzERMA8GA1UEAwwIU25ha2VPaWwwHhcNMjQwNjEwMDM1OTUwWhcNMzQwNjA4                                                                                                                             MDM1OTUwWjATMREwDwYDVQQDDAhTbmFrZU9pbDCCAiIwDQYJKoZIhvcNAQEBBQAD                                                                                                                             ggIPADCCAgoCggIBANI+P5QXm9Bj21FIPsQqbqZRb5XmSZZJYaam7EIJ16Fxedf+                                                                                                                             jXAv4d/FVqiEM4BuSNsNMeBMx2Gq0lAfN33h+RMTjRoMb8yBsZsC063MLfXCk4p+                                                                                                                             09gtGP7BS6Iy5XdmfY/fPHvA3JDEScdlDDmd6Lsbdwhv93Q8M6POVO9sv4HuS4t/                                                                                                                             jEjr+NhE+Bjr/wDbyg7GL71BP1WPZpQnRE4OzoSrt5+bZVLvODWUFwinB0fLaGRk                                                                                                                             GmI0r5EUOUd7HpYyoIQbiNlePGfPpHRKnmdXTTEZEoxeWWAaM1VhPGqfrB/Pnca+                                                                                                                             vAJX7iBOb3kHinmfVOScsG/YAUR94wSELeY+UlEWJaELVUntrJ5HeRDiTChiVQ++                                                                                                                             wnnjNbepaW6shopybUF3XXfhIb4NvwLWpvoKFXVtcVjlOujF0snVvpE+MRT0wacy                                                                                                                             tHtjZs7Ao7GYxDz6H8AdBLKJW67uQon37a4MI260ADFMS+2vEAbNSFP+f6ii5mrB                                                                                                                             18cY64ZaF6oU8bjGK7BArDx56bRc3WFyuBIGWAFHEuB948BcshXY7baf5jjzPmgz                                                                                                                             mq1zdRthQB31MOM2ii6vuTkheAvKfFf+llH4M9SnES4NSF2hj9NnHga9V08wfhYc                                                                                                                             x0W6qu+S8HUdVF+V23yTvUNgz4Q+UoGs4sHSDEsIBFqNvInnpUmtNgcR2L5PAgMB                                                                                                                             AAGjUzBRMB0GA1UdDgQWBBTPo8kfze4P9EgxNuyk7+xDGFtAYzAfBgNVHSMEGDAW                                                                                                                             gBTPo8kfze4P9EgxNuyk7+xDGFtAYzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3                                                                                                                             DQEBCwUAA4ICAQAKHomtmcGqyiLnhziLe97Mq2+Sul5QgYVwfx/KYOXxv2T8ZmcR                                                                                                                             Ae9XFhZT4jsAOUDK1OXx9aZgDGJHJLNEVTe9zWv1ONFfNxEBxQgP7hhmDBWdtj6d                                                                                                                             taqEW/Jp06X+08BtnYK9NZsvDg2YRcvOHConeMjwvEL7tQK0m+GVyQfLYg6jnrhx                                                                                                                             egH+abucTKxabFcWSE+Vk0uJYMqcbXvB4WNKz9vj4V5Hn7/DN4xIjFko+nREw6Oa                                                                                                                             /AUFjNnO/FPjap+d68H1LdzMH3PSs+yjGid+6Zx9FCnt9qZydW13Miqg3nDnODXw                                                                                                                             +Z682mQFjVlGPCA5ZOQbyMKY4tNazG2n8qy2famQT3+jF8Lb6a4NGbnpeWnLMkIu                                                                                                                             jWLWIkA9MlbdNXuajiPNVyYIK9gdoBzbfaKwoOfSsLxEqlf8rio1GGcEV5Hlz5S2                                                                                                                             txwI0xdW9MWeGWoiLbZSbRJH4TIBFFtoBG0LoEJi0C+UPwS8CDngJB4TyrZqEld3                                                                                                                             rH87W+Et1t/Nepoc/Eoaux9PFp5VPXP+qwQGmhir/hv7OsgBhrkYuhkjxZ8+1uk7                                                                                                                             tUWC/XM0mpLoxsq6vVl3AJaJe1ivdA9xLytsuG4iv02Juc593HXYR8yOpow0Eq2T                                                                                                                             U5EyeuFg5RXYwAPi7ykw1PW7zAPL4MlonEVz+QXOSx6eyhimp1VZC11SCg==                                                                                                                                 -----END CERTIFICATE-----                                                                                                                                                                    subject=CN = SnakeOil                                                                                                                                                                        issuer=CN = SnakeOil                                                                                                                                                                         ---                                                                                                                                                                                          No client certificate CA names sent                                                                                                                                                          Peer signing digest: SHA256                                                                                                                                                                  Peer signature type: RSA-PSS                                                                                                                                                                 Server Temp Key: X25519, 253 bits                                                                                                                                                            ---                                                                                                                                                                                          SSL handshake has read 2103 bytes and written 373 bytes                                                                                                                                      Verification error: self-signed certificate                                                                                                                                                  ---                                                                                                                                                                                          New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384                                                                                                                                               Server public key is 4096 bit                                                                                                                                                                Secure Renegotiation IS NOT supported                                                                                                                                                        Compression: NONE                                                                                                                                                                            Expansion: NONE                                                                                                                                                                              No ALPN negotiated                                                                                                                                                                           Early data was not sent                                                                                                                                                                      Verify return code: 18 (self-signed certificate)                                                                                                                                             ---                                                                                                                                                                                          ---                                                                                                                                                                                          Post-Handshake New Session Ticket arrived:                                                                                                                                                   SSL-Session:                                                                                                                                                                                     Protocol  : TLSv1.3                                                                                                                                                                          Cipher    : TLS_AES_256_GCM_SHA384                                                                                                                                                           Session-ID: 2A83A4CF826DFD0D3F9F7418DEFDFD54B98D039DC54F88B56993F3B3C605A75A                                                                                                                 Session-ID-ctx:                                                                                                                                                                              Resumption PSK: 6453B29EA652879B6D51CE3B21EDE375FFC3B38343DFBB8CEF9FAEFDEC9E9DE330A4447EC42A226128D6E2795AE01702                                                                             PSK identity: None                                                                                                                                                                           PSK identity hint: None                                                                                                                                                                      SRP username: None                                                                                                                                                                           TLS session ticket lifetime hint: 300 (seconds)                                                                                                                                              TLS session ticket:                                                                                                                                                                          0000 - fa 93 ce 9e 9b db 91 e2-99 9f a3 a9 56 2b ad e3   ............V+..                                                                                                                    0010 - a9 54 13 1c 83 d3 9c 8b-bc ed d5 3a 23 3c 8d 23   .T.........:#<.#                                                                                                                    0020 - 5c 73 59 18 ad a9 f6 d7-d7 ca 23 4a a6 25 cb 24   \sY.......#J.%.$                                                                                                                    0030 - 8c d9 42 c5 b8 f8 7d 42-4c b9 85 8e 01 d2 97 bc   ..B...}BL.......                                                                                                                    0040 - 40 49 18 65 96 e4 97 8d-2f 0b b0 58 92 8d 8f 17   @I.e..../..X....                                                                                                                    0050 - c8 fd 54 db 03 b1 c4 34-cc cf cb 31 01 4b 61 e4   ..T....4...1.Ka.                                                                                                                    0060 - 0d 98 eb e6 28 32 7c 53-e9 c7 56 1e f1 8d 3e 45   ....(2|S..V...>E                                                                                                                    0070 - f1 17 9c 68 a2 b8 08 f3-e8 ba 31 f9 90 9e 80 52   ...h......1....R                                                                                                                    0080 - 02 bd 2e 73 f2 e7 fc a3-01 19 58 d8 76 e1 5d fc   ...s......X.v.].                                                                                                                    0090 - e6 ba 28 c8 9f 60 19 f9-e3 0c 12 7d bd 1f 43 45   ..(..`.....}..CE                                                                                                                    00a0 - 77 64 b2 4d b8 60 99 47-45 46 b4 6e 5e 17 dc 22   wd.M.`.GEF.n^.."                                                                                                                    00b0 - aa 6b ca 87 49 0d 8c 12-f6 e7 04 f3 99 ad 0e d8   .k..I...........                                                                                                                    00c0 - e9 19 2b ea 50 1f 8b c1-7d eb 5a f8 b9 87 a3 c2   ..+.P...}.Z.....                                                                                                                    00d0 - 53 94 f4 46 5b 8a 79 b1-b2 d1 b0 d7 52 a0 05 3d   S..F[.y.....R..=                                                                                                                                                                                                                                                                                                                 Start Time: 1742994436                                                                                                                                                                       Timeout   : 7200 (sec)                                                                                                                                                                       Verify return code: 18 (self-signed certificate)                                                                                                                                             Extended master secret: no                                                                                                                                                                   Max Early Data: 0                                                                                                                                                                        ---                                                                                                                                                                                          read R BLOCK                                                                                                                                                                                 ---                                                                                                                                                                                          Post-Handshake New Session Ticket arrived:                                                                                                                                                   SSL-Session:                                                                                                                                                                                     Protocol  : TLSv1.3                                                                                                                                                                          Cipher    : TLS_AES_256_GCM_SHA384                                                                                                                                                           Session-ID: A4BDEA6C47974BEA527E1E05545E1B53D64B06EE6F04C6E60CAF1F1517FC9289                                                                                                                 Session-ID-ctx:                                                                                                                                                                              Resumption PSK: 828901B525479FDC7054BD229C9AE18BFF030876890EE0BECFB4ED97C8F010F3C187F7953FA53598D1BB05C29D431285                                                                             PSK identity: None                                                                                                                                                                           PSK identity hint: None                                                                                                                                                                      SRP username: None                                                                                                                                                                           TLS session ticket lifetime hint: 300 (seconds)                                                                                                                                              TLS session ticket:                                                                                                                                                                          0000 - fa 93 ce 9e 9b db 91 e2-99 9f a3 a9 56 2b ad e3   ............V+..                                                                                                                    0010 - 54 f2 64 b6 b4 b4 a4 91-92 85 e1 7d b4 f0 11 51   T.d........}...Q                                                                                                                    0020 - 70 a0 17 a1 01 bc 3e ae-f3 b3 d7 2a 1f eb 5b d7   p.....>....*..[.                                                                                                                    0030 - 40 f8 b8 70 5e 7e 26 02-25 92 b8 83 f4 14 b1 a0   @..p^~&.%.......                                                                                                                    0040 - 2c 39 a2 06 9a 71 6e 6a-97 16 68 ea 53 62 d1 d8   ,9...qnj..h.Sb..                                                                                                                    0050 - 88 85 47 08 49 ff 63 b6-89 b9 7f 04 94 6d 4a 37   ..G.I.c......mJ7                                                                                                                    0060 - a9 2c 4c b6 8c 39 01 ba-f1 54 bc 09 a8 63 94 77   .,L..9...T...c.w                                                                                                                    0070 - bb 8b 27 6b 0a c8 f6 76-38 2d f1 bd d7 6e 4d 03   ..'k...v8-...nM.                                                                                                                    0080 - ce 18 ac 63 9e ed 8d 07-53 17 b1 de f5 93 df 02   ...c....S.......                                                                                                                    0090 - 49 d2 7f 5f 55 d9 23 c3-99 62 7e 87 0e db 4b 20   I.._U.#..b~...K                                                                                                                     00a0 - 7c e3 f3 33 c8 e0 38 f8-53 d2 11 e9 e0 9e b6 dc   |..3..8.S.......                                                                                                                    00b0 - c5 f4 d3 46 e0 1d 88 2d-28 89 74 06 c9 2b 30 25   ...F...-(.t..+0%                                                                                                                    00c0 - 9e c7 b1 23 1b c2 79 13-db 20 b8 04 ca e7 c9 3e   ...#..y.. .....>                                                                                                                    00d0 - 5e 21 e7 5c e8 c3 df 8d-88 87 45 d4 ae 52 9f 1d   ^!.\......E..R..                                                                                                                                                                                                                                                                                                                 Start Time: 1742994436                                                                                                                                                                       Timeout   : 7200 (sec)                                                                                                                                                                       Verify return code: 18 (self-signed certificate)                                                                                                                                             Extended master secret: no                                                                                                                                                                   Max Early Data: 0                                                                                                                                                                        ---                                                                                                                                                                                          read R BLOCK                                                                                                                                                                                 8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo                                                                                                                                                             Correct!                                                                                                                                                                                     kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx                                                                                                                                                                                                                                                                                                                                                          closed                            

kemudian masukan password bandit 15 di akhir line. maka hasilnya akan keluar.

- - - 
read R BLOCK 
8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo 
Correct!
kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx                                                                                                                                                                                 8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo                                                                                                                                                             Correct!                                                                                                                                                                                     kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx                                                                                                                                                                                                                                                                                                                                                          closed   

Level 16 — Level 17

Level Goal

The credentials for the next level can be retrieved by submitting the password of the current level to a port on localhost in the range 31000 to 32000. First find out which of these ports have a server listening on them. Then find out which of those speak SSL/TLS and which don’t. There is only 1 server that will give the next credentials, the others will simply send back to you whatever you send to it.

Pada level ini, kita hanya perlu satu port SSL/TLS aktif antara 31000–32000 di localhost yang memberikan kredensial level selanjutnya saat diberi password saat ini.

Untuk melakukannya. pertama kita akan memakai nmap untuk melihat list port yang tersedia antara 31000–32000.

Setelah itu. kita perlu menguji satu-persatu untuk tahu mana yang service ssl. manfaatkan perintah ini untuk mengujinya.

openssl s_client -connect localhost:PORT

Yang bukan target kita akan seperti ini :

Setelah menguji satu persatu, ditemukan kalau port 31970 yang merupakan port ssl. setelah itu. kita perlu ambil rssa keynya, dan pakai itu untuk login di bandit17

echo "kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx" | openssl s_client -quiet -connect localhost:31790

Salin rssa key yang didapat ke local, saya beri nama bandit17.key lalu saya berikan permission baca dan tulis pada file itu

yeay, bandit17 pun di jebol wkwkwkw. (EReVavePLFHtFlFsjn3hyzMlvSuSAcRD)

ssh -i bandit17.key bandit17@bandit.labs.overthewire.org -p 2220

Level 17 — Level18

Level Goal

There are 2 files in the homedirectory: passwords.old and passwords.new. The password for the next level is in passwords.new and is the only line that has been changed between passwords.old and passwords.new

NOTE: if you have solved this level and see ‘Byebye!’ when trying to log into bandit18, this is related to the next level, bandit19.

Ini mudah, kita dikasih file passwords.old dan passwords.new. kurang lebih isinya seperti ini

Karena dari petunjuk, kalau password yang kita cari, ada setelah tanda “>” dari hasil perbandingan 2 file ini. maka pakai saja opsi diff untuk mencari perbedaan pada baris kedua file ini.

diff passwords.old passwords.new | grep '>'

maka akan muncul passwordnya, yeay

x2gLTTjFwMOhQ8oWNbMN362QKxfRqGlO

Level18–19

Level Goal

The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified .bashrc to log you out when you log in with SSH.

Pada bagian ini, akan sedikit tricky, tapi ada petunjuk nih, passwordnya ada di .readme. jadi tinggal jalanin ssh dan cat readme secara barengan dan BOOM. passwordnya kita dapet deh.

cGWpMaKXVwDUNgPAVJbWYuGHVn9zl3j8

Level19-Level20

Level Goal

To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.

Objektifitas kali ini adalah Menggunakan file binary setuid yang ada di direktori home untuk mendapatkan akses ke password level berikutnya.

Sebelumnya akan admin jelaskan apa itu binary setuid, jadi simpelnya, ini adalah suatu kemampuan eksekusi suatu file walau dia tidak punya hak akses, biar gampang, admin kasih contoh, misalkan ada file dengan akses user file seperti ini.

-r-sr-xr-x 1 root root 12345 Jun 20 20:00 secure_reader

Kalau dari hasil command ls -la. kita bisa lihat kalau ada setuid bit ada di posisi user-executable dan ditulis s.

ini umumnya disengaja oleh developer, tapi harus berhati-hati, kalau enggak, nanti bakalan ada kerentanan di privilege escalation. jadi semisal alice, dia gak punya akses ke file dengan akses root, dia tetap bisa mengeksekusi file itu dengan command

./secure_reader

Oke, kita balik lagi ke pemecahan Level ini, simpelnya kita harus memanfaatkan stuid ini untuk mendapatkan password ke mesin berikutnya.

jadi ini memanfaatkan user bandit19, untuk mengakses user bandit20, karena bandit19 masih satu group. jadi kita bisa pakai command s

./bandit20-do cat /etc/bandit_pass/bandit20

0qXahG8ZjOVMN9Ghs7iOWsCfZyXOUbYO

Level 20 → Level 21

Level Goal

There is a setuid binary in the homedirectory that does the following: it makes a connection to localhost on the port you specify as a commandline argument. It then reads a line of text from the connection and compares it to the password in the previous level (bandit20). If the password is correct, it will transmit the password for the next level (bandit21).

NOTE: Try connecting to your own network daemon to see if it works as you think

Secara sederhana, kita harus memanfaatkan setuid binary yang ada di direktori home untuk mendapatkan password level berikutnya. Program ini akan mencoba terhubung ke localhost pada port yang kamu tentukan dan membandingkan password yang diterima dengan password dari level sebelumnya. Jika password yang diterima benar, password untuk bandit21 akan dikirimkan kembali. Triknya di sini, kita akan memaksanya memberikan password bandit21 dengan mengirimkan password bandit20 kita.

Pertama dengan netcat, kita akan buka port 6666 dengan menambahkan password bandit20

Dan ketika dijalankan, dan password untuk bandit20 cocok, maka akan memunculkan password bandit21

EeoULMCra2q0dSkYj561DX7s1CpBuOBt

Level 21 → Level 22

Level Goal

A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.

Kalau ini cluenya adalah password ke mesin bandit22, ada di proses yang dieksekusi dengan cronjob

Karena kita mau password ke mesin bandit22. maka kita lihat prosesnya.

Disini, kita harus melihat apa yang dieksekusinya

Dari sini ada clue, kalau password bandit22, ada di direktori tmp. lalu kita coba lihat.

Passwordnya pun didapat

tRae0UfB9v0UzbCdn9cY0gQnds9GF58Q

Level 22 → Level 23

Level Goal

A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.

NOTE: Looking at shell scripts written by other people is a very useful skill. The script for this level is intentionally made easy to read. If you are having problems understanding what it does, try executing it to see the debug information it prints.

sama seperti yang sebelumnya, kali ini, kita harus mendapatkan password untuk bandit23, yang secara implisit ada di cronjob_bandit23.

kita akan coba jalankan ini secara manual, karena ini di eksekusi di user bandit23, maka whoami adalah bandit23

setelah itu, pakai md5sum untuk melihat isi password dari bandit23

0Zf11ioIjMVN551jX3CmStKLYqjk54Ga

Level 23 → Level 24

Level Goal

A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.

NOTE: This level requires you to create your own first shell-script. This is a very big step and you should be proud of yourself when you beat this level!

NOTE 2: Keep in mind that your shell script is removed once executed, so you may want to keep a copy around…

Jadi, dalam tantangan ini, kita diminta untuk Memanfaatkan cronjob yang berjalan sebagai bandit23, untuk mendapat password bandit24.

Disini, kita bisa lihat, ada beberapa cronjob yang kita miliki, kita akan coba, membuat bandit23, mengambil password bandit24 dengan memanfaatkan cronjob. namun, kita harus menemukan, cronjob dari bandit23 terlebih dahulu. manfaatkan grep untuk menemukannya.

dapat dilihat bahwa path kerjanya ada di /etc/cron.d/cronjob_bandit23. dan kita bisa melihat, kalau jobnya akan menjalankan cronjob_bandit23.sh setiap menit. dan kita dapat melihat kalau cronjob ini sepertinya, bisa dimanfaatkan, jika kita masuk ke direktori yang memungkinkan user bandit24 masuki, maka kita bisa memanfaatkan celahnya.

Direktori yang diproses oleh cronjob milik bandit24 dapat diisi oleh bandit23. Karena file yang dimiliki bandit23 akan dieksekusi tanpa validasi tambahan, maka bandit23 dapat menyisipkan perintah yang dijalankan dalam konteks bandit24, sehingga terjadi privilege escalation.

Setelah dilakukan pengecekan permission, user bandit23 tidak memiliki izin membaca isi direktori /var/spool/bandit24/foo, namun memiliki izin write dan execute. Hal ini memungkinkan bandit23 untuk membuat file di dalam direktori tersebut meskipun tidak dapat melihat isinya.

Cronjob cronjob_bandit24.sh berjalan sebagai user bandit24 dan secara otomatis mengeksekusi semua file di direktori tersebut yang dimiliki oleh bandit23.

Karena bandit23 dapat membuat file dengan owner bandit23 di direktori tersebut, maka file tersebut akan dieksekusi dalam konteks user bandit24 saat cron berjalan.

Dengan demikian, bandit23 dapat menjalankan perintah dengan privilege bandit24 dan membaca file /etc/bandit_pass/bandit24, lalu menyimpannya ke lokasi yang dapat diakses.

Cronjob cronjob_bandit24.sh dijalankan secara otomatis sebagai user bandit24. Script tersebut akan mengeksekusi semua file di direktori /var/spool/bandit24/foo yang dimiliki oleh user bandit23.

Karena user bandit23 memiliki izin untuk membuat file di direktori tersebut, maka kita dapat membuat shell script dengan owner bandit23.

Ketika cron berjalan, script tersebut akan dieksekusi dalam konteks user bandit24, sehingga memungkinkan kita membaca file /etc/bandit_pass/bandit24.

Isi file tersebut kemudian disalin ke lokasi yang dapat diakses oleh bandit23, misalnya /tmp/output.txt.

gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8

Level 24 → Level 25

Level Goal

A daemon is listening on port 30002 and will give you the password for bandit25 if given the password for bandit24 and a secret numeric 4-digit pincode.There is no way to retrieve the pincode except by going through all of the 10000 combinations, called brute-forcing.You do not need to create new connections each time.

Jadi intinya kita akan memasukan 4 angka pin, jika memakai probabilitas, itu 0000–9999, sekita ada 10.000 kombinasi, kita pakai perulangan for, dan seq untuk generate angka pin. password bandit24, perlu dimasukan karena, itu adalah salah satu gerbang verifikasi yang akan dilakukan oleh daemon.

Bash dijalankan, kuncipun didapat

iCi86ttT4KSNe1armKiwbQNmB3YJP3q4

Level 25 → Level 26

Level Goal

Logging in to bandit26 from bandit25 should be fairly easy… The shell for user bandit26 is not /bin/bash, but something else. Find out what it is, how it works and how to break out of it.

NOTE: if you’re a Windows user and typically use Powershell to ssh into bandit: Powershell is known to cause issues with the intended solution to this level. You should use command prompt instead.

Ini aneh, Shell tapi bukan /bin/bash, artinya da custom shell. artinya kalua kita ssh, gak bisa langsung dapat bash. ketika login di bandit25, kita langsung menemukan private key, yang bisa kita pakai untuk login ke bandit26, mari kita coba.

Ketika kita coba login dengan private key yang diberikan, diketahui bahkwa bandit26, tidak meload bash konvensional, akibatnya saya dipaksa keluar.

riyadh@LAPTOP-UN01ROA5:~$ ssh -i bandit26.key bandit26@bandit.labs.overthewire.org -p 2220
                         _                     _ _ _
                        | |__   __ _ _ __   __| (_) |_
                        | '_ \ / _` | '_ \ / _` | | __|
                        | |_) | (_| | | | | (_| | | |_
                        |_.__/ \__,_|_| |_|\__,_|_|\__|

                      This is an OverTheWire game server.
            More information on http://www.overthewire.org/wargames

backend: gibson-0

      ,----..            ,----,          .---.
     /   /   \         ,/   .`|         /. ./|
    /   .     :      ,`   .'  :     .--'.  ' ;
   .   /   ;.  \   ;    ;     /    /__./ \ : |
  .   ;   /  ` ; .'___,/    ,' .--'.  '   \' .
  ;   |  ; \ ; | |    :     | /___/ \ |    ' '
  |   :  | ; | ' ;    |.';  ; ;   \  \;      :
  .   |  ' ' ' : `----'  |  |  \   ;  `      |
  '   ;  \; /  |     '   :  ;   .   \    .\  ;
   \   \  ',  /      |   |  '    \   \   ' \ |
    ;   :    /       '   :  |     :   '  |--"
     \   \ .'        ;   |.'       \   \ ;
  www. `---` ver     '---' he       '---" ire.org

Welcome to OverTheWire!

If you find any problems, please report them to the #wargames channel on
discord or IRC.

--[ Playing the games ]--

  This machine might hold several wargames.
  If you are playing "somegame", then:

    * USERNAMES are somegame0, somegame1, ...
    * Most LEVELS are stored in /somegame/.
    * PASSWORDS for each level are stored in /etc/somegame_pass/.

  Write-access to homedirectories is disabled. It is advised to create a
  working directory with a hard-to-guess name in /tmp/.  You can use the
  command "mktemp -d" in order to generate a random and hard to guess
  directory in /tmp/.  Read-access to both /tmp/ is disabled and to /proc
  restricted so that users cannot snoop on eachother. Files and directories
  with easily guessable or short names will be periodically deleted! The /tmp
  directory is regularly wiped.
  Please play nice:

    * don't leave orphan processes running
    * don't leave exploit-files laying around
    * don't annoy other players
    * don't post passwords or spoilers
    * again, DONT POST SPOILERS!
      This includes writeups of your solution on your blog or website!

--[ Tips ]--

  This machine has a 64bit processor and many security-features enabled
  by default, although ASLR has been switched off.  The following
  compiler flags might be interesting:

    -m32                    compile for 32bit
    -fno-stack-protector    disable ProPolice
    -Wl,-z,norelro          disable relro

  In addition, the execstack tool can be used to flag the stack as
  executable on ELF binaries.

  Finally, network-access is limited for most levels by a local
  firewall.

--[ Tools ]--

 For your convenience we have installed a few useful tools which you can find
 in the following locations:

    * gef (https://github.com/hugsy/gef) in /opt/gef/
    * pwndbg (https://github.com/pwndbg/pwndbg) in /opt/pwndbg/
    * gdbinit (https://github.com/gdbinit/Gdbinit) in /opt/gdbinit/
    * pwntools (https://github.com/Gallopsled/pwntools)
    * radare2 (http://www.radare.org/)

--[ More information ]--

  For more information regarding individual wargames, visit
  http://www.overthewire.org/wargames/

  For support, questions or comments, contact us on discord or IRC.

  Enjoy your stay!

  _                     _ _ _   ___   __
 | |                   | (_) | |__ \ / /
 | |__   __ _ _ __   __| |_| |_   ) / /_
 | '_ \ / _` | '_ \ / _` | | __| / / '_ \
 | |_) | (_| | | | | (_| | | |_ / /| (_) |
 |_.__/ \__,_|_| |_|\__,_|_|\__|____\___/
Connection to bandit.labs.overthewire.org closed.
riyadh@LAPTOP-UN01ROA5:~$

Pada level ini, permasalahannya bukan pada autentikasi atau password, melainkan pada mekanisme shell yang digunakan oleh user bandit26. Jika kita melihat isi file /etc/passwd, kita menemukan bahwa shell untuk bandit26 bukanlah /bin/bash, melainkan /usr/bin/showtext. Artinya, saat kita login melalui SSH sebagai bandit26, sistem tidak menjalankan bash seperti biasanya, tetapi menjalankan program showtext.

Ketika kita membuka isi /usr/bin/showtext, terlihat bahwa script tersebut berisi perintah exec more ~/text.txt. Di sinilah inti masalahnya. Perintah exec memiliki fungsi untuk menggantikan proses shell yang sedang berjalan dengan program yang dipanggil, dalam hal ini more. Jadi, setelah login, proses yang aktif bukanlah shell interaktif seperti bash, melainkan langsung program more. Tidak ada shell cadangan di belakangnya.

Secara normal, alur SSH adalah: Client → SSH connection → Bash. Bash akan tetap berjalan dan menunggu input pengguna, sehingga koneksi tetap terbuka. Namun pada kasus ini, alurnya berubah menjadi: Client → SSH connection → showtext → exec more. Karena exec menggantikan shell sepenuhnya, maka satu-satunya proses yang berjalan hanyalah more.

Masalahnya muncul karena more hanya akan masuk ke mode interaktif (menunggu input pengguna) jika isi file lebih panjang dari tinggi terminal. Jika file text.txt cukup pendek dan seluruh isinya muat dalam satu layar terminal, maka more akan langsung selesai setelah menampilkan isi file. Ketika more selesai, proses login juga selesai, dan karena tidak ada shell lain yang berjalan, koneksi SSH pun otomatis ditutup. Inilah sebabnya kita terlihat “langsung logout”.

Kita tidak memiliki akses untuk mengubah file, script, atau konfigurasi server. Namun, kita masih memiliki kontrol atas ukuran terminal kita sendiri. Dengan memperkecil tinggi terminal, kita dapat memaksa more masuk ke mode paging (karena isi file tidak lagi muat dalam satu layar). Saat more berhenti dan menunggu input, proses tetap hidup dan koneksi SSH tidak langsung tertutup. Di titik inilah celah eksploitasi muncul.

Untuk bisa melihat indikasi pemakaian more. kita perlu mengecilkan ukuran terminal kita, manfaatkan sty, untuk membatasi jumlah colom dan baris yang ditampilkan terminal kita

stty rows 10 cols 40

lalu kita masuk ssh lagi kayak biasanya, kemudian, ketika more mencapai 80%, kita masuk ke vim, lalu tambahkan baris ini :

:set shell=/bin/bash
:shell

tujuan dari skrip itu, untuk set shell ke bash lagi, bukan more text :

Level 26 → Level 27

Disini kita langsung saja ambil password bandit 27. setelah kita ls dan lihat typefile, ada indikasi, ini adalah executable file, denagn user bandit27, namun masih 1 group dengan bandit26. ini adalah celah yang bisa dimanfaatkan untuk mendapatkan password bandit27

Kita enggak tahu isinya, tapi kita bisa manfaatkan aksesnya untuk dapat password bandit27

upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB

Bandit Level 27 → Level 28

There is a git repository at ssh://bandit27-git@bandit.labs.overthewire.org/home/bandit27-git/repo via the port 2220. The password for the user bandit27-git is the same as for the user bandit27.

From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.

Kita akan coba menemukan akses ke bandit28, dengan memanfaatkan Hanya membaca isi readme

Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN

Bandit Level 28 → Level 29

Level Goal

There is a git repository at ssh://bandit28-git@bandit.labs.overthewire.org/home/bandit28-git/repo via the port 2220. The password for the user bandit28-git is the same as for the user bandit28.

From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.

Ini mudah, kita hanya perlu clone, dan membaca isi dari README

Tapi isinya, berupa password yang sudah di sensor, mungkin kita harus periksa riwayat. git

Ada riwayat, jika kredentialnya pernah bocor di id d0cf2ab. kita bisa melihat isinya. dan ternyata morla porla yang membocorkannya.

4pT1t5DENaYuqnqvadYs1oE4QLCdjmJ7

Bandit Level 29→ Level 30

Level Goal

There is a git repository at ssh://bandit29-git@bandit.labs.overthewire.org/home/bandit29-git/repo via the port 2220. The password for the user bandit29-git is the same as for the user bandit29.

From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.

ini sama seperti kasus di level sebelumnya, kita memanfaatkan celah dari git, tapi bedanya, disini, tidak ada kebocoran log di 1 branch,

Tapi kita, coba teliti, dapat dilihat, kalau git ini punya beberapa branch. kita akan coba menemukan celah dari branch lainnya. dapat dilihat kalau ada beberapa branch, branch sploits-dev, memang terlihat mencurigakan, tapi kita coba hipotesa kita di branch dev, biasanya, progammer, menyimpan kode praproduction di dev, sehingga bisa jadi ada kebocoran informasi,

Dan ternyata memang benar, passwordnya memang ada disitu

qp30ex3VLz5MDG1n91YowTv4Q8l7CDZ

Bandit Level 30→ Level 31

There is a git repository at ssh://bandit30-git@bandit.labs.overthewire.org/home/bandit30-git/repo via the port 2220. The password for the user bandit30-git is the same as for the user bandit30.

From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.

Setelah kita cek, dengan metode sebelumnya tampak tidak ada celah, dengan history logs yang hanya ada 1. kemudian branch hanya ada 2 branhc, dan aman

di github, menghapus file atau secret tidak akan benar benar menghilangkannya, karena history tetap mencatatnya. pada umumnya, setiap commit akan dicatat di log, lalu ada juga tag, ini dipakai untuk menandai, suatu perubahan kode yang penting.

Kodepun didapatkan.

fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy

Bandit Level 31→ Level 32

There is a git repository at ssh://bandit31-git@bandit.labs.overthewire.org/home/bandit31-git/repo via the port 2220. The password for the user bandit31-git is the same as for the user bandit31.

From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.

Ada request, push key.txt dengan isi May I come In ? di branch master. tapi klisenya, dia menolak format .txt

Perlu diingat, gitignore, bukan sebuah tembok raksaka yang menghalangi seorang developer bisa push suatu format 100%. dia punya celah, yaitu dengan metode pemaksaan yaitu force.

bisa dilihat, bahwa file di update, dan kuncipun muncul

3O9RfhqyAlVBEZpVb6LYStshZoqoSx5K

Ini jebakan

Saat login via SSH, kita tidak langsung mendapat shell asli, melainkan program wrapper yang memodifikasi input (uppercase). Wrapper ini tetap berjalan di atas shell interpreter. Dengan memanfaatkan variable expansion $0, kita memanggil shell interpreter langsung dan melewati wrapper tersebut.

dan dengan metode itu, password pun didapat

tQdtbs5D5i2vJwkO8mEyYEyTL8izoeJ0

메타데이터
post_id
6fbf8ab8ed66
slug
walkthrough-overthewire-bandit-level-12-level-33-6fbf8ab8ed66
url
https://medium.com/@riyadhlakadimu724/walkthrough-overthewire-bandit-level-12-level-33-6fbf8ab8ed66
canonical_url
https://medium.com/@riyadhlakadimu724/walkthrough-overthewire-bandit-level-12-level-33-6fbf8ab8ed66
author_url
https://medium.com/@riyadhlakadimu724
status
ok
fetched_at
2026-07-16 12:50:01