【WEB安全】flask不出网回显方式

本文介绍了在Flask应用中,当目标机器不出网时,如何在debug模式下利用报错信息实现命令回显。通过控制报错来获取回显,而不是直接获取app。实验表明直接import模块获取的app与实际的app不同,而通过sys.modules可以获取已导入模块的属性。但直接添加后门路由会导致debug模式下的报错,需在非debug模式或设置debug=False来成功添加。
摘要由CSDN通过智能技术生成

前言

研究这个问题主要是打比赛的时候遇到了,题目内容大概是这样的

 # app.py
from flask import Flask , request , session , render_template_string , url_for , redirect
import pickle
import io
import sys
import base64
import random
import subprocess
from config import notadmin

app = Flask ( __name__ )

class RestrictedUnpickler ( pickle . Unpickler ):def find_class ( self ,module ,name ):if module in [ 'config' ] and "__" not in name :return getattr ( sys . modules [ module ], name )raise pickle . UnpicklingError ( "'%s.%s' not allowed" % ( module , name ))

def restricted_loads ( s ):"""Helper function analogous to pickle.loads()."""return RestrictedUnpickler ( io . BytesIO ( s )) . load ()

@app.route ( '/' )
def index ():info = request . args . get ( 'name' , '' )if info is not '' :x = base64 . b64decode ( info )User = restricted_loads ( x )return render_templa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值