0 r8 n! H* Z: d0 I* u" ?7 [1.提交上面这个URL,在index.php中就取得这个page的值($_GET)。' F! Q- F. T8 [; \! C
2.判断$_GET是不是空,若不空(这里是main.php)就用include来包含这个文件。2 {: A/ ^3 V2 t% ^: O$ D
3.若$_GET空的话就执行else,来 include ”home.php” 这个文件。 , n" R6 k3 G4 \! k% Z) y% ]5 R; d0 p' e7 u
三、为什么会产生漏洞? * _, [9 u& X* [1 b5 _! {2 |$ L 9 j- k0 m, |, A6 ^! k你也许要说,这样很好呀,可以按照URL来动态包含文件,多么方便呀,怎么产生漏洞的呢?问题的答案是:我们不乖巧,我们总喜欢和别人不一样,我们 不会按照他的链接来操作,我们可能想自己写想包含(调用)的文件,比如我们会随便的打入下面这个URL:http: //hi.baidu.com /m4r10/php/index.php?page=hello.php。然后我们的index.php程序就傻傻按照上面我们说得步骤去执行:取 page为hello.php,然后去include(hello.php),这时问题出现了,因为我们并没有hello.php这个文件,所以 它 include的时候就会报警告,类似下列信息:3 I1 P5 j* _8 f: h5 ?
1 O1 Q7 I7 {3 I5 _+ fWarning: include(hello.php) [function.include]: failed to open stream: No such file or directory in /vhost/wwwroot/php/index.php on line 3 : j# h8 i9 K+ QWarning: include() [function.include]: Failed opening ’hello.php’ for inclusion (include_path=’.:’) in /vhost/wwwroot/php/index.php on line 3) Z7 ]4 K; h3 C/ `9 T" I
8 J% X% b/ o' D e c' T5 R5 {注意上面的那个Warning就是找不到我们指定的hello.php文件,也就是包含不到我们指定路径的文件;而后面的警告是因为前面没有找到指定文件,所以包含的时候就出警告了。 9 J! Q2 w! G% X8 p2 f9 {$ c7 h / t$ V# G1 m6 {6 C7 e四、如何利用?2 C7 j' j8 f! j, Y' s5 h( w+ U+ f; ?