CTF学习笔记——[HCTF 2018]admin

本文详细记录了参加[HCTF 2018]admin挑战的过程,涉及Flask框架下的session伪造和Unicode欺骗两种解题方法。通过分析源码和利用Flask session加密算法,成功伪造session登录admin账户。同时,利用Unicode转换漏洞注册特殊用户名覆盖原有admin密码。此外,还讨论了弱口令在CTF挑战中的常见应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、[HCTF 2018]admin

1.题目

在这里插入图片描述

2.解题步骤

这个靶场还是很完整的,注册登陆一应俱全,还有留言板。注册和登陆部分尝试了一下,大部分我认知中的注入都被过滤了。于是老老实实注册了个账号。发现里面有个留言板。这不就是师傅们经常攻击的地方吗~
在这里插入图片描述
随便注入的两下没什么反应,看看源码呢~
在这里插入图片描述
嗯?这个注释?
在这里插入图片描述
虽然能猜到这个是网站的源码,但由于没有网页的开发经验,所以很遗憾还是没看出什么门道~看WriteUp!
说实话看完之后有点被震撼到。跟着师傅们把三种做法都过一遍~
这道题的突破口首先是github上的提示flask。

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。[百度百科]

这样来看,这是一道模板注入类型的题目。

然后进行源码审计。
在这里插入图片描述
首先是发现库中有两个账号,可惜密码被加密了~
接下来就是几种登陆admin的方式

(1)flask session伪造

什么是Session?
在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。[百度百科]

在测试靶场网页的时候就发现了,比如登陆之后再刷新网页,他依旧会显示登陆者的名字
在这里插入图片描述
这个功能是靠session实现的。把账号的信息临时储存在我的电脑上(客户端)。只有在关闭浏览器才会销毁session信息。这是一种方便的机制。这里有个大神的博客讲的很好,指路一下~

session要求浏览器必须支持cookie功能,那么对于session的伪造,是否和cookie伪造类似呢?
这道题的session在这个位置:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值