当前位置: 首页 > 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‘就可成功登录了)

相关文章:

  • vue3单独封装表单校验函数
  • 基于算法竞赛的c++编程(21)cin,scanf性能差距和优化
  • 题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形
  • 总结html标签之button标签
  • Global Security Markets 第 10 章衍生品知识点总结​
  • 欣佰特科技亮相2025张江具身智能开发者大会:呈现人形机器人全链条解决方案
  • code-server安装使用,并配置frp反射域名访问
  • 磁铁的磁极与方向有什么关系
  • 主流信创数据库对向量功能的支持对比
  • 【教学类-103-02】20250607立体纸盘(3边形-22边形,角度30、45……75、90)
  • Go语言进阶④:Go的数据结构和Java的有啥不一样
  • 力扣-17.电话号码的字母组合
  • LeetCode--24.两两交换链表中的结点
  • Java 常用 API 分类总结(算法竞赛考前速记篇)- 适用于算法竞赛(如 CCF CSP、蓝桥杯、NOI)
  • 音频剪辑软件少之又少好用
  • 13-Oracle 23ai Vector Search VECTOR数据类型和实操
  • 计算机组成原理:计算机发展历程
  • 东芝Toshiba e-STUDIO2110AC打印机信息
  • 基于IDA的bindiff使用
  • BeckHoff(倍福) PLC 顺控器执行超时故障在北尔触摸屏显示的实现
  • 医院网站建设 费用/长尾关键词在线查询
  • 外贸网站建设软件/百度北京总部电话
  • 企业网站建设哪家好/站长统计app软件大全
  • 淘宝客怎样做自己的网站推广/seo点击器
  • 苏州制作网站的公司/网络营销工程师是做什么的
  • 门户网站开发文档/广州seo黑帽培训