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

[HCTF 2018]admin 1

网上学习了几种方法

方法一:弱口令爆破

先随便注册一个账号登录

查看一下各个页面的源代码,找到提示

可能需要登录一下admin账号

登录界面输入admin密码随便,抓包,发送给intruder,添加爆破位置

添加字典开始爆破

登录后展示flag

方法二:flask session伪造

同样再前端源代码中找到提示

去github上下载 

打开源码,找到index.html,发现确实是当为admin用户时就会输出flag

Flask 是一个轻量级的 Python Web 框架,用于快速开发 Web 应用程序和 API。它被称为“微框架”(Microframework),因为它核心简单且可扩展,不强制依赖特定的数据库、模板引擎或其他组件,开发者可以按需选择插件。

Flask 的 Session 存储在客户端 Cookie 中,Flask 默认将 session 数据(如用户登录状态、临时数据等)直接存储在客户端的浏览器 Cookie 里,而非服务端数据库。客户端可以自由查看或修改 Cookie 内容,存在被伪造或篡改的风险。

Flask 使用 HMAC(密钥散列算法)为 session 数据生成一个签名,并将签名与数据用 . 拼接后存入 Cookie。签名目的是防篡改:服务端收到 Cookie 后会重新计算签名,若数据被篡改(如用户手动修改 Cookie),签名验证会失败,Flask 会拒绝该请求。数据本身是明文(实际是 Base64 编码,可轻松解码还原),客户端可以完全读取 session 的内容(如 {'user_id': 123})。签名仅确保数据完整性,不保护隐私。

上边的意思是再浏览器中获取session后将其解密,修改其中内容再加密替换原有session,就能实现提权

解密脚本:

#!/usr/bin/env python3
import sys
import zlib
from base64 import b64decode
from flask.sessions import session_json_serializer
from itsdangerous import base64_decodedef decryption(payload):payload, sig = payload.rsplit(b'.', 1)payload, timestamp = payload.rsplit(b'.', 1)decompress = Falseif payload.startswith(b'.'):payload = payload[1:]decompress = Truetry:payload = base64_decode(payload)except Exception as e:raise Exception('Could not base64 decode the payload because of ''an exception')if decompress:try:payload = zlib.decompress(payload)except Exception as e:raise Exception('Could not zlib decompress the payload before ''decoding the payload')return session_json_serializer.loads(payload)if __name__ == '__main__':print(decryption(sys.argv[1].encode()))   

运行 

修改name:1—>admin 

加密脚本:网上找的
https://github.com/noraj/flask-session-cookie-manager

伪造session还需要密钥。在config.py里面发现密钥为ckj123

 

放入session

 拿到flag

 方法三:Unicode欺骗

原文链接:BUUCTF | [HCTF 2018]admin - 东坡肉肉君 - 博客园

https://unicode-table.com/en/1D2E/ ,在这个网站上找字符。

1.先注册一个账号 :ᴬᴰᴹᴵᴺ,密码:456

2.修改密码:111,然后退出

3.用账号”admin“,密码:111成功登录

  大致的思路是:在注册的时候  ”ᴬᴰᴹᴵᴺ“ 经过strlower(),转成”ADMIN“ , 在修改密码的时候 ”ADMIN“经过strlower()变成”admin“ , 当我们再次退出登录的时候 ”admin“经过strlower()变成”admin“(没啥卵用,但是你已经知道了一个密码已知的”admin“,而且在index.html中可以看到只要session['name']=='admin',也就是只要用户名是’admin‘就可成功登录了)

http://www.lqws.cn/news/207343.html

相关文章:

  • n8n + AI Agent:AI 自动化生成测试用例并支持导出 Excel
  • NPOI Excel用OLE对象的形式插入文件附件以及插入图片
  • Model Context Protocol (MCP) 是一个前沿框架
  • 多文化软件团队的协作之道:在认知差异中寻找协同的支点
  • 基于Scala实现Flink的三种基本时间窗口操作
  • 20250607-在Ubuntu中使用Anaconda创建新环境并使用本地的备份文件yaml进行配置
  • 网络协议通俗易懂详解指南
  • 交叉熵损失函数和极大似然估计是什么,区别是什么
  • 【数据结构初阶】--算法复杂度的深度解析
  • Canal环境搭建并实现和ES数据同步
  • Web前端基础:JavaScript
  • Go语言堆内存管理
  • 设计模式-建造者模式
  • 备份还原打印机驱动
  • Linux【4】------RK3568启动和引导顺序
  • grep、wc 与管道符快速上手指南
  • 10.Linux进程信号
  • 运维_集运维核心学习
  • ASTRA论文总结
  • Android Studio 解决首次安装时下载 Gradle 慢问题
  • TCP/IP 与高速网络
  • 基于Java Swing的固定资产管理系统设计与实现:附完整源码与论文
  • EMD算法
  • aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain
  • VSCode CUDA C++进行Linux远程开发
  • 【数据结构】详解算法复杂度:时间复杂度和空间复杂度
  • R语言AI模型部署方案:精准离线运行详解
  • Golang——10、日志处理和正则处理
  • PyCharm集成Conda环境
  • Go 语言 sync.WaitGroup 深度解析