攻防世界之Web_unserialize3
题目:

直接给源码,审计代码,又是一题反序列化的。传送门:反序列化漏洞
【原理】
PHP反序列化漏洞:执行unserialize()时,先会调用__wakeup()。
当序列化字符串中属性值个数大于属性个数,就会导致反序列化异常,从而跳过__wakeup()。
解题思路:
1.打开题目,进行代码审计,可以看到xctf类只拥有一个public的flag变量,值为111。
2.public属性序列化后格式为:数据类型:属性名长度:"属性名";属性值个数:{数据类型:属性值长度:"属性值";}
3.本题目中,只存在一个变量,正常情况下序列化后,如下所示
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
4.将设置属性值为2,可导致反序列化异常,如下所示。
O:4:"xctf":2:{s:4:"flag";s:3:"111";}
将修改后的code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}加入url中看看结果

代码如下:https://tool.lu/coderunner/?id=c7R在线运行代码工具。
1 <?php
2 class xctf{
3 public $flag = '111';
4 public function __wakeup(){
5 exit('bad requests');
6 }
7 }
8 // ?code=
9 $a = new xctf("111"); // 创建一个对象
10 echo serialize($a)."\n"; // 序列化
11 // 序列化结果 O:4:"xctf":1:{s:4:"flag";s:3:"111";}
12 $b = serialize($a);
13 $b = str_replace(':1:',':2:',$b); // 当成员属性数目大于实际数目时可绕过wakeup方法
14 echo $b."\n";
15 // 修改后结果 O:4:"xctf":2:{s:4:"flag";s:3:"111";}
==================================================
总结:
当序列化字符串中属性值个数大于属性个数,就会导致反序列化异常,从而跳过__wakeup()。
攻防世界之Web_unserialize3的更多相关文章
- CTF--web 攻防世界web题 robots backup
攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...
- CTF--web 攻防世界web题 get_post
攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...
- 攻防世界 web进阶练习 NewsCenter
攻防世界 web进阶练习 NewsCenter 题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...
- 【攻防世界】高手进阶 pwn200 WP
题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- 攻防世界 | CAT
来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...
- 攻防世界 robots题
来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...
- 【攻防世界】 高手进阶区 Recho WP
0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...
- CTF -攻防世界-crypto新手区(5~11)
easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间 明明没算错 ...
随机推荐
- IPOPT安装
1.安装工具coinbrew 打开网页,找到以下网址 将网站中的内容全部复制到自己创建的coinbrew文件中,并且赋予权限 chmod u+x coinbrew 或者执行 git clone htt ...
- 《剑指offer》面试题24. 反转链表
问题描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4-> ...
- Discuz!X ≤3.4 任意文件删除漏洞
Discuz!X ≤3.4 任意文件删除漏洞 简述 漏洞原因:之前存在的任意文件删除漏洞修复不完全导致可以绕过. 漏洞修复时间:2017年9月29日官方对gitee上的代码进行了修复 漏洞原理分析 在 ...
- React教程
教程 一.demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> &l ...
- 领域驱动设计-CQRS
CQRS 代表命令查询职责分离.这是我第一次听到Greg Young描述的模式.其核心概念是,您可以使用与用于读取信息的模型不同的模型来更新信息.在某些情况下,这种分离可能很有价值,但请注意,对于大多 ...
- gin中HTML渲染
package main import ( "github.com/gin-gonic/gin" "net/http" ) func login(ctx *gi ...
- python 小兵内置函数进制转换
Python内置函数进制转换的用法 使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Conve ...
- shiro 快速入门详解。
package com.aaa.lee.shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; i ...
- Spring源码-IOC部分-Spring是如何解决Bean循环依赖的【6】
实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...
- LeetCode.241
241. 为运算表达式设计优先级 题目大意 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果.你需要给出所有可能的组合的结果.有效的运算符号包含 + - * 思路: ...