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

[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.xdnf.cn/news/12522.html

相关文章:

  • N元语言模型 —— 一文讲懂!!!
  • 设计模式-观察着模式
  • 关于脏读,幻读,可重复读的学习
  • C++中的排列组合算法详解
  • SUSE Linux 发行版全面解析:从开源先驱到企业级支柱
  • element树结构el-tree,默认选中当前setCurrentKey无效
  • golang项目中如何使用私密仓库的扩展包
  • 1.4 Node.js 的 TCP 和 UDP
  • 基于 STM32 的四路 PWM 控制智能小车运动的模块化控制程序
  • PDF图片和表格等信息提取开源项目
  • FastAPI安全机制:从OAuth2到JWT的魔法通关秘籍
  • Web前端基础:JavaScript
  • C++字符串解析2
  • yolov11与双目测距结合,实现目标的识别和定位测距(onnx版本)
  • Docker、Wsl 打包迁移环境
  • |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面
  • pycharm 中文字体报错
  • 从零开始搭建 Pytest 测试框架(Python 3.8 + PyCharm 版)
  • Android Studio 解决首次安装时下载 Gradle 慢问题
  • spring中的@RabbitListener注解详解
  • C++设计模式 - 单例模式
  • Python Copilot【代码辅助工具】 简介
  • AI数据分析在体育中的应用:技术与实践
  • 初识结构体,整型提升及操作符的属性
  • 12.6Swing控件4 JSplitPane JTabbedPane
  • 第六章 进阶18 小杨的困惑
  • 博弈论概述
  • 网络库libhv介绍
  • Selenium自动化测试之弹窗处理
  • [Python学习日记-91] 并发编程之多线程 —— threading 模块、开启线程的方式、线程相关的其他方法