您当前的位置: 首页 > 

葫芦娃42

暂无认证

  • 2浏览

    0关注

    75博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

文件包含漏洞

葫芦娃42 发布时间:2022-03-22 19:41:00 ,浏览量:2

定义:

在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。

危险函数: include() , include_once() , require() , require_once().

解题思路:

        本地文件包含: 直接读取目标机上的Flag文件.

        远程文件包含:指定第三方服务器上可运行的PHP木马,拿到webshell,查看Flag文件.

判断本地文件包含与远程文件包含方法:

       查看php全局配置文件php.ini

        1. allow_url_fopen = on/off  允许URLs像files对象一样被打开

        2. allow_url_include = on/off 允许包含URL 对象文件.   才可以使用远程文件包含.

本地文件包含:

直接包含内有Flag的文件.

        利用:http://www.example.com/demo1.php? file=flag.php%00

        这段代码相当于: include '/home/www/flag.php%00.php'

        字符串截断技巧: 结束符的 \x00-->%00.

通过PHP伪协议读取代码中的Flag.

        PHP伪协议:

                  1.file://  访问本地文件系统,在CTF比赛中常用来读取本地文件.

                        用法: file:// [文件的绝对路径和文件名]

                        条件(php.ini) : allow_url_fopen = off/on

                                               allow_url_include = off/on  on off 都可.

                        eg: http://www.example.com/index.php?file=file://D:/PhpStudy/WWW/flag.txt

                  2.php://  访问各个输入/输出流.

                        php://filter

                        用法:读取网页源代码.

                        条件(php.ini) : allow_url_fopen = off/on

                                               allow_url_include = off/on  on off 都可.

                      ini无法获取的话,可以利用:(如果不是base64编码,就会当成php执行,就看不到原码了)

                         file=php://filter/read=convert.base-64-encode/resource=index.php

                         拿burp decode一下,就看见源码了。

                          前面文章buuctf web真题1 里有此例题include。

                        PHP://input

                        用法: 可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行.

                        条件(php.ini) : allow_url_fopen = off/on

                                               allow_url_include = on

                                                只要include 开启,就可以当成php代码执行.

例题:攻防世界 Web_php_include

        通过对网站源码进行分析:

        

由include($page)看出本题的考点在于文件包含,而且通过源码得知php://被过滤了。

        php://被过滤,strstr函数对大小写不敏感,因此我们可以使用PHP://来绕过。所以我们可以使用php://input 来post传递恶意代码,来输入命令给服务端。

发现了fl4gisisish3r3.php    index.php   phpinfo.php。

再传输一个指令,查询flag。,得到flag.

写入PHP木马获取webshell,查看Flag.

这个可以直接看见源码的,可以查看一下php.ini,发现include on,fopen off.可用php伪协议

 http://----------/index.php/file=php://input

后通过hackbar post我们的shell。

之后就可以利用菜刀链接shell了。

远程文件包含:

        指定第三方服务器上可运行的php木马,拿到webshell,查看Flag文件。

例如查看源码可看见require_once.

访问php.ini发现,allow_url_fopen 和include都on,存在远程文件包含.

 

关注
打赏
1658420143
查看更多评论
立即登录/注册

微信扫码登录

0.0380s