双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

WEB攻防-通用漏洞-文件包含

Sisuuu. Sisuuu. 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

 

一、什么是文件包含

文件包含简单来说就是引用文件。有些代码段经常能够被用到,为了避免重复敲写这一代码段,

则就将这一代码段单独放入到一个文件中,需要用时就调用出来。例如在PHP中就是利用

include进行引用(而include能够将任意种类文件(jpg、png等)中带有的代码进行解析,

为后门代码解析提供了环境)

二、文件包含种类

1、本地文件包含

2、远程文件包含

三、文件包含漏洞-黑盒

1、黑盒主要就是看参数传递的数据是否是有文件后缀

2、三种攻击方式

     1)配合文件上传进行攻击。例如图片带有脚本后门代码,但是没有解析环境,可包含这个图

    片,图片中的代码被解析触发

    2)配合日志文件或会话文件进行攻击

    3)运用相关语言可允许的协议进行攻击

php伪协议:php伪协议:[PHP伪协议总结 - 个人文章 - SegmentFault 思否](https://segmentfault.com/a/1190000018991087)

3、案例以及复现

ctfshow所有文件包含题(本笔记仅记录部分题)

     1)web78

     使用php://input协议

     使用data://协议

     2)web80 (配合日志文件)

    从代码可看出被过滤的关键字。并且使用远程包含也不可行,允许远程包含的关键函数被关闭

 

     采用另一种方法:配合日志文件

     经抓包,发现中间件为nginx,浏览器可查到nginx 的默认日志位置为/var/log/nginx

     输入,路径正确

     修改数据包UA为脚本代码,得到flag文件

    得到flag

     3)web87 (put://filter协议)

     看代码可发现过滤的了许多关键字符,日志文件也不可使用了,但可发现urldecode解码,则可采用url编码绕过

     还有一个post提交$content,这个content的内容会被放入到$file文件中,则我们可以想到put://filter/write

     将‘php://filter/write=convert.base64-decode/resource=1.php’进行url编码两次,因为浏览器会自动进行一次url解码

     因为会将content中的内容进行base64解码,所以我们需要事先将<?php @eval($_POST[a]);?>后门代码进行一次base64编码,

     其因为content被放入到file文件中时,前面被连接了一部分,并且对这一部分进行解码时,只会解码phpdie,但base64是以

     4个字节为单位进行一次解码看,phpdie只有六个字节,所以需要在前面加入两个字节,则加入了aa

  (也可以使用凯撒13 php://filter/write=string.rot13/resource=2.php content=<?cuc riny($_CBFG[1]);?>)

  (也可以使用iconv php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php contents=?<hp

    pvela$(P_SO[T]1;)>? web117中可以使用到)

这三种都是php://filter的过滤器中的一部分,剩余过滤器见文章php://filter的各种过滤器_php://filter过滤器种类-CSDN博客

     直接访问1.php并post提交可得到flag

三、文件包含漏洞-白盒

    看包含代码:

    include($action);可使用协议玩法

    include('files/'.$action.'.php');像这种带有‘前缀’、‘后缀’或者两者都有的,协议玩法肯定是用不了了

一篇很详细的文件包含漏洞文章:文件包含漏洞全面详解-CSDN博客

...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
Sisuuu.
闽江学院 488 成员 284 内容