【网络安全/CTF】unseping 江苏工匠杯

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
简介: 【网络安全/CTF】unseping 江苏工匠杯

该题考察序列化反序列化及Linux命令执行相关知识。

题目

<?php
highlight_file(__FILE__);
class ease{
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
    function __destruct(){
        if (in_array($this->method, array("ping"))) {
            call_user_func_array(array($this, $this->method), $this->args);
        }
    } 
    function ping($ip){
        exec($ip, $result);
        var_dump($result);
    }
    function waf($str){
        if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {
            return $str;
        } else {
            echo "don't hack";
        }
    }
    function __wakeup(){
        foreach($this->args as $k => $v) {
            $this->args[$k] = $this->waf($v);
        }
    }   
}
$ctf=@$_POST['ctf'];
@unserialize(base64_decode($ctf));
?>

开门见山给出代码,考察代码分析能力。

首先,代码定义了一个名为ease的类,其中__construct()接收两个参数$method$args,并将它们赋值给对应的属性。__destruct()在对象销毁时自动调用。它首先检查$method是否在可调用的方法数组中,如果是,则使用call_user_func_array()函数调用ping()方法,并将$args作为参数传递进去。

方法ping($ip)接收一个参数$ip,使用exec()函数执行$ip命令,并将结果存储在$result数组中,最后通过var_dump()打印出来。

方法waf($str)用于简单的Web应用防火墙(WAF)功能。它使用正则表达式检测是否包含一些特定的关键字,如|&;/catflagtacphpls等。如果不包含这些关键字,则返回原始字符串;否则,输出"don’t hack"。

__wakeup()是一个魔术方法,用于在反序列化对象时自动调用。它遍历$args数组,并对其中的每个元素调用waf()方法进行过滤。

也就是说,代码通过接收名为ctf的POST参数,对其进行base64解码并反序列化。

那么思路就很清晰了:构造可进行命令执行的ping命令,并经过序列化、base64加密后赋值给参数ctf。由于ctf在解码后会被反序列化,而反序列化时会执行wakeup魔术方法,即反序列化时会对ping命令中的关键字进行过滤来限制命令执行。所以我们可以使用双引号闭合等的方式进行绕过。

查看目录文件:

结果如下:

接下来就是访问flag_1s_here,由于flag被过滤,用双引号绕过。空格被过滤,用IFS进行绕过。(在PHP中,${}语法是用于取变量的值,并可以在花括号中使用任意的表达式,IFS默认为空格)

构造POC后回显如下:

传参:

那么接下来要做的就是打印php中的内容

cat flag_1s_here /flag_831b69012c67b35f.php

变化为

c""at${IFS}f""lag_1s_here$(printf${IFS}"\57")f""lag_831b69012c67b35f.p""hp

$()用于执行命令并获取其输出结果,这里将 ASCII 码为 57 的字符 / 通过 printf 命令输出。

传参:

目录
相关文章
|
3月前
|
网络安全 数据安全/隐私保护
【网络安全 | Crypto】hidden key 江苏工匠杯
【网络安全 | Crypto】hidden key 江苏工匠杯
48 0
【网络安全 | Crypto】hidden key 江苏工匠杯
|
2月前
|
存储 网络协议 数据建模
程序与技术分享:2021年第一届“东软杯”网络安全CTF竞赛
程序与技术分享:2021年第一届“东软杯”网络安全CTF竞赛
|
2月前
|
安全 网络安全 数据安全/隐私保护
CTF竞赛:一场网络安全技术的盛宴
CTF竞赛:一场网络安全技术的盛宴
64 0
|
3月前
|
JSON 算法 网络安全
【网络安全/CTF】easyphp 江苏工匠杯
【网络安全/CTF】easyphp 江苏工匠杯
82 0
【网络安全/CTF】easyphp 江苏工匠杯
|
3月前
|
网络安全
【网络安全 | CTF】pure_color
【网络安全 | CTF】pure_color
34 0
|
3月前
|
网络安全 Windows
【网络安全 | CTF】心仪的公司 世安杯
【网络安全 | CTF】心仪的公司 世安杯
46 0
|
3月前
|
SQL 网络安全 PHP
【网络安全 | CTF】FlatScience
【网络安全 | CTF】FlatScience
36 0
|
3月前
|
安全 网络安全
【网络安全/CTF】catcat-new
【网络安全/CTF】catcat-new
88 0
|
3天前
|
SQL 安全 网络安全
网络安全与信息安全:保护数字世界的基石
【8月更文挑战第16天】在数字化时代,网络安全与信息安全的重要性日益凸显。本文将深入探讨网络安全漏洞、加密技术以及安全意识等关键领域,旨在为读者提供全面的知识分享和实践指导。我们将从网络攻击的常见类型及其防御措施出发,进一步讨论加密技术在保障数据安全中的作用,并强调提升个人和企业的安全意识的必要性。通过分析真实案例,本文旨在帮助读者构建更加坚固的网络安全防线,共同守护我们的数字生活。
|
4天前
|
SQL 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的探讨
【8月更文挑战第16天】在数字化时代,网络安全与信息安全成为维护社会稳定和保护个人隐私的重要议题。本文将深入探讨网络安全漏洞的成因、影响及防范措施,介绍加密技术的基本原理和应用,并强调提升公众的安全意识在构建网络防线中的重要性。通过分析当前网络安全面临的挑战,提出加强技术防护和提高用户安全意识的双重策略,旨在为读者提供全面的网络安全知识分享。
23 9

热门文章

最新文章