
Dalam artikel ini, kami mengingat tentang tabrakan dalam fungsi hash, dan menyelesaikan tugas kedua 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.
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) = zTabrakan mungkin untuk fungsi hash, karena set input jauh lebih besar daripada set output fungsi hash.

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.

Saat terhubung, kami melihat spanduk yang sesuai.

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

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.

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


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.

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')”)

Hasilnya, kami mendapat tiga poin.

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 .