IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 文件操作安全 -> 正文阅读

[PHP知识库]文件操作安全

在这里插入图片描述
在这里插入图片描述
1.文件上传:可以见上篇博客
2.文件包含:

1)就是将指定文件当成指定脚本代码执行,可以包含txt、图片:
在这里插入图片描述
2) php 中涉及到的常见危险函数:

  • include()
  • include_once()
  • require()
  • require_once()

3)分类为本地包含与远程包含。(在php中all_url_include开启时可以远程包含)
4)绕过:00截断、长度溢出截断、伪协议等。

比如有的include函数会在这样写,我们就需要00截断来绕过:

$filename=$_GET['filename'];
include'$filename.'".html";

在这里插入图片描述
在这里插入图片描述

5)部分伪协议:
在这里插入图片描述

phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

具体作用
参考:https://www.cnblogs.com/endust/p/11804767.html

6)实战:易酷cms

在这里插入图片描述
我们知道了搭建是利用易酷cms,去网上搜索历史漏洞:

在这里插入图片描述
参考:https://www.seebug.org/vuldb/ssvid-62698
https://www.cnblogs.com/csnd/p/11807743.html

该漏洞大意就是我们利用报错的日志文件,在日志中包含我们的一句话。我们输入根据文章我们在url处输入payload:
在这里插入图片描述
然后打开日志文件目录,可以看见一句话:
在这里插入图片描述
成功连上shell:
在这里插入图片描述
顺带一提,其实蚁剑菜刀连接的原理就是封装好了流量包,我们在连上shell后,点击那个就会发送相应的流量请求包,因此可以进行文件操作。

3.文件下载:
1)利用文件下载漏洞实现下载敏感文件的目的。
2)
在这里插入图片描述

3)访问文件和下载文件不一样!下载需要执行其他代码。在这里插入图片描述

4)pikachu php实现文件下载源码:

<?php


$PIKA_ROOT_DIR =  "../../";

include_once $PIKA_ROOT_DIR."inc/function.php";

header("Content-type:text/html;charset=utf-8");
// $file_name="cookie.jpg";
$file_path="download/{$_GET['filename']}";
//用以解决中文不能显示出来的问题
$file_path=iconv("utf-8","gb2312",$file_path);

//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
    skip("你要下载的文件不存在,请重新下载", 'unsafe_down.php');
    return ;
}
$fp=fopen($file_path,"rb");
$file_size=filesize($file_path);
//下载文件需要用到的头
ob_clean();//输出前一定要clean一下,否则图片打不开
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".basename($file_path));
$buffer=1024;
$file_count=0;
//向浏览器返回数据

//循环读取文件流,然后返回到浏览器feof确认是否到EOF
while(!feof($fp) && $file_count<$file_size){

    $file_con=fread($fp,$buffer);
    $file_count+=$buffer;

    echo $file_con;
}
fclose($fp);
?>

javaweb实现文件下载:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setCharacterEncoding("UTF-8");
		//设置ContentType字段值
		response.setContentType("text/html;charset=utf-8");
		//获取所要下载的文件名称
		String filename = request.getParameter("filename");
		//下载文件所在目录
		String folder = "/filename/";
		//通知浏览器以下载的方式打开
		response.addHeader("Content-type", "appllication/octet-stream");
		response.addHeader("Content-Disposition", "attachment;filename="+filename);
		//通知文件流读取文件
		InputStream in = getServletContext().getResourceAsStream(folder+filename);
		//获取response对象的输出流
		OutputStream out = response.getOutputStream();
		byte[] buffer = new byte[1024];
		int len;
		//循环取出流中的数据
		while((len = in.read(buffer)) != -1){
			out.write(buffer,0,len);
		}
		
		
	}

参考:https://blog.csdn.net/Cheng_May/article/details/78600833

5)[RoarCTF 2019]Easy Java:

我们知道java是靠post传输的,所以不能被url中的filename=help.docx迷惑住:
在这里插入图片描述
下载文件打开后,发现不是flag,此时就考查我们的java web开发功底了,在java的环境下,有一个相当于记录配置文件的目录:WEB-INF/web.xml。
在这里插入图片描述
里边记录有index、flag、login文件:
在这里插入图片描述
我们尝试读取flag文件:
在这里插入图片描述
得到路径,读取下载到:
在这里插入图片描述
在这里插入图片描述
base64解码得到flag。

其他题也有类似思路:百度杯 2017 二月-Zone 真题复现-比赛拓展。

参考:任意文件下载漏洞、小米路由器任意文件读取漏洞(巧用fofa)

WindowsC:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS 配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql 配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php 配置信息
C:\Windows\my.ini //Mysql 配置信息
C:\Windows\win.ini //Windows 系统的一个基本系统配置文件
Linux/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/usr/local/app/php5/lib/php.ini //PHP 配置文件
/etc/my.cnf //mysql 配置文件
/etc/httpd/conf/httpd.conf //apache 配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql 历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的 cmdline 参数

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章           查看所有文章
加:2022-01-14 01:45:27  更:2022-01-14 01:47:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 14:53:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码