ngorbIT ( ngobrol Soal IT ) : Null Byte Injection
Ini judul series terbaru saya menampung keresahan penjenengan yang membaca. kali ini saya akan membahas Null Byte Injection
ngorbIT ( ngobrol Soal IT ) : Null Byte Injection

ilustrasi (edited by gemini karena saya tidak bisa ngedit foto)
Basa-Basi Busuk
lucu ya ini judul series terbaru saya menampung keresahan penjenengan yang membaca, kenapa ngorbol tapi posisi anda sekarang lagi baca? ya itu disini saya membedah judul / keresahan dengan gaya bicara seperti ini bukan di kemas dengan cerpen. sebenernya ini cuma cara saya menjelaskan saja karena gak semua orang suka bacaan berat seperti cerpen.
“lalu apa ini di sebut ngobrol ?” bagi saya sih iya kalau bagi anda bukan ya berarti itu pendapat mu. “tapi kan ngobrol kok pakai tulisan ?” heyy sebelum ada computer di genggaman mu dulu generasi sebelum mu pakai surat untuk mengobrol Jarak jauh ya.. ok lanjut…
Asal Muasal Null-Byte Injection
Akar masalah dari null byte injection ( potion null byte ) adalah warisan dari Bahasa core dari bebebrapa bahasa pemrograman yaitu bahsa C. dulu para pembuat Bahasa c memutuskan :
” karakter apa ya untuk di jadikan tanda berhenti di Bahasa mesin ini? yang lain nyeletuk pakai 0 aja”
jadilah 0 di jadikan tanda berhenti baca seperti “.” pada tulisan manusia.
jadi normalnya manusia nulis “halo” dalam computer tertulis “halo\0” nah karakter \0 ini lah di sebut null. taukah kamu? pada akhir 90an kira-kira Ketika kita sibuk reformasi para hacker menyadari celah komunikasi computer ini. Mereka menemukan bahwa mereka bisa “meracuni” ( poisoning ) pada sebuah input. Itulah kenapa dulu di sebut “posion null byte”. coba bayangkan sebuah aplikasi yang mempunyai aturan: “hanya akan membaca file dengan nama yang berakhiran txt” , dan hacker ini mengirim inputan berupa : “/etc/passwd%00.txt” namun system memvalidasi inputan tersebut dan menjalankanya, kenapa?
- Sesuai aturan aplikasi melihat file yang berakhiran “txt”. valid dong
- system operasi ( melalui fungsi Bahasa c “fopen” ) melihat %00 dan langsung berhenti membaca jadinya ke eksekusi /etc/passwd lolos dong dan jadi terbaca ( tereksekusi ).
Nah beberapa bulan sebelum saya lulus SMK yaitu akhir tahun 2010 PHP secara resmi menyatakan bug tersbut sudah di tambal di PHP versi 5.3.4 yang di rilis di desember tahun 2010. jadi ini itu Teknik lawas yang sudah di patch padahal sekarang tahun 2026, bisa dibilang 16 tahun lalu. kalau di ibartkan seorang anak, sudah SMA ini bug.
Penjelasan Teknis
Mungkin di antara anda sekalian masih bertanya : “lah null byte injection di file upload kok bisa yang di eksekusi hanya shell.php padahal inputanya shell.php%00jpg?”
Sudah saya bahas sebelumnya bug null byte injection adalah bug warisan dari core Bahasa php itu sendiri yaitu Bahasa C dimana di ekosistem PHP versi lama < 5.3.4 dan sudah di patch pada akhir 2010. dalam kasus file upload fungsi yang bisa di bypass dulu di fungsi move_uploaded_file() dan copy().
Supaya kita lebih memahaminya yuk kita pakai real case dengan script uploader. Sebelum beralih membaca script php, patutnya kita harus mengerti bahwa pada php alur eksekusi ( execution Flow ) di jalankan baris-perbaris dari atas kebawah sesuai urutan penulisan atau gampangnya “top-down flow”. dari atas kebawah, selama tidak ada percabangan atau loop.

alur script file upload
- Area if condition : jadi jika ada request post apa yang ada di dalam area if ini di jalankan.
- Pengecekan gambar dan pengambilan data : hal pertama dilakukan ialah mengecek konsidi variable file apakah ada jika ada kita ambil Namanya.
- Validasi : di dalam ini berisi validasi berupa pengecekan extention jika terdapat apa yang ada di array / list maka akan lolos
- Function upload
- Pengecekan jika file yang di upload belum ada di directory maka di keluarkan script upload gagal begitu juga sebaliknya.
Bentar, dari keterangan di atas saya coba buat ilustrasinya begini :

ilustrasi alur null byte injection
Dari alur tersebut di ketahui bahwa system berhenti membaca setelah tanda null byte kemudian mengeksekusinya. sepertinya dari ilustrasi tersebut bisa menjelaskan semuanya ya..
Sini Tanya Aja!!
Mungkin ada yang tanya “sudah saya coba namun gak work ya ?”. bagi anda yang bilang gak work coba cek dulu mas versi phpnya. Teknik ini hanya berlaku di Versi < PHP 5.3.4
Eittss tunggu dulu bentar, jika pertanyaanmu di rubah menjadi “masih relevankah null byte injection ini di jaman sekarang?”. Saya jawab masih, jaman sekarang null byte injection bukanlah masalah bahsa pemrograman melainkan masalah “Bussines Logic” dan koneksi antar system yang berbeda. Kenapa masih ada bug-bug jadul seperti nullbyte injection ini? contohnya masih banyak WAF yang “mengijinkan request nullbyte” karena mengira itu aman dan filter handmade atau custom biasanya masih banyak yang masih bisa di bypass nullbyte. yah begitulah semoga aja menjawab dengan bahasan ngorbIT pertama ini. sambung lain kali ya… wassalam.
메타데이터
- post_id
- 7268e36fc8bc
- slug
- ngorbit-ngobrol-soal-it-null-byte-injection-7268e36fc8bc
- url
- https://medium.com/@goodnightdev/ngorbit-ngobrol-soal-it-null-byte-injection-7268e36fc8bc
- canonical_url
- https://medium.com/@goodnightdev/ngorbit-ngobrol-soal-it-null-byte-injection-7268e36fc8bc
- author_url
- https://medium.com/@goodnightdev
- status
- ok
- fetched_at
- 2026-07-15 07:36:08