IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> [网鼎杯 2020 青龙组]AreUSerialz 1 -> 正文阅读

[PHP知识库][网鼎杯 2020 青龙组]AreUSerialz 1

[网鼎杯 2020 青龙组]AreUSerialz 1

首先根据题目提示,打开环境得到:

在这里插入图片描述
得到的源码发现有反序列化函数

然后就通过代码审计,找到关键代码:
在这里插入图片描述当面我们创建的对象销毁时会自动调用这个命令
于是就可以利用反序列化创建一个对象,销毁调用这个魔术方法

而且这个魔术方法调用了process()方法,于是就看这个方法:

在这里插入图片描述
发现这个方法调用了write()和read()的方法,而且是对op进行判断
如果op等于1则进入写,打算用这个写一句话木马,但__destruct()方法
中对写的内容进行了覆盖,所以写不进去内容。

而且__destruct()方法还对op进行了判断当op强相等于字符2时把op
赋值为字符1,然后在process(),判断为1,则还是进入write()方法,
这里我们能利用的时read()的方法,读取flag.php文件

可以利用php中的弱相等,int类型的2与字符类型的2,在__destruct()的强相等下是不等的,所以不会赋值,而弱相等情况下又是相等的
所以利用这一点就可以进入到read()的方法。
在读取文件时我们不知道文件路径,但可以李PHP为协议来进行
文件读取:
php://filter/read=convert.base64-encode/resource=flag.php
所以:
filename的值为:
php://filter/read=convert.base64-encode/resource=flag.php

还需要注意的是我们的,对象属性为protected是受保护的
所以我们在字节流是:
payload:

O:11:"FileHandler":3:{s:5:"%00*%00op";i:2;:11:"%00*%00filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:10:"%00*%00content";i:123;}

但是

在这里插入图片描述对%00进行了过滤,因为%00为NULL在ASCII中为0,所以被过滤了

这里能绕过的方法有两种:

一,对象的属性不敏敏

可以使用一种简单的办法绕过:因为php7.1+版本对属性类型不敏感,本地序列化的时候将属性改为public就可以了
于是就把属性定义为公有属性得到payload:

O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:7:"content";i:123;}

得到:

在这里插入图片描述解码得到flag:
在这里插入图片描述

二、利用16进制编码绕过

绕过的方法是在序列化内容中用大写S表示字符串,这时这个字符串就支持将后面的字符串用16进制表示

所以构造的payload:

O:11:"FileHandler":3:{S:5:"\00*\00op";i:2;S:11:"\00*\00filename";S:57:"php://filter/read=convert.base64-encode/resource=flag.php";S:10:"\00*\00content";i:123;}

得到:

在这里插入图片描述解码得到:

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:03:46  更:2021-09-13 09:04:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 15:21:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码