Pada artikel ini kita akan menganalisis: apa itu deskriptor file, bagaimana proses mengakses aliran input / output tertentu, dan menyelesaikan tugas pertama 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.
Penjelas file
Deskriptor file adalah angka non-negatif yang mengidentifikasi aliran input / output yang mungkin terkait dengan file, direktori, atau soket.

Tabel file sistem (SFT - File System Table) dan tabel inode (INode Table) berisi informasi yang diperlukan untuk proses untuk mengakses data file. Jika beberapa proses meminta akses ke file yang sama, maka masing-masing proses ini akan menerima elemen sendiri dari tabel file sistem, meskipun faktanya mereka akan bekerja dengan file yang sama.
Kernel menyediakan deskriptor file untuk proses ketika mendapatkan akses ke file. Kita dapat mengatakan bahwa deskriptor file adalah indeks dari array file terbuka yang unik untuk setiap proses. Namun, tiga indeks pertama sudah benar-benar diperbaiki:
- 0 - input standar (stdin);
- 1 - output standar (stdout);
- 2 - aliran kesalahan standar (stderr).
Jadi fungsi get () dan printf () dari pustaka standar C menggunakan stdin dan stdout, yang memungkinkan shell untuk mengarahkan input dan output dari proses dengan benar.
Solusi pekerjaan fd
Kami mengklik ikon pertama dengan tanda tangan fd, 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

Dengan demikian, kita dapat membaca kode sumber program, karena ada hak untuk membaca untuk semua orang, dan menjalankan program fd dengan hak-hak pemilik (bit sticky diatur). Mari kita lihat kode sumbernya.

Ini mengikuti dari kode bahwa program mengambil angka sebagai parameter, mengurangi 0x1234 dari itu dan menggunakannya sebagai deskriptor untuk mendapatkan string yang harus sama dengan "LETMEWIN".

Jadi, kita perlu mengirimkan program string "LETMEWIN" melalui aliran input standar (stdin). Untuk ini, deskriptor yang dilewatkan ke fungsi read () harus 0. Artinya, angka 0x1234 harus digunakan sebagai parameter program. Konversikan ke desimal.

Sekarang jalankan program dengan parameter 4660, lepaskan garis yang diinginkan dan ambil bendera.

Hasilnya, kita mendapat poin pertama.

Pwnable.kr dimulai dengan tugas yang mudah, berkat itu perlu berurusan dengan deskriptor. Sampai jumpa di artikel berikut!
Kami berada di saluran telegram:
saluran di Telegram .