Pada artikel ini, kita mengingat sintaks assembler ARM, menangani kerentanan shellshock, dan juga menyelesaikan tugas 8 dan 10 dari situs
pwnable.kr .
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.
Solusi pencarian kaki
Kami mengklik ikon pertama dengan kaki tanda tangan, dan kami diberitahu bahwa kami perlu terhubung melalui SSH dengan tamu kata sandi. Mereka juga menyediakan kode sumber dalam C dan assembler.

Mari kita unduh kedua file dan mengurutkan kode sumber dalam C. Dengan insert assembler kita dapat mengatakan bahwa itu menggunakan sintaks ARM. Tentang assembler ARM di HabrΓ© menulis di
sini dan di
sini .

Dalam fungsi utama (), angka diterima dari pengguna dan dibandingkan dengan jumlah hasil dari fungsi tiga kunci (). Mari kita mengurutkannya.

Dengan demikian, nilai dari register PC ditempatkan di register R3. Di assembler ARM, register PC berisi alamat instruksi berikutnya yang akan dieksekusi. Kami melihat kode yang dibongkar.

Dengan demikian, fungsi key1 () akan mengembalikan nilai 0x8ce4. Mari kita menganalisis fungsi key2 ().

0x8d08 ditempatkan di R3, yang kemudian bertambah 4 dan ditulis ke register R0. Artinya, key2 () akan mengembalikan 0x8d0c. Pertimbangkan key3 ().

Dengan analogi dengan fungsi pertama, kami menyimpulkan bahwa key3 () akan mengembalikan nilai dari register LR. LR berisi alamat pengirim fungsi. Mari kita lihat di mana fungsi dipanggil dan ambil alamat berikut.

Fungsi key3 () akan mengembalikan 0x8d80. Hubungkan melalui SSH dan masukkan jumlah dari tiga angka yang ditemukan dalam program.


Kami menyerahkan bendera dan mendapatkan dua poin.

Shellshock alias Bashdoor
Shellshock (Bashdoor) adalah kerentanan perangkat lunak yang ditemukan dalam program GNU Bash yang memungkinkan perintah sewenang-wenang dieksekusi setelah menerima beberapa nilai variabel lingkungan yang tidak standar. Kerentanan telah menerima nomor CVE-2014-6271.
Pada sistem operasi mirip Unix, setiap program memiliki variabel lingkungan. Proses anak mewarisi dari orangtua daftar variabel lingkungan. Selain variabel lingkungan, bash juga memelihara daftar fungsi internal - skrip bernama yang dapat dipanggil dari skrip yang dapat dieksekusi. Saat menjalankan skrip dari skrip lain (induk), dimungkinkan untuk mengekspor nilai variabel lingkungan yang ada dan definisi fungsi. Definisi fungsi diekspor dengan menyandikannya dalam bentuk variabel lingkungan baru dari format khusus, dimulai dengan tanda kurung kosong β()β, diikuti oleh definisi fungsi sebagai string. Contoh-contoh bash baru pada awalnya memindai semua variabel lingkungan, mendeteksi format ini dan mengubahnya kembali ke definisi fungsi internal. Jadi, jika seorang penyerang memiliki kemampuan untuk mengirimkan variabel lingkungan arbitrer untuk menjalankan bash, maka kemampuan untuk mengeksekusi perintah arbitrer muncul.
Contoh berikut mencetak teks VULN.
env x='() { : ; }; echo βVULNβ' bash -c βecho textβ
Karena ketika menjalankan perintah "echo text", definisi fungsi yang terkandung dalam variabel lingkungan x akan dimuat, dan perintah "echo" VULN "" akan dieksekusi dengan itu.
Solusi pekerjaan Shellshock
Kami mengklik ikon pertama dengan tanda tangan shellshock, dan kami diberitahu bahwa kami harus terhubung melalui SSH dengan tamu kata sandi.

Saat terhubung, kami melihat spanduk yang sesuai.

Mari cari tahu file apa yang ada di server, serta hak apa yang kita miliki.

Mari kita lihat hasil kodenya.

Yang menarik adalah garis yang memanggil fungsi sistem. Berdasarkan namanya, kami menganggap bahwa bash, yang berada di sebelah program dan dipanggil dari program, rentan. Dengan analogi dengan serangan yang dijelaskan dalam artikel, kami menjalankan perintah untuk membaca bendera.
/bin/cat flag
Untuk melakukan ini, kita mendefinisikan suatu fungsi dalam variabel lingkungan tempat kita menempatkan perintah ini. Dan kemudian jalankan programnya.
export x="() { :; }; /bin/cat flag;"

Kami menyerahkan bendera dan mendapatkan satu poin lagi. Sampai jumpa di artikel selanjutnya.
Kami berada di saluran telegram:
saluran di Telegram .