Flask 专题

[CISCN2019 总决赛 Day1 Web3]Flask Message Board

查看session解密
在这里插入图片描述

但不知道密钥,题目说FLASK,那肯定就是找密钥,发现输入什么都没有显示,只有author那里有回显在版上,所以尝试sstl,{{config}}找到密钥

在这里插入图片描述
扫目录发现有admin进入admin界面,发现有源码提示,有模型下载还有源码,但发现源码是乱的,但因为有规律,可以用脚本复原,进行拼接。
抄的
位置复原

import requests
url = 'http://xxx.cn/admin/source_thanos'
r = requests.get(url)
source = r.text
for j in range(10):r = requests.get(url)for i in range(len(source)):if source[i].isspace():source = source[:i] + r.text[i] + source[i+1:]
print(source)

源码

# coding=utf8
from flask import Flask, flash, send_file
import random
from datetime import datetime
import zipfile# init app
app = Flask(__name__)
app.secret_key = ''.join(random.choice("il1I|") for i in range(40))
print(app.secret_key)from flask import Response
from flask import request, session
from flask import redirect, url_for, safe_join, abort
from flask import render_template_stringfrom data import datapost_storage = data
site_title = "A Flask Message Board"
site_description = "Just leave what you want to say."# %% tf/load.py
import tensorflow as tf
from tensorflow.python import pywrap_tensorflowdef init(model_path):'''This model is given by a famous hacker !'''new_sess = tf.Session()meta_file = model_path + ".meta"model = model_pathsaver = tf.train.import_meta_graph(meta_file)saver.restore(new_sess, model)return new_sessdef renew(sess, model_path):sess.close()return init(model_path)def predict(sess, x):''':param x: input number xsess: tensorflow session:return: b'You are: *''''y = sess.graph.get_tensor_by_name("y:0")y_out = sess.run(y, {"x:0": x})return y_outtf_path = "tf/detection_model/detection"
sess = init(tf_path)# %% tf enddef check_bot(input_str):r = predict(sess, sum(map(ord, input_str)))return r if isinstance(r, str) else r.decode()def render_template(filename, **args):with open(safe_join(app.template_folder, filename), encoding='utf8') as f:template = f.read()name = session.get('name', 'anonymous')[:10]  # Someone call me to add a remembered_name function# But I'm just familiar with PHP !!!# return render_template_string(#     template.replace('$remembered_name', name)#         .replace('$site_description', site_description)#         .replace('$site_title', site_title), **args)return render_template_string(template.replace('$remembered_name', name), site_description=site_description, site_title=site_title, **args)@app.route('/')
def index():global post_storagesession['admin'] = session.get('admin', False)if len(post_storage) > 20:post_storage = post_storage[-20:]return render_template('index.html', posts=post_storage)@app.route('/post', methods=['POST'])
def add_post():title = request.form.get('title', '[no title]')content = request.form.get('content', '[no content]')name = request.form.get('author', 'anonymous')[:10]try:check_result = check_bot(content)if not check_result.endswith('Human'):flash("reject because %s or hacker" % (check_result))return redirect('/')post_storage.append({'title': title, 'content': content, 'author': name, 'date': datetime.now().strftime("%B %d, %Y %X")})session['name'] = nameexcept Exception as e:flash('Something wrong, contact admin.')  return redirect('/')@app.route('/admin/model_download')
def model_download():'''Download current model.'''if session.get('admin', True):try:with zipfile.ZipFile("temp.zip", 'w') as z:for e in ['detection.meta', 'detection.index', 'detection.data-00000-of-00001']:z.write('tf/detection_model/'+ e, arcname=e)return send_file("temp.zip", as_attachment=True, attachment_filename='model.zip')except Exception as e:flash(str(e))return redirect('/admin')else:return "Not a admin **session**. <a href='/'>Back</a>"@app.route('/admin', methods=['GET', 'POST'])
def admin():global site_description, site_title, sessif session.get('admin', False):print('admin session.')if request.method == 'POST':if request.form.get('site_description'):site_description = request.form.get('site_description')if request.form.get('site_title'):site_title = request.form.get('site_title')if request.files.get('modelFile'):file = request.files.get('modelFile')# print(file, type(file))try:z = zipfile.ZipFile(file=file)for e in ['detection.meta', 'detection.index', 'detection.data-00000-of-00001']:open('tf/detection_model/' + e, 'wb').write(z.read(e))sess = renew(sess, tf_path)flash("Reloaded successfully")except Exception as e:flash(str(e))return render_template('admin.html')else:return "Not a admin **session**. <a href='/'>Back</a>"@app.route('/admin/source') # <--here ♂ boy next door
def get_source():return open('app.py', encoding='utf8').read()@app.route('/admin/source_thanos')
def get_source_broken():'''Thanos is eventually resurrected,[21] and collects the Infinity Gems once again.[22]He uses the gems to create the Infinity Gauntlet, making himself omnipotent,and erases half the living things in the universe to prove his love to Death.'''t = open('app.py', encoding='utf8').read()tt = [t[i] for i in range(len(t))]ll = list(range(len(t)))random.shuffle(ll)for i in ll[:len(t) // 2]:if tt[i] != '\n': tt[i] = ' 'return "".join(tt)

TensorFlow模型分析(不懂,插个🚩,以后有再看)

[WesternCTF2018]shrine

发现源码,可以在路径上进行sstl,但这题貌似没发执行shell,因为禁了(),但这里把flag放在了config,config还是可以看的

#这里有两个函数包含了`current_app`全局变量,`url_for`和`get_flashed_messages`
{url_for.__globals__}
{{url_for.__globals__['current_app'].config}}{{get_flashed_messages.__globals__['current_app'].config}}

可以看到flag

本来还有两题,但不是太难了就是环境不支持。。。就先这样,以后的题目我都会以专题的形式写出

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

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

相关文章

6个免费的3D模型网站,助你3D建模渲染不用愁

​随着3D建模和渲染技术的不断发展&#xff0c;其重要性也日益增加。创建新的3D模型往往需要耗费大量时间&#xff0c;因此&#xff0c;本文整理了六个顶尖的免费3D模型资源网站&#xff0c;以便您能够方便地获取3D模型&#xff0c;大幅减少建模时间。这些资源有助于您更快地开…

高铁地铁智慧公厕方案与案例介绍

随着轨道交通的快速发展&#xff0c;高铁、地铁、火车成为人们出行的主要交通工具。而在这种规划建设要求极具的场所&#xff0c;信息化、智慧化的管理系统部署必不可少&#xff0c;智慧公厕作为公共设施的重要组成部分&#xff0c;建设和管理也越来越受到重视。智慧公厕系统的…

elasticsearch(学习笔记)(分布式搜索引擎)(黑马)(kibana操作)

一、索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 1、mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型…

自动驾驶最强学习资料

自动驾驶最强学习资料 资料说明和获取方式 本资料包是作者吐血整理的干货&#xff01;目前为止应该是非常全的自动驾驶资料包&#xff01;是作者五年自动驾驶算法工程师的 积累&#xff01; 以上干货资料并不全是作者自己原创&#xff0c; 是作者作为五年自动驾驶算法工程的…

春招_程序员怎么写简历_写简历网站

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…

c++的类型转换和IO流

类型转换和IO流 一、c语言的类型转换 int i 1; // 隐式类型转换&#xff0c;这些类型都是表示数据的大小&#xff0c;整型家族包括char相互转化是因为他们只是范围不一样&#xff0c;浮点数与整型支持是因为浮点数本质也是表示数据的大小&#xff0c;只是加了精度而已&#…

vscode-server的搭建方法

一、配置服务器端口支持 1、开放端口&#xff1a; 2、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service二、配置code-server到服务器上** 1、下载code-server-4.22.0-linux-amd64.tar.gz到本地&#xff08;可下载最新的版本&#xff09;&a…

多人语聊房社交APP开发需要有哪些功能呢?

随着移动互联网的快速发展&#xff0c;社交APP已经成为人们日常生活中不可或缺的一部分。而随着语音社交的兴起&#xff0c;多人语聊房社交APP也逐渐受到了用户的青睐。在开发多人语聊房社交APP时&#xff0c;需要具备一系列功能&#xff0c;以满足用户的需求并提供良好的使用体…

Linux的一些常用指令

一、文件中 r w x - 的含义 r&#xff08;read&#xff09;是只读权限&#xff0c; w&#xff08;write&#xff09;是写的权限&#xff0c; x&#xff08;execute&#xff09;是可执行权限&#xff0c; -是没有任何权限。 二、一些指令 # 解压压缩包 tar [-zxvf] 压缩包名…

知名Web3 风险投资公机构Hack VC 四位合伙人将亲临hack.summit()2024亚洲区块链开发者大会

2024-03-14 15:32:24 知名web3风险投资机构Hack VC的四位合伙人——Alex Pack、Ed Roman、Roshun Patel和Rodney Yesep将亲临hack.summit()2024亚洲区块链开发者大会&#xff0c;这一盛事将于2024年4月9日至10日在香港数码港举行。 此次大会由Hack VC主办&#xff0c;并得到Alt…

AI预测福彩3D第8弹【2024年3月14日预测--新算法重新开始计算第五次测试】

兄弟们&#xff0c;感觉要起飞了&#xff01;截止昨天&#xff0c;经过新修正的算法进行3D预测&#xff0c;已经连续3次命中7码了&#xff0c;甚至6码或5码就能命中&#xff01; 昨天的开奖是 3 4 9,我的预测结果可参加上一篇文章 继续乘胜追击&#xff0c;再接再厉&#xff0…

Linux-vim显示乱码

Linux运维工具-ywtool 目录 一.问题二.解决2.1 编辑VIM的配置文件2.2 添加以下内容 一.问题 用vim编辑的时候,中文显示乱码 二.解决 2.1 编辑VIM的配置文件 vim ~/.vimrc #如果这个文件不存在,创建一个即可2.2 添加以下内容 添加完成以后就不会在出现中文乱码了 set fil…

ECRS软件:通过视频分析实现精益生产的利器

在追求高效生产的现代工业体系中&#xff0c;精准的数据分析和科学的流程管理是企业不可或缺的核心竞争力。ECRS软件作为一款专业的工时分析工具&#xff0c;通过视频分析的方式&#xff0c;为企业的精益生产提供了有力支持。使用ECRS软件&#xff0c;企业只需完成三项基础操作…

spring-authorization-server如何通过JWK Set Endpoint来获取公钥并验签的

参考文档&#xff1a;spring-authorization-server【版本1.2.2】 问题 在spring-authorization-server官方文档中提供了JWK Set Endpoint相关介绍&#xff0c;此端点主要返回JWK Set &#xff0c;此JWK Set包含了授权服务提供的所有公钥集&#xff0c;具体可通过访问端点&…

纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

大家好&#xff0c;龙年报喜&#xff0c;大地回春&#xff0c;作为程序员&#xff0c;以代码之名&#xff0c;表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙&#xff0c;祝大家“码”上“鸿”福到&#xff01; 创建应用 选择空模板…

FreeRTOS 的任务创建和删除

任务创建是我们第一个要学习的 API 函数&#xff0c;同时它也是 FreeRTOS 众多 API 函数中最复杂的一个&#xff0c;但是没办法&#xff0c;这个函数是我们第一个要学习的&#xff0c;也是非常重要的。 那么来看一下咱们本节的主要内容有哪些&#xff1a; 首先我们来介绍一下…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…

Linux系统部署Swagger Editor结合内网穿透实现公网管理本地接口文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xf…

一种基于宏和serde_json实现的rust web中统一返回类

本人rust萌新&#xff0c;写web碰到了这个&#xff0c;基于ChatGPT和文心一言学了宏&#xff0c;强行把这玩意实现出来了&#xff0c;做个学习记录&#xff0c;如果有更好的方法&#xff0c;勿喷。 先看效果&#xff0c;注意不支持嵌套&#xff0c;且kv映射要用>(因为它这个…

Hadoop大数据应用:Yarn 节点实现扩容与缩容

目录 一、实验 1.环境 2.Yarn 节点扩容 3.Yarn 节点缩容 二、问题 1.yarn启动服务报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;已部署&#xff09; SecondaryNameNode &#xff08;已部署&…