[Overthewire] – Natas16

Link : http://natas16.natas.labs.overthewire.org/

User : natas16

Password : WaIHEacj63wnNIBROHeqi3p9t0m5nhmh

Diberikan tampilan awal

Nampaknya kita pernah menemukan soal natas yang ini di challenge sebelumnya, mari kita coba berikan input.

Nampaknya benar, web ini digunakan sebagai sebuah dictionary berbasis regex.

Mari kita coba cek source code nya

Tetapi, pada challenge kali ini ada beberapa character yang di ban yaitu /[;|&\'”]/ dan backticks, penulis tidak menambahkan simbol backticks karena alasan formating di blog ini, sehingga kita tidak bisa menggunakan cara yang dulu kita gunakan.

Perlu diperhatikan juga kali ini kutip yang ada pada passthru sudah di escapestring sehingga tidak dapat kita end quotes dan memulai command grep baru seperti teknik di challenge yang lalu.

Pada challenge ini, penulis akan menggunakan teknik yang mirip dengan Natas15, pada Natas15 kita menggunakan teknik blind sqli. Pada challenge ini kita akan menginterogasi website dengan sejumlah pertanyaan. Apakah suatu kata, exists dalam dictionary yang disediakan.

Kita tidak diperbolehkan menggunakan backticks untuk mengexecute command, namun masih ada 1 cara lain yaitu menggunakan $(*command*) , apakah yang dimaksud $() ? Itu merupakan sebuah command substitution. Fungsinya sama dengan  backticks, ia akan mereturn value dari command yang disediakan.

Dapat dibaca referensi command substitution dari sini

https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html

Jadi konsep penyelesaian ini adalah kita akan melakukan grep dari folder etc/natas_webpass/natas17 untuk mendapatkan password untuk natas17

Untuk sekarang, mari kita asumsikan bahwa password dari natas 17 adalah ABCDEFGH

Maka jika kita melakukan get requests dari urlnya seperti ini

Kita mendapatkan 1 result yang kita cari dari dictionary, kita mencari Africans, maka output yang ditampilkan adalah kata Africans yang memang ada di wordlist dictionary.

Namun jika kita mengganti request yang tadi dengan ditambahkan command grep kita dengan contoh

Apa yang dimaksud dengan grep ^A ?

Berarti kita akan melakukan grep dengan regex, mencari yang awalannya A.

Jika kita memiliki sebuah file yang berisi

ABCDEFG

JKLMNOP

QRSTUVW

Maka saat kita lakukan grep ^A dari file tersebut, yang ter output hanya ABCDEFG

Maka yang tadinya kita request dan berhasil yaitu

passthru(“grep -i \”Africans\” dictionary.txt”);

akan menjadi

passthru(“grep -i \”Africans$(grep ^A /etc/natas_webpass/natas17)\” dictionary.txt”);

passthru(“grep -i \”AfricansABCDEFGH\” dictionary.txt”);

Sehingga, web tidak akan menampilkan kata apa-apa karena tidak ada kata AfricansABCDEFGH di wordlist yang disediakan. Dari sini, kita bisa menyimpulkan, bahwa password natas17 memiliki awalan A.

Mari kita buat sebuah script python untuk merepetisisi pertanyaan interogatif ke website tersebut untuk mencari password natas17 sampai lengkap, penulis membuat script seperti

Berhasil !

Password natas17 adalah 8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9cw

 

Leave a Reply

Your email address will not be published. Required fields are marked *