WP020——CTF赛题解析-脚本

时效性

2025年8月8日

题目来源

秋名山车神 - Bugku CTF平台

题目描述

Write UP

1、直接使用脚本进行计算和提交,在两秒钟内进行数值提交即可

python 复制代码
import requests
import re
from bs4 import BeautifulSoup
import time

def calculate_expression(expression):
    """安全计算数学表达式"""
    # 清理表达式:移除非数学字符
    cleaned = re.sub(r'[^\d+\-*]', '', expression)
    # 分割数字和运算符
    parts = re.split(r'([+\-*])', cleaned)
    # 过滤空字符串
    parts = [p for p in parts if p]
    
    # 先处理所有乘法
    i = 0
    while i < len(parts):
        if parts[i] == '*':
            left = int(parts[i-1])
            right = int(parts[i+1])
            result = left * right
            parts = parts[:i-1] + [str(result)] + parts[i+2:]
            i -= 1
        else:
            i += 1
    
    # 再处理加减法
    result = int(parts[0])
    for i in range(1, len(parts), 2):
        operator = parts[i]
        num = int(parts[i+1])
        if operator == '+':
            result += num
        elif operator == '-':
            result -= num
    
    return result

def main(url):
    for attempt in range(3):  # 最多尝试3次
        try:
            session = requests.Session()
            
            # 步骤1: 获取页面
            get_response = session.get(url)
            if get_response.status_code != 200:
                print(f"获取页面失败,状态码: {get_response.status_code}")
                continue
                
            # 步骤2: 解析表达式
            soup = BeautifulSoup(get_response.text, 'html.parser')
            div_content = soup.find('div').text.strip()
            expression = div_content.split('=')[0].replace('?', '').strip()
            
            # 步骤3: 计算表达式
            start_time = time.time()
            result = calculate_expression(expression)
            calc_time = time.time() - start_time
            
            # 步骤4: 发送POST请求
            post_data = {'value': str(result)}
            post_response = session.post(url, data=post_data)
            
            # 输出结果
            print(f"尝试 #{attempt + 1}")
            print(f"表达式: {expression}")
            print(f"计算结果: {result}")
            print(f"计算耗时: {calc_time:.4f}秒")
            print("\nPOST响应内容:")
            print(post_response.text)
            print("\n" + "="*50 + "\n")
            
            # 检查是否成功
            if "flag" in post_response.text.lower() or "success" in post_response.text.lower():
                print("成功提交答案!")
                return
                
        except Exception as e:
            print(f"尝试 #{attempt + 1} 出错: {str(e)}")
            time.sleep(0.5)  # 短暂等待后重试

if __name__ == "__main__":
    target_url = "http://117.72.52.127:18350/"  # 替换为实际URL
    main(target_url)

2、按照网上的说法,可以对Cookie生命周期进行修改然后进行计算,不过我没有进行尝试

相关推荐
梦子yumeko7 小时前
在集群级别应用 Pod 安全标准
安全
Deepsleep.8 小时前
前端常见安全问题 + 防御方法 + 面试回答
前端·安全·面试
flyliu8 小时前
常见的攻击方式有哪些,如何防御
前端·安全
CaracalTiger13 小时前
网站漏洞早发现:cpolar+Web-Check安全扫描组合解决方案
java·开发语言·前端·python·安全·golang·wpf
Bruce_Liuxiaowei16 小时前
网络端口与服务对应表 - 白帽子安全参考指南
网络·windows·安全·web安全·ctf
科技小郑1 天前
吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台
大数据·网络·安全·信息与通信·吱吱企业通讯
计算机小手1 天前
内网穿透系列十二:一款基于 HTTP 传输和 SSH 加密保护的内网穿透工具 Chisel ,具备抗干扰、稳定、安全特性
经验分享·网络协议·安全·docker·开源软件
悟能不能悟1 天前
REST API 是无状态的吗,如何保障 API 的安全调用?
安全
AI_gurubar1 天前
从“安全诉讼”说起:奖励模型(Reward Model)是LLM对齐的总阀门(全视角分析)
人工智能·安全
浩浩测试一下1 天前
Windows驱动开发与双机调试环境[驱动开发环境配置高阶]
安全·web安全·网络安全·密码学·网络攻击模型·安全架构