Bagaimana Bug seperti bisa ada?

Disisi programer : Bagaimana cara pencegahan yang programer lakukan untuk mencegahnya.. ?
Disisi Attacker : Bagaimana cara menggunakan bug ini untuk penyerangan..?

sebelumnya apa sih LFI dan RFI itu??
LFI (Local File Inclusion) adalah sebuah lubang pada site dimana attacker bisa mengakses semua file di dalam server dengan hanya melalui URL.
RFI (Remote File Inclusion) adalah sebuah lubang dimana site mengizinkan attacker meng-include-kan file dari luar server.

fungsi-fungsi yang dapat menyebabkan LFI/RFI:
include();
include_once();
require();
require_once();

Dengan syarat pada kofigurasi server:
allow_url_include = on
allow_url_fopen = on
magic_quotes_gpc = off

masuk ke example
kita misal kan kita punya file index.php dengan content seperti ini

Code:

misal $page=main.php
mungkin di url akan terlihat seperti ini bentuknya
h**p://www.sitevulnerable.com/index.php?page=main.php
maka script ini akan menampilkan halaman main.php.

nah disini attacker akan dapat melakukan LFI karena variable page di include begitu saja.
misal attacker ingin mengakses file passwd yang ada pada sever maka dia mungkin akan memasukan seperti ini ../../../../../../../../../etc/passwd << dengan jumlah "../" itu tergantung dari kedalam folder file index.php tersebut.. dengan begitu isi file passwd akan ditampilkan di browser. dengan kita bisa menebak folder" dalam site.. ^^ tapi seandainya terdapat error seperti Quote

Warning: main(../../../../../../../../../etc/passwd.php) [function.main]: failed to open stream: No such file or directory in /their/web/root/index.php on line 2

liat pada passwd ternyata dia di tambah dengan extensi .php berarti code yang digunakan untuk include adalah seperti ini

Code:

nah untuk dapat mengelabui script tersebut kita bisa menggunakan %00 (dengan syarat magic_quotes_gpc = off) jadi dibelakang /etc/passwd kita tambahkan %00 seperti

h**p://www.sitevulnerable.com/index.php?page=../../../../../../../../../etc/passwd%00

lalu untuk apa %00? yaitu untuk menghilangkan karakter setelah %00 ini di sebut teknik null injection.
itu LFI.