php截断上传,截断在文件包含和上传中的利用

cdb6cc455b85

截断大概可以在以下情况适用

include(require)

file_get_contents

file_exists

所有url中参数可以用%00控制

0x01. 本地文件包含1.1 截断类型:php %00截断

截断条件:

php版本小于5.3.4 详情关注CVE-2006-7243

php的magic_quotes_gpc为OFF状态

漏洞文件lfi.php

要include的password文件

Password

利用代码:lfi.php?action=password%00

注意:url正宗%00是被会url解码成0x00,所以可能导致截断。

password文件被成功包含并且执行phpinfo()函数。

如果没有截断条件,lfi.php就只能包含php扩展名的文件。

相反,如果有截断条件,lfi.php可以包含任意文件的扩展名。

当把magic_quotes_gpc打开,php版本依然是5.2.9时,再测试,结果%00被转义成了\0两个单体字符,不再具有截断功能。

cdb6cc455b85

原因是:当打开magic_quotes_gpc时,所有的 '(单引号),"(双引号),\(反斜线)和 NULL字符(%00)都会被自动加上一个反斜线进行转义。还有很多函数有类似的作用 如:addslashes()、mysql_escape_string()、mysql_real_escape_string()等

当把magic_quotes_gpc关闭,php版本依然是5.3.10时,依然不能截断。所以证明,php版本和gpc两个条件都必须满足,才能截断。

除了上面的include、require、include_once、require_once还有file_get_contents也能配合php %00利用。

FileGetContents.php

利用方式:

此时可以看到当前目录put.txt是上面password中的内容。

Password

1.2 文件路径长度截断

除了1.1说的%00可以截断,还可以用字符.或者/.,或者./(注意顺序)来截断,不能纯用/,至于为什么,不能用其他字符,想必应该和php实现有关。

系统文件路径长度限制:

windows 259个bytes

linux 4096个bytes

截断条件:

php版本为5.3.4以下(具体哪个版本不是很清楚,乌云上kukki写的5.2.8以下,这明显是不对的,因为我测试用的5.2.9)

GPC是否开启没关系

漏洞代码lfi.php,和1.1中的lfi.php一样

在windows下需要.字符最少的利用POC:

lfi.php?action=password..............................................................................................................................................................................................................................................

成功包含,执行password里面的phpinfo函数

cdb6cc455b85

加上根目录路径一共为258个字节。所以需要的最少的.数为

258 - (lfi.php文件的路径长度即C:/wamp/www/+strlen('password'))

cdb6cc455b85

或者用./截断,最短的POC为,并且最短路径长度为258

lfi.php?action=password./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

将password文件名改为password123后,最短的POC为,最短路径长度依然为258

lfi.php?password123/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

注意这两者一个是/开始,一个是.开始,这和路径长度的奇偶有关系,真正遇到这样的情况,就丢很长的/.,最后再跳整下第一个/或者.即可。

linux就自行测试吧。

0x02. 文件上传

截断类型:php的%00截断。所以截断的条件依然是php %00截断的条件

php版本5.3.4以下

gpc关闭

测试环境:

php版本5.2.9

gpc关闭

漏洞代码 upload.php

File Upload Vulnerability文件:'; echo'路径:'.$targetPath; } else { echo("上传失败"); } }else{ echo("上传失败");}}?>

这个漏洞代码是我YY的,可能实际情况不一定能够用上。只是证明截断可以达到上传的功能。

先将一个php木马重命名为上面扩展名为白名单的后缀,比如.jpg

点击submit按钮,就在server上生成了一个xxoo.php的马。

cdb6cc455b85

0x03. file_exists判断文件是否存在

file_exists在判断文件存在的时候也有被截断的现象。

截断条件:

php版本小于5.3.4

GPC关闭状态

漏洞代码如下,和CVE-2014-8959 phpmyadmin的这个漏洞一样。

';if(! file_exists($filename)){ echo'not exist';}else{ include_once($filename); echo'exist';}?>

当前目录存在一个shell.jpg文件,此时访问?file=shell.jpg%00,返回结果是文件存在。

有一个小技巧:

当上面文件第五行变成$filename = 'xxoo' . $file . '.php';,如果仍然要用shell.jpg,那么只需这样构造:?file=/../shell.jpg%00,利用/../回到当前目录。

在php中一些目录切换

../表示上一层目录

./表示当前目录

/单独使用不能表示当前目录,只用xx/这样才能表示xx这个目录

参考文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题...

环境说明:系统:Windows 8.1 简体中文专业版 虚拟机:VMware Workstation 11.0.0 报错:此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。如图: 图片原文如下: 已将该…

#前端# 解决前端页面滑动不顺畅的问题

看情况有时候需要将body和html同时选择。转载于:https://www.cnblogs.com/tnt-33/p/8464370.html

php守护进程热更新,如何通过PHPStorm配置Hyperf热更新开发环境

通过 PHPStorm 配置热更新开发环境在开发 Hyperf/Swoole 这样的持久化应用时,每当应用代码发生了变更时,都需要重启应用使代码生效,尽管在开发 CLI 应用时这也是一个正确且合理地操作,因为我们开发过程中仍需要关注 stdout 输出的…

php elements,wd elements se和wd elements的区别是什么

区别:1、WD Elements SE有两个USB3.0接口;而WD Elements有一个USB3.0接口,一个USB2.0接口。2、WD Elements SE配置有数据加密功能;而WD Elements不具备存储数据加密功能。本文操作环境:windows10系统、thinkpad t480电…

【热修复】Andfix源码分析

转载请标注来源:http://www.cnblogs.com/charles04/p/8471301.html Andfix源码分析 0、目录 背景介绍源码分析方案评价总结与思考参考文献1、背景介绍 热修复技术是移动端领域近年非常活跃的一项新技术,通过热修复技术可以在不发布应用市场版本&#xff…

已知矩阵 matlab,在MATLAB中,已知矩阵A,那么A(:,2:end)表示

摘要:已知供输工方、表示添资料准加剂、加及标应提原料有关的()的出国法等使用,品”“进办理报检时口食。已知信息系统模型不包逻辑括(。...已知信息系统构化中的结方法设计,矩阵细设和详总体计两阶段一般分为设计,总体主要建立其…

文件源码读取 php伪协议,include(文件包含漏洞,php伪协议)

点击tips查看元素,也并没有有用的信息,联想到题目,include想起了文件包含漏洞。构造payload?file/../../../../../../flag.php没有返回东西。看完wq学到了一个新姿势:php伪代码构造payload?filephp://filter/readconvert.base64-encode/res…

Echarts自定义折线图例,增加选中功能

用Echarts图表开发,原本的Echarts图例不一定能满足我们的视觉要求。 下面是Echarts 折线图自定义图例,图例checked选中,相应的折线线条会随之checked,其余未选中的图例对应的折线opacity会降低,(柱状图&…

php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...

基于JQuery制作的产品广告效果效果图.如下:动画效果介绍:这组广告效果是打开页面后图片会自动播放,从1-5共计5张图片,如果属标放到右下角的1、2、3、4、5列表上,可以自由进行切换到自己想看的图片上去。图片切换是由下…

Python on the Way, Day1 - Python基础1

一、 Python介绍 python的创始人为吉多范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承 Python可以应用于众多领域&#…

python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的

变量介绍。变量就是代表某个数据(值)的名称,简单点说变量就是给数据起个名字。变量的特点。1)变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值是可变的。2)在创建变量时会在内存中开辟一个空间。基于变量的数据类型&#xf…

【BZOJ2095】【POI2010】Bridge 网络流

题目大意 ​  给你一个无向图,每条边的两个方向的边权可能不同。要求找出一条欧拉回路使得路径上的边权的最大值最小。无解输出"NIE"。   \(2\leq n\leq 1000,1\leq m\leq 2000\) 题解 ​  我们先二分答案\(ans\),把边权大于\(ans\)的边…

space index.php 7-14,SpacePack高效部署PHP生产环境

SpacePack 基于 Docker 为了快速部署 PHP 生产环境而产生的项目,它包含了一般项目中常用的组件,能够在最短的时间内产生一个完善并且优化过的 PHP 生产环境。容器版本SpacePack 默认包含了 OpenResty 1.13、PHP 7.2、MariaDB 10.3、Memcached 1.5、Redis…

云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...

下载phpdemo算是跑起来了,现在就要考虑租户系统如自身验证token的问题了。1、先介绍下我的代码目录2、文件执行的时序图和流程图2、代码demotest.phpfunction curl_request($url,$post,$cookie, $returnCookie0){$curl curl_init();curl_setopt($curl, CURLOPT_URL…

php获取h5视频直链,一种H5播放实时视频的方法与系统与流程

本发明涉及播放实时视频,尤其涉及一种h5播放实时视频的方法与系统。背景技术:h5是指第5代html,也指用h5语言制作的一切数字产品。所谓html是“超文本标记语言”的英文缩写。“超文本”是指页面内可以包含图片、链接,甚至音乐、程序…

基础题

1,别名,内部,外部,hash优先级? 2,screen协助 1.一台screen -S 协助名称 2.另外一台screen -ls 列出目前开的协助会话(session),找到上面协助名称对应的session号。 3. sc…

大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)

一.HBase的表结构和体系结构 1.HBase的表结构 把所有的数据存到一张表中。通过牺牲表空间,换取良好的性能。 HBase的列以列族的形式存在。每一个列族包括若干列 2.HBase的体系结构 主从结构: 主节点:HBase 从节点:RegionServer 包…

linux内核网络钩子函数使用,Linux内核IOCTL网络控制框架实现实例分析

4.6、inet_ioctl函数由于inet_ioctl函数内容分支很多,但功能、处理不难理解,所以我把一些不常见的内容都省去,挑简单重要的说,完全在于抛砖引玉:static int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){…switch(cmd){case FIOSETOWN://设置属主cas…

(转)递归转非递归的思路和例子

转自:http://blog.51cto.com/cnn237111/1241956 某些算法逻辑,用递归很好表述,程序也很好写。理论上所有的递归都是可以转换成非递归的。如果有些场合要求不得使用递归,那就只好改成非递归了。 通常改成非递归算法的思路&#xff…

iOS - 富文本

iOS--NSAttributedString超全属性详解及应用(富文本、图文混排) ios项目中经常需要显示一些带有特殊样式的文本,比如说带有下划线、删除线、斜体、空心字体、背景色、阴影以及图文混排(一种文字中夹杂图片的显示效果)。…