php审计--任意文件上传配合目录文件包含getshell

news/2024/8/26 18:32:51 标签: php审计

在黑盒中 源码 数据库配置文件都是很不好找的,,但源码审计不同
所有的漏洞,成因都是相同的,但我们自以最基础的作为代表,

这里文件上传这个点可以配合文件包含一块利用,当某个站对数据处理不严时,存在sql注入,那也可能会有文件注入,

常见的文件目录穿越配合文件包含实现getshell
演示目录穿越的原理,这里通过readfile函数读取文件,注意file变量里有个正斜杆

<?php
if(isset($_GET['file'])){
    readfile("file/".$_GET['file']);

}

第一种情况,读取同文件夹下的1.txt
在这里插入图片描述
然后我们利用目录阶乘符…/ 目录穿越到file文件夹下的1.txt,达到目录穿越
修复措施: 不使用文件名作为变量传输。
在这里插入图片描述
同时,这里写一个有文件包含功能点的php

 <?php

$file = $_GET['name'];
if(isset($file)){
    include ($file);

}

通过include函数包含同文件夹下的phpinfo,

在这里插入图片描述
可以看到可以本地包含,,这时候,,如果allow_url_include=on,我们可以尝试利用目录穿越和文件包含写入shell到我们可以访问的地方,

在这里插入图片描述
include函数如果没做后缀过滤,我们远程包含 a.jpg 函数会自动识别位a.jpg.php

在这里插入图片描述

同样,存在任意文件读取需要配合目录穿越, …/ ./ …\目录阶乘符可以通过url编码绕过验证

通过readfile函数读取admin目录下的配置文件config / index.php

 $file = $_GET['a'];
if(isset($file)){
    readfile($file);}
   

在这里插入图片描述

在这里插入图片描述通过fopen函数创立$fp 指针,fread函数读取,最后通过fclose函数回收指针

$file = $_GET['a'];
if(isset($file)){
 $fp = fopen($file,"r") or ("cannot read");
 $data = fread($fp,filesize($file));
 fclose($fp);
 echo $data;}

通过file_get_contents函数读取输出

$file = $_GET['a'];
if(isset($file)){
echo file_get_contents($file);
}

通过 目录穿越配合Unlink函数达到任意文件删除

 $file = $_GET['a'];
 if(file_exists($file)){
 unlink($file);
 }

通过?a=./admin/config.php 删除配置文件,危害很高

既然是文件上传,需要了解的点是文件上传的配置:

写一个前端功能上传点

<form action="upload12.php" method="post" enctype="multipart/form-data">
	<input type="file" name="file">
    <input type="submit" name="2" />
</form>

文件上传的变量$_FILES
1,参数name: 原始上传文件名
2. 参数tmp _name 临时上传文件名。在php.ini获取
3. 函数move_uploaded_file 两个参数,一个移动的路径,第二个文件名。

这里先定义一个文件上传路径

$dir = "O:\phpstudy\WWW\uploads";

赋值一个文件上传变量$upload_name

$upload_name = $dir . "\\" . $_FILES['file']['name'];

通过move_uploaded_file函数移到uploads文件夹中

 move_uploaded_file($_FILES['file']['tmp_name'],$upload_name);

在这里插入图片描述在这里插入图片描述
完整源码

<?php

header("Content-type:text/html;charset=utf-8");

$dir = "O:\phpstudy\WWW\uploads";
if(isset($_FILES['file'])){
    $upload_name = $dir . "\\" . $_FILES['file']['name'];
    move_uploaded_file($_FILES['file']['tmp_name'],$upload_name);

}

http://www.niftyadmin.cn/n/929224.html

相关文章

wpf 右下角弹出窗

wpf 右下角弹出窗 原文:wpf 右下角弹出窗自己写的wpf 弹出框&#xff0c;欢迎拍砖&#xff0c;动画都写在了后台代码&#xff0c;前台代码不太重要&#xff0c;用了一下iconfont&#xff0c;具体样式我就不贴出来了&#xff0c;本次主要是后台代码的动画 需要有父级窗口才可以使…

第八次作业(课堂实战)- 项目UML设计(团队)

1. 团队信息 队名&#xff1a;小白吃队成员&#xff1a; 后敬甲 031602409卢泽明 031602328蔡文斌 031602301葛亮 031602617刘浩 031602423黄泽 031602317黄婧茹 031602315组长&#xff1a;后敬甲2.团队分工 WBS Alpha版本 任务槽 登陆注册界面完成自选窗口的识别结算功能实现学…

php审计--灰盒角度来复现经典反序列化

站在巨人的肩膀上做反序列化复现&#xff0c;&#xff0c; 这里已经找了fwrite()函数和read()函数&#xff0c;file_get_contents($file);都不能代替fopen()函数做复现&#xff0c;&#xff0c;本人水平有限&#xff0c;希望读者不要介意&#xff0c; 我们从灰盒的角度做学习…

App Store评论优化,让你的APP评论上涨

App Store评论优化怎么做 App Store评论优化&#xff0c;让你的APP评论上涨 关于「ASO评论优化」&#xff0c;主要分为三块。换评论&#xff0c;买评论&#xff0c;引导用户写评论。 可能有些刚接触ASO的朋友会问&#xff0c;为什么要给APP做评论呢?ASO优化师的工作不是主要做…

使用 fetch 封装网络请求,返回promise 对象

1.fetch 的概念和用法 fetch 提供了对 Request 和 Response &#xff08;以及其他与网络请求有关的&#xff09;对象的通用定义。使之今后可以被使用到更多地应用场景中&#xff1a;无论是service workers、Cache API、又或者是其他处理请求和响应的方式&#xff0c;甚至是任何…

php审计--通过php伪协议配合文件包含写入shell

有群友问过这样一个问题&#xff0c;&#xff0c; http:xxx/123.jpg 传上这样的图片马能不能连到shell&#xff1f; 这有几种情况&#xff0c;&#xff0c;&#xff0c;php解析吧jpg解析成php&#xff0c;iis吧jpg解析成php都可以 我们这里通过php伪协议存在文件包含的页面做个…

列表推导式、生成器表达式

列表推导式 egg ["鸡蛋{}".format(i) for i in range(1, 11)]print(egg)生成器表达式 eggs ("鸡蛋{}".format(i) for i in range(1, 11))for egg in eggs: print(egg)二者的括号不一样&#xff0c;前者是中括号&#xff0c;且返回整个列表&#xff0c…

jenkins active choice parameter插件

actice choice 这个插件的作用是可以在参数化构建时&#xff0c;创建一个可选的参数例如&#xff0c;用jenkins创建一个发布project时&#xff0c;我们发布过程中需要选择环境、服务名称等&#xff0c;我们希望在参数化构建时&#xff0c;可以提供一个下拉框给用户进行选择&…