[HarekazeCTF2019]Easy Notes(session伪造)

CTFshow-菜狗杯-flask session伪造-抽老婆 阅读详情

在这里插入图片描述

随便起个名字,题目给了附件源码,进去看看

在这里插入图片描述

我不是 admin,看来是和名字叫什么没有关系,看看代码怎么检查的

# index.php
<?php
require_once('init.php');

if (!isset($_GET['page']) || empty($_GET['page'])) {
  $page = 'home';
} else {
  $page = $_GET['page'];
}

if (in_array($page, ['notes', 'note', 'add', 'delete'], true) && !is_logged_in()) {
  redirect('/?page=home');
}

if (in_array($page, ['home', 'flag', 'notes', 'note', 'add', 'delete', 'login'], true)) {
  include('includes/header.php');
  include('pages/' . $page . '.php');
  include('includes/footer.php');
} else {
  redirect('/?page=home');
}
?>
# init.php
<?php
error_reporting(0);

require_once('config.php');
require_once('lib.php');

session_save_path(TEMP_DIR);
session_start();
# export.php
<?php
require_once('init.php');

if (!is_logged_in()) {
  redirect('/?page=home');
}

$notes = get_notes();

if (!isset($_GET['type']) || empty($_GET['type'])) {
  $type = 'zip';
} else {
  $type = $_GET['type'];
}

$filename = get_user() . '-' . bin2hex(random_bytes(8)) . '.' . $type;
$filename = str_replace('..', '', $filename); // avoid path traversal
$path = TEMP_DIR . '/' . $filename;

if ($type === 'tar') {
  $archive = new PharData($path);
  $archive->startBuffering();
} else {
  // use zip as default
  $archive = new ZipArchive();
  $archive->open($path, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
}

for ($index = 0; $index < count($notes); $index++) {
  $note = $notes[$index];
  $title = $note['title'];
  $title = preg_replace('/[^!-~]/', '-', $title);
  $title = preg_replace('#[/\\?*.]#', '-', $title); // delete suspicious characters
  $archive->addFromString("{$index}_{$title}.json", json_encode($note));
}

if ($type === 'tar') {
  $archive->stopBuffering();
} else {
  $archive->close();
}

header('Content-Disposition: attachment; filename="' . $filename . '";');
header('Content-Length: ' . filesize($path));
header('Content-Type: application/zip');
readfile($path);

主要看这段,filename 先是用户名 + - + 随机的8位字符 + . + 文件类型,然后还检查了一下目录穿越,就直接拼接 TEMP_DIR

而 TEMP_DIR 这个目录是和 session文件保存在同一目录的,可以看 init.php,所以思路就是伪造 session 了

然后后面会把笔记的标题内容这些给 json,以 下标_标题.json 的名字返回

在这里插入图片描述

做个测试,发现确实是和我们分析的一样,用户名-随机字符.zip,然后里面的文件就是 下标_标题.json

在这里插入图片描述
在这里插入图片描述

{"title":"paidx0","body":"hello","id":"29ddacf5aeab78a251b1daf72d96e38f525a1bf1e26ea627418b0853df78e94d"}

现在 用户名、文件类型、标题、内容这些是可控的

我们知道 session文件 一般就是 sess_+ 大小写字母和下划线 组成,要伪造 session文件条件也都有

当 user = sess_ 、type = . 、title = |N;admin|b:1; 时,
filename经过检查就变成了 sess_abcdef13454531,type是点和前面的点正好构成两个点被删除掉

在这里插入图片描述
在这里插入图片描述

成功伪造了 session文件,替换掉 phpsessid ,我们就是 admin 了

在这里插入图片描述

flask中的session伪造问题 flask中的session伪造问题,涉及两道ctf题目,一道主要考察session伪造,另一道session伪造与py反序列化结合考察。 阅读详情

相关推荐

Flask之session伪造

前言 本文结合CTF中遇到的题目来说一下session伪造,虽然已经有很多师傅写了,而且写的都特别好,但是还是想自己记录一下,也方便以后复习。ciscn中就有一个session伪造的题,由于之前没有做过就没做出来,还是有点遗憾的。但比较戏剧性的是,上午比赛刚结束,下午刷BUU的时候就遇到了同样的题目。嗐,还是自己太菜,下面就结合BUUCTF中的[HCTF 2018]admin来说一下,文中比较拙劣的地方还请师傅们指正一下。参考文章 正文 本来这个题是有三种解法的,分别是:flask session伪造、Un

TenG的博客 5229

[HarekazeCTF2019]Easy Notes

[HarekazeCTF2019]Easy Notes

shinygod的博客 686

【CTF】buuctf web(五)——[HCTF 2018]admin——flask session伪造+Unicode欺骗

[HCTF 2018]admin 这里有两个选项,点击register注册一个新账户 下面这就算是登进来了 查看源码 提示you are not admin,可能需要登录admin才能获取我们想要的东西

m0_52923241的博客 2517

BUUCTF:[HarekazeCTF2019]Easy Notes 从Session伪造到反序列化漏洞的实战利用

本文详细分析了BUUCTF平台上的[HarekazeCTF2019]Easy Notes题目,从Session伪造到反序列化漏洞的实战利用过程。通过构造恶意用户名和payload,成功利用PHP的Session机制和反序列化漏洞获取管理员权限,最终访问flag.php。文章还提供了自动化攻击脚本和防御建议,帮助读者深入理解Web安全漏洞的利用与防护。

weixin_30522983的博客 222

ctf_notes:通过进行大量CTF收集的笔记,以帮助进一步的CTF

ctf_notes 通过进行大量CTF收集的笔记,以帮助进一步的CTF -------------------------------------------------- --------------------------------------- Windows和* nix: -密码喷涂: crackmapexec [模块] -u [users.txt] -p [passwords.txt] [ip或ip范围] -bruteforce(可能需要更多选项,使用的示例是SSH模块): medusa -h [ip] -U [users.txt] -P [passwords.txt] -M [模块] [ip] 一般注意事项: 已知的主机ssh文件将显示该主机已通过SSH进入的所有主机 -重置中断的终端会话的命令 $>重置 -使用私有rsa而不是密码的ssh: ssh -i

多模型对抗性审查:用AI辩论提升技术文档质量

在软件工程领域,技术文档是团队协作和项目成功的关键基础。传统的文档评审依赖人工经验,存在盲区和效率瓶颈。通过引入多模型对抗性审查机制,不同大语言模型从各自视角对文档进行批判性分析,模拟现实中的专家评审过程。这种技术方法的核心价值在于利用模型间的思维差异,自动发现单个视角容易忽略的边界情况、逻辑漏洞和隐含假设。在应用场景上,特别适合产品需求文档和技术规格书这类需要多角度审视的复杂文档。adversarial-spec工具通过Claude协调多模型辩论,实现从概念到实现的完整文档质量保障,显著提升文档的完整性和

weixin_42531579的博客 379

BUUCTF:[HarekazeCTF2019]Easy Notes

BUUCTF:[HarekazeCTF2019]Easy Notes

末初 · mochu7 2259

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 196

[HarekazeCTF2019]Easy Notes-代码审计

会被替换为空,所以最终文件名就符合session文件的格式了,session文件名可控。目录下面,所以我们可以尝试session伪造一下,伪造一个session文件。如果我们能够控制session文件,就可以拿到flag了。登录之后有几个功能点,可以添加节点,然后使用。我们发现想要拿到flag的条件时。这里可以看到,导出的文件也是写到。会生成16进制字符串,

leekos的博客,分享web安全相关知识~ 461

104基于深度学习识别是AI生成还是真实图片

的可视化界面,通过点击左侧可以加载要识别的检测对象图片,点击中间的识别按钮,会识别出结果,识别结果在右侧显示,当前识别的图片是真实的图片,非假图片。有兴趣的小伙伴也可以自行扩充数据集,或训练自己的数据集。文本,分别存放了图片路径和对应的标签。文本里面的数据,并将训练好的模型也保存在本地。即可加载训练好的模型,真假图片进行识别。本期给大家介绍的是基于深度学习识别是。代码整体是非常简便的,总共三个。个文件夹分别是真图和。

xcvxvfgdfgfh的博客 2261

【WPF】渲染失败甚至程序崩溃,D3DImage.Lock卡死,报COMException异常和UCEERR_RENDERTHREADFAILURE消息

最近遇到WPF程序抛出ystem.Runtime.InteropServices.COMException异常,异常消息UCEERR_RENDERTHREADFAILURE (Exception from HRESULT: 0x88980406),或者先在D3DImage.Lock卡死,然后再出异常的问题。 现象和复现方法 出现了标题中的现象,你很可能有至少两个屏幕,并且可能在你的程序中直接或间接用了如下的库或技术: 1、WpfD3D这个开源库 2、自行使用了WPF中的D3DImage类,实现D3D

几罗星人的专栏 8254

从一道CTF题看PHP Session反序列化:手把手教你复现HarekazeCTF2019的Easy Notes

本文以HarekazeCTF2019的Easy Notes为例,详细解析PHP Session反序列化漏洞的利用过程。从环境搭建、题目分析到攻击链构建,手把手教你如何通过特殊用户名注册、序列化数据注入和Session ID伪造获取管理员权限,并分享防御此类漏洞的实用方案。

weixin_30496999的博客 280

深入YOLOv8内部核心:用RepNCSPELAN4深度重构主干网络,即插即用的高效涨点方案

本文提出了一种改进YOLOv8目标检测模型的方法,通过在YOLOv8中引入RepNCSPELAN模块来提高检测性能。该模块融合了RepVGG重参数化思想与CSP-ELAN结构,在保持推理速度的同时增强特征表达能力。实验结果表明,改进后的RepNCSPELAN-YOLOv8相比原模型在多项指标上均有提升:准确率从0.84提高到0.86,召回率从0.72提升至0.81,mAP50和mAP50-95也分别提高了0.06和0.04。文章详细介绍了模块设计原理和移植步骤,包括配置文件创建、代码修改等关键环节,为YOL

FJN110的博客 187

PWNHUB 五月公开赛+内部赛 writeup(【5月公开赛】MyNotes TemplatePlay 【胖哈勃内部赛|五月,你好】MockingMail)

PWNHUB 【5月公开赛】MyNotes 【5月公开赛】TemplatePlay 【胖哈勃内部赛|五月,你好!】MockingMail 【胖哈勃内部赛|五月,你好!】MISC-Unicode session反序列化伪造 给了源码,admin界面会给flag, "phpmailer/phpmailer": "6.4.1",有个CVE-2021-3603 PHP Mailer 最新代码执行漏洞,漏洞函数是validateAddress(),本体中两个参数都可控

ShenZ的博客 1374

Python实战日志_P4_图书馆Web API服务

目标:使用Flask将图书馆系统升级为RESTful API服务,掌握Web开发基础难度:⭐⭐⭐⭐☆预计学习时间:75分钟前置要求:已完成第3篇《个人图书馆管理系统》

qq_39436086的博客 83

SAP ABAP CDS View 里的日期函数

摘要:本文系统介绍了ABAP CDS日期函数在企业级应用中的关键作用,包括账龄计算、合同续期等业务场景。重点解析了DATS_IS_VALID、DATS_DAYS_BETWEEN等核心函数的语义和使用边界,特别强调on_error四种异常处理策略的选择逻辑。针对系统日期获取,对比了经典CDS的参数注入和View Entity会话变量两种方式。文章还提供了完整可运行的示例代码(包含CDS视图和ABAP程序),帮助开发者快速验证不同版本下的函数行为差异,确保在实际项目中正确应用这些日期处理函数。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 380

buu-day04

0x01[HarekazeCTF2019]Easy Notes 这个题目给了源码,用户又没有后端校验,所以我们很容易想到考session的反序列化,因为(sctf考烂了)。具体分析流程可以看网上的·wp,总结就是,需要伪造以下两点: 文件名 序列化的数据 0x02 [SWPU2019]Web3 访问任意路由发现的token:keyqqqwwweee!@#$%^&*,发现是伪造session。下面就是随便操作了。 .eJyrVspMUbKqVlJIUrJS8g1xLFeq1VHKLI7PyU_Pz

anwen12的博客 721

红队内网攻防渗透:内网渗透之内网对抗:实战项目&VPC1打靶&PHP-RCE&三层代理路由&防火墙上线&密码喷射&域控提权

上面已经抓取到了密码,但是我们通过拓扑分析看,要想上线win10只能通过正向shell,因为win7的防火墙是开的,win10反向主动连接肯定入站规则拦截,而win10自己没有开防火墙,所以win7主动正向连接就可以上线。win7开启了防火墙,入站规则肯定是会拦截我们的请求的,所以我们需要反向上线,让win7主动来连接我们。这里扫描发现是存在ms17010漏洞的,但是想上线192.168.2.142的话,我们没有路由是上线不了的,这里有两种办法:一种msf直接生成后门,另一种cs移植后门到msf。

HACKONE的博客 910

BUUCTF--[HarekazeCTF2019]Easy Notes

<section> <h2>Get flag</h2> <p> <?php if (is_admin()) { echo "Congratulations! The flag is: <code>" . getenv('FLAG') . "</code>"; } else { echo "You are not an admin :("; } ?&gt.

qq_46263951的博客 735

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[ctf web]flask session伪造 伪造admin

flask session 伪造 flask的session是在客户端的,因此可以尝试进行伪造。 伪造需要密钥,一般在app/config.py里面 SESSION解密脚本 #!/usr/bin/env python3 import sys import zlib from base64 import b64decode from flask.sessions import session_json_serializer from itsdangerous import base64_decode def

ShenZ的博客 1831

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

session,PIN码伪造学习(py flask)

学习一下伪造session,PIN码的知识

竹盐笙熙的博客 3491

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[LitCTF 2023]Flag点击就送!(cookie伪造)

cookie伪造、session、flask、Python、json

Welcome To My6n Blog 3559

[HFCTF2020]BabyUpload 1

[HFCTF2020]BabyUpload 1

读书 买花 长大 926

PHP防cookie欺骗,[PHP]php的sessionid可以伪造,不要用来做防刷新处理

如果是基于session或者cookie做防止刷新,那么,我可以伪造状态,用xmlhttp把服务器刷爆代码如下,服务器端的代码在最后一个textarea里./p>Transitional//EN">xmlhttpsrc="fckXML.js">type="text/javascript">rows="10" cols="90" >require_once('echo.php');...

weixin_28717647的博客 531
上一篇: [羊城杯 2020]Blackcat
下一篇: [CSAWQual 2016]i_got_id(Perl ARGV)
paidx0
博客等级 码龄6年 1500粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paidx0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值