写一个用于CTF比赛的WAF通用防御脚本,使用Python编写,包含目前比赛主流的防御措施
时间: 2024-12-13 15:16:29 浏览: 11
编写一个通用的Web应用程序防火墙(WAF)防御脚本,用于CTF比赛,需要涵盖常见的攻击防护策略。以下是一个简化的示例,使用Python的`Flask`框架和`requests`库模拟基本功能:
```python
from flask import Flask, request, jsonify
import re
app = Flask(__name__)
# 白名单IP列表
whitelist_ips = ["192.168.0.1", "127.0.0.1"]
# 禁止的SQL关键字列表
sql_keywords = ['select', 'insert', 'update', 'delete']
@app.route('/', methods=['GET', 'POST'])
def waf():
# 检查请求来源是否在白名单内
client_ip = request.remote_addr
if client_ip not in whitelist_ips:
return jsonify({"status": "error", "message": "Access denied - IP not whitelisted"}), 403
# 检查请求内容是否存在恶意SQL关键字
request_data = request.get_data(as_text=True)
for keyword in sql_keywords:
if re.search(keyword, request_data, re.IGNORECASE):
return jsonify({"status": "blocked", "message": "Suspicious SQL query detected"}), 403
# 正常处理请求
# 这里可以添加实际业务逻辑处理
response_data = {"status": "success", "message": "Request accepted"}
return jsonify(response_data)
if __name__ == '__main__':
app.run(debug=False, host='0.0.0.0')
#
阅读全文