云曦3月断网考

misc

一系列的流量分析,得到的附件去010查看得知,这是一个压缩包所以更改文件名,后缀是.zip的,就可以解压缩文件了解压缩得到流量包

1

我们需要的是流量包的信息,那么就需要照找到哪里看

在菜单栏的<统计>,选择<捕获文件属性>查看该流量包的详细信息

在信息中看到时间,需要的是秒数,那么就计算

2

同样是在那个信息中查看,

3

找受害者的ip,那么前面两道的那个页面的信息就无用了。ip我们得先看看什么协议,查看一下http协议仅有两个不同的ip,那么我们都试一下就可以了

法2

但是其实我们不需要去试,通过一些有显示状态码的去看就能知道

那些状态码是被访问的返回给访问的,那么这里的source就是该题的被攻击者的ip了

4

操作系统,含在流量包的server这条信息中,所以我们就搜索server

5

所以就是nmap工具

6

7

这里找的是登录点,我们试试搜搜admin,因为这是常见的用户名(虽然不确定会不会有用户名的输入),这次很有幸,搜到了并且在同一条信息中我们看到了第8的答案

8

法2

搜索password,但是需要扫描到很多条才能到答案

web

ez_rce

开启环境,看到php代码大致就是:post传参a,b,get传参num;num需要等于123456,但是又不能是数字;a,b的值不等,但是a,b的md5加密后的值强比较相等。经过如上两个绕过才会输出successful。那么就传入参数绕过成功,然后我们用php伪协议获得f11111ag.php的源码,并且是post传入参数filebase64解码得到源码,过滤成功就直接访问这个php文件进行下一层的操作

<?php
error_reporting(0);

function no($txt) {
    if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|exec|printf|passthru|proc_open|shell_exec|eval|popen|f/i", $txt)) {
        return $txt;
    } else {
        die("what's up");
    }
}

$e = $_POST['e'];
if (isset($_GET['m']) && isset($_GET['n']) && isset($_POST['e'])) {
    $param1 = no($_GET['m']);
    $param2 = no($_GET['n']);

    if (function_exists($e)) {
        call_user_func($e, $param1, $param2);
    } else {
        die("Function not allowed.");
    }
} else {
    echo "nonono";
}
?>

根据题目提示“写一句话木马”,先简单解析一下源码:

一个no函数,定义了一堆黑名单;需要传入post参数e,get参数m,n;一个call_user_func()函数使e成为一个函数,m,n是e这个函数的参数

所以开始进行传参。e传入参数file_put_contents

使用 file_put_contents 函数时,可以指定文件名、要写入的数据以及其他可选标志。例如,向文件写入字符串的基本用法如下:

<?php

$file = 'example.txt';

$data = '这是一些文本';

file_put_contents($file, $data);

?>

如果没有example.txt,那么该段代码的作用就是写了一句话给参数data,将文件名给参数file。最后我们得到一个文件名为example.txt、文件内容为‘这是一些文本’的文件。

然后m传入自己想要的文件名,n传入一句话木马(注意参数m,n中不能含有黑名单的内容。传入成功,然后进行连接直接查看根目录,ls /看到了一个flag的形式的文件,cat它

ez_upload

我们首先看到了灯泡,点亮后可以上传随便上传一个一句话木马有弹窗前端禁用js,再上传没了弹窗,但是显示bad然后试试其他文件,最后尝试出phtml可以蚁剑连接成功

找到flag文件

得到flag

ez_ssrf

从一文中了解SSRF的各种绕过姿势及攻击思路_ssrf绕过-优快云博客

开启环境,看源码

<?php
highlight_file(__FILE__);

//flag在/flag路由中

if (isset($_GET['url'])){
    $url = $_GET['url'];
    
    if (strpos($url, 'http://127.0.0.1') !== 0){
        echo json_encode(["error" => "Only http://127.0.0.1 URLs are allowed"]);
        exit;
    }

    $host = parse_url($url, PHP_URL_HOST);

    $ip = gethostbyname($host);

    $forbidden_ips = ['127.0.0.1', '::1'];
    if (in_array($ip, $forbidden_ips)){
        echo json_encode(["error" => "Access to localhost or 127.0.0.1 is forbidden"]);
        exit;
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'curl/7.68.0');
    
    $response = curl_exec($ch);

    if (curl_errno($ch)){
        echo json_encode(["error" => curl_error($ch)]);
    } else {
        echo $response;
    }

    curl_close($ch);
} else {
    echo json_encode(["error" => "Please provide a 'url' parameter"]);
}
?> 

大致分析:get传参传入url,如果没有这个参数就会返回“error”“Please provide a 'url' parameter”

传入的url参数如果不是http://127.0.0.1开头,就会显示“error” "Only http://127.0.0.1 URLs are allowed"

然后识别端口,如果是127.0.0.1或者::1(ipv6的本地地址)就显示“error”"Access to localhost or 127.0.0.1 is forbidden"

直接访问flag,是不能行

用@分隔开,这里可以看到我们是到达了127.0.0.1,所以这样能行但是仍然是不能直接访问的但是在linux中0.0.0.0也表示127.0.0.1所以我们吧@后的更改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值