Pada artikel ini, kita akan menyelesaikan tugas ke-25 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 pekerjaan otp
Kami melanjutkan bagian kedua. Saya akan segera mengatakan bahwa ini lebih sulit daripada yang pertama, tetapi kali ini mereka memberi kami kode sumber program. Jangan lupa tentang diskusi di sini (https://t.me/RalfHackerPublicChat) dan di sini (https://t.me/RalfHackerChannel). Mari kita mulai.
Klik pada ikon dengan tanda tangan otp. Kami diberi alamat dan port untuk koneksi.

Kami terhubung dan melihat-lihat di server.

Bendera yang tidak dapat kita baca, program dan kode sumbernya. Mari kita lihat sumbernya.

Mari kita analisa. Program menggunakan kata sandi sebagai argumen.

Selanjutnya, 16 byte acak disimpan dalam variabel otp.

File dengan nama acak (8 byte pertama otp) dibuat dalam folder tmp dan 8 byte acak (8 byte kedua otp) ditulis untuknya.

Untuk beberapa alasan, file yang dibuat membaca nilai dan membandingkannya dengan kata sandi yang dimasukkan.

Di sinilah kerentanannya. Terdiri dari penyimpanan antara nomor yang dihasilkan dalam file. Kita dapat membatasi ukuran file, misalnya, ke 0, kemudian ketika menulis dan membaca dengan kata sandi 0 akan dibandingkan. Ini dapat dilakukan seperti ini.

Sekarang jalankan programnya.

Kami mendapatkan kesalahan. Tidak masalah, karena bisa diproses menggunakan python yang sama.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"

Kami mendapatkan bendera dan paru-paru kami 100 poin. Dan kami melanjutkan: di artikel selanjutnya kami akan menyentuh Web. Anda dapat bergabung dengan kami di
Telegram .