[NSSRound#6 Team]check(V1)

admin 2025年3月26日08:56:54评论3 views字数 1844阅读6分8秒阅读模式

[NSSRound#6 Team]check(V1)

题目

题目描述

  • 题目描述详情

题目源码

# -*- coding: utf-8 -*-from flask import Flask,requestimport tarfileimport osapp = Flask(__name__)app.config['UPLOAD_FOLDER'] = './uploads'app.config['MAX_CONTENT_LENGTH'] = 100 * 1024ALLOWED_EXTENSIONS = set(['tar'])def allowed_file(filename):    return '.' in filename and         filename.rsplit('.'1)[1].lower() in ALLOWED_EXTENSIONS@app.route('/')def index():    with open(__file__, 'r'as f:        return f.read()@app.route('/upload', methods=['POST'])def upload_file():    if 'file' not in request.files:        return '?'    file = request.files['file']    if file.filename == '':        return '?'    print(file.filename)    if file and allowed_file(file.filename) and '..' not in file.filename and '/' not in file.filename:        file_save_path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)        if(os.path.exists(file_save_path)):            return 'This file already exists'        file.save(file_save_path)    else:        return 'This file is not a tarfile'    try:        tar = tarfile.open(file_save_path, "r")        tar.extractall(app.config['UPLOAD_FOLDER'])    except Exception as e:        return str(e)    os.remove(file_save_path)    return 'success'@app.route('/download', methods=['POST'])def download_file():    filename = request.form.get('filename')    if filename is None or filename == '':        return '?'    filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)    if '..' in filename or '/' in filename:        return '?'    if not os.path.exists(filepath) or not os.path.isfile(filepath):        return '?'    with open(filepath, 'r'as f:        return f.read()@app.route('/clean', methods=['POST'])def clean_file():    os.system('/tmp/clean.sh')    return 'success'if __name__ == '__main__':    app.run(host='0.0.0.0', debug=True, port=80)

思路

  • 很明显是上传一个tar包,包里面有个软连接链接到/flag,这样解压后可以访问获取flag,download这个不能跟目录穿越,直接访问软连接就可以获得flag

EXP

  • 具体攻击代码

总结

  • [NSSRound#6 Team]check(V1)

原文始发于微信公众号(BlueIris):[NSSRound#6 Team]check(V1)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月26日08:56:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [NSSRound#6 Team]check(V1)http://cn-sec.com/archives/3885273.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息