Pemecahan masalah dengan pwnable.kr 02 - collision. Tabrakan Hash

gambar

Dalam artikel ini, kami mengingat tentang tabrakan dalam fungsi hash, dan menyelesaikan tugas kedua 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.

Tabrakan fungsi hash


Tabrakan fungsi hash adalah sepasang blok x dan y , hasil dari hash () fungsi hash yang menghasilkan blok yang sama z .

hash (x) = hash (y) = z

Tabrakan mungkin untuk fungsi hash, karena set input jauh lebih besar daripada set output fungsi hash.

gambar

Oleh karena itu, stabilitas fungsi hash ditentukan oleh tiga karakteristik:

  • irreversibility - ketidakmampuan untuk memulihkan pesan dengan hash;
  • resistensi terhadap benturan jenis pertama - untuk satu pesan tidak mungkin menemukan pesan kedua yang akan memberikan hash yang sama dengan yang pertama;
  • resistensi terhadap benturan jenis kedua - Anda tidak dapat mengambil sepasang pesan yang hashnya akan sama.

Solusi pekerjaan tabrakan


Kami mengklik ikon kedua dengan tumbukan 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.

ls -l 

gambar

Jadi, kita dapat membaca kode sumber program, karena ada hak untuk membaca untuk semua orang, dan menjalankan program col dengan hak-hak pemilik (bit sticky diatur). Mari kita lihat hasil kode.

gambar

Ini mengikuti dari kode bahwa program mengambil string 20 karakter sebagai parameter, meneruskannya ke fungsi yang menghitung hash dan membandingkannya dengan nilai referensi.

gambar

gambar

Di dalam fungsi, string kami dibagi menjadi 5 blok 4 byte, yang dikonversi menjadi angka, setelah itu angka-angka ini dijumlahkan. Jadi, kita membutuhkan 5 angka, yang secara total akan memberikan 0x21dd09ec. Puaskan kondisi: 0xd1d905e8 dan 0x01010101.

gambar

Sekarang Anda harus meneruskan karakter yang tidak dapat dicetak ke baris perintah sebagai parameter untuk program. Untuk melakukan ini, kami menggunakan sintaks bash dan juru bahasa python. Penting untuk dicatat bahwa ketika dalam memori komputer angka-angka ini akan disimpan dalam urutan terbalik, jadi kami akan mengubahnya.

 ./col $(python - “print('\x01\x01\x01\x01'*4 + '\xe8\x05\xd9\x1d')”) 

gambar

Hasilnya, kami mendapat tiga poin.

gambar

Sekarang kita telah memeriksa contoh tabrakan yang sangat sederhana, dan pada artikel selanjutnya kita akan menyelesaikan tugas ketiga dan menganalisis kerentanan seperti buffer overflow pada stack. Sampai jumpa di artikel berikut.

Kami berada di saluran telegram: saluran di Telegram .

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


All Articles