[HCTF 2018]admin (三种解法详细详解)

news2024/12/23 17:29:13

目录

信息收集

思路一:弱口令爆破

思路2:垂直越权

代码审计

Unicode欺骗

Unicode 简介

伪造flask session


信息收集

注册登录

然后查看源码

<!-- you are not admin -->

看来需要伪造admin的身份

在changepassword页面查看源代码

<!-- https://github.com/woadsl1234/hctf_flask/ -->

注册admin 用户

回显The username has been registered

思路一:弱口令爆破

由于提供了admin,于是对admin进行爆破即可

拿到admin的密码直接登录即可获得flag

思路2:垂直越权

我们先下载hctf_flask,发现这是python的框架

代码审计

  • 秘钥
 
  • nodeprep.prepare函数

 

 

Unicode欺骗

  • 原理

 这里用到了nodeprep.prepare函数,而nodeprep是从twisted模块中导入的from twisted.words.protocols.jabber.xmpp_stringprep import nodeprep,在requirements.txt文件中,发现这里用到的twisted版本是Twisted==10.2.0,而官网最新版本为19.2.0(2019/6/2),版本差距这么大,估计是存在什么漏洞。

这里原理就是利用nodeprep.prepare函数会将unicode字符转换成A,而A在调用一次nodeprep.prepare函数会把A转换成a
所以当我们用ᴬdmin注册的话,后台代码调用一次nodeprep.prepare函数,把用户名转换成Admin,我们用ᴬdmin进行登录,可以看到index页面的username变成了Admin,证实了我们的猜想,接下来我们就想办法让服务器再调用一次nodeprep.prepare函数即可。

  • Unicode 简介

Unicode 是国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换

Letter Capital A

Unicode库

注册一个账号 :ᴬᴰᴹᴵᴺ;修改密码为123456然后退出,用账号”admin“,密码:123456成功登录

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

伪造flask session

  • 简介

一、配置SECRET_KEY

因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。

配置方法一:

新建一个config.py的文件配置secret_key

配置方法二:

直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的
main.py

找到config.py,默认密钥为ckj123

上梯子在github寻找加解密的脚本

加解密脚本在github的flask_session_cookie_manager

在kali上git脚本

git clone https://github.com/noraj/flask-session-cookie-manager.git 

  • 查看说明

Encode

usage: flask_session_cookie_manager{2,3}.py encode [-h] -s <string> -t <string>

optional arguments:
  -h, --help            show this help message and exit
  -s <string>, --secret-key <string>
                        Secret key
  -t <string>, --cookie-structure <string>
                        Session cookie structure

Decode

usage: flask_session_cookie_manager{2,3}.py decode [-h] [-s <string>] -c <string>

optional arguments:
  -h, --help            show this help message and exit
  -s <string>, --secret-key <string>
                        Secret key
  -c <string>, --cookie-value <string>
                        Session cookie value

 开始解密

{'_fresh': True, '_id': b'1937acdfca51734654325bb3cba9a9c452691136d6e7b9023bd1fe8f3ab9359cc89c463b5aeac3cfbf1e84253385bd78d81c7cf9fc64ec5945c99c4f1dce0d6d', 'csrf_token': b'95304baadecae6a9070dd13c25491ecc73924a87', 'image': b'qRBT', 'name': 'xiao', 'user_id': '11'}

将xaio改为admin进行加密

{'_fresh': True, '_id': b'1937acdfca51734654325bb3cba9a9c452691136d6e7b9023bd1fe8f3ab9359cc89c463b5aeac3cfbf1e84253385bd78d81c7cf9fc64ec5945c99c4f1dce0d6d', 'csrf_token': b'95304baadecae6a9070dd13c25491ecc73924a87', 'image': b'qRBT', 'name': 'admin', 'user_id': '11'}

.eJw9kMGKwjAURX9leGsXttqN4MKZ2qLwElpSQ96mqK02SeNAVUYj_vtkHHB94dxz7wPqw9CeO5hdhms7glo3MHvAxw5mgMJ6FmeGcjJKVDfmccxMNUa_ipRbeRWvOy6XifJFhEYlKJaeuSIm0WguFneM1xYl9TxXXslVgr5KVIxTLv84TDOZ9Upi4JAmk_U8Le5MoOfpRlO6n1J6vCnfGDK9C4QxSYy4KCLlbegsHcrSkPi0oXMOzxHsz8Ohvnzb9vSewEXlMS21kpklyToS1AW1CealRcEMhjlcBI0YJ-jtneXLKfuZv3DabY_tm7TfrL82i__ktHUhgG3j9AlGcD23w-s3iCJ4_gJTWWz3.Y8YWYQ.e6ZpyA3vyA_kVIKn2WvUZyB9o5U

插件修改cookie,刷新登录成功拿到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 语法基础课8 —— STL/位运算和常用库函数

文章目录STL1. #include\<vector>(尾部增删)(1) 声明(2) size/empty(3) clear(4) 迭代器(iterator)(5) begin/end(遍历)(6) front/back(7) push_back()/pop_back()2. #include\<queue>(队列先进先出)(1) 声明(2) 循环队列 queue(队列结构)(3) 优先队列 priority_qu…

基于Python分析气象数据教程-1

前言本笔记介绍了如何使用 Python、pandas 和 SciPy 对天气数据进行基本分析。 它不包含对气象科学的贡献&#xff0c;但说明了如何生成简单的图和基本模型来拟合一些真实的物理观测。一、相关库引入import numpy import scipy.stats import pandas import matplotlib.pyplot a…

【零基础】学python数据结构与算法笔记13-贪心算法

文章目录前言80.贪心算法&#xff08;新一章&#xff1a;算法进阶&#xff09;81.分数背包82.分数背包实现83.数字拼接问题84.数字拼接问题实现85.活动选择问题86.活动选择问题实现87.贪心算法总结总结前言 学习python数据结构与算法&#xff0c;学习常用的算法&#xff0c; b…

LeetCode(Array)1656. Design an Ordered Stream

1. 问题 There is a stream of n (idKey, value) pairs arriving in an arbitrary order, where idKey is an integer between 1 and n and value is a string. No two pairs have the same id. Design a stream that returns the values in increasing order of their IDs b…

2023年网络安全比赛--网页渗透测试中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问服务器网站目录1,根据页面信息完成条件,将页面中的flag提交; 2.访问服务器网站目录2,根据页面信息完成条件,将页面中的flag提交; 3.访问服务器网站目录3,根据页面信息完成条件,将页面中的flag提交; 4.访问服务器网…

【Java】流式编程学习笔记

文章目录一、流简介二、创建流2.1 由值创建流&#xff1a;of2.2 由列表创建流&#xff1a;stream2.3 由 Builder 创建流&#xff1a;build2.4 由文件生成流&#xff1a;lines2.5 由函数生成流2.5.1 迭代&#xff08;如果不做限制&#xff0c;就是创建无限流&#xff09;&#x…

线性结构之单链表详解

文章目录前言一.单链表的结构体二、单链表的基本接口1.SListMalloc&#xff08;申请节点&#xff09;2.SListPushBack&#xff08;尾插&#xff09;3.SListPushFront&#xff08;头插&#xff09;4.SListPopBack&#xff08;尾删&#xff09;5.SListPopFront&#xff08;头删&a…

0115 作用域,对象

作用域意义&#xff1a;一段代码中所用到的名字不总是有效可用的&#xff0c;限定这个名字的可用性代码范围全局作用域全局有效&#xff0c;作用所有代码局部作用域局部有效&#xff0c;作用于函数内的代码环境&#xff0c;和函数有关也称函数作用域块级作用域在大括号{}有效&a…

Docker中安装Centos

window版的docker 1.cmd拉取centos镜像 docker pull centos2.启动centos容器&#xff0c;并把docker上centos的22端口映射到本机50001端口(端口号可以自己指定) 3.进入到Centos容器 通过docker命令,查看当前存在的镜像或者容器 查看镜像: docker images查看容器: docker …

js如何实现随机数切换

前言在一些电商网站,或一些活动页上,看到一些特效,比如:抽奖时,点击图片,实现图片的随机切换,数字的随机切换等,为了吸引用户的注意力,增加网页的互动性,这个效果是怎么实现的呢01具体示例https://coder.itclan.cn/fontend/js/14-click-num-suiji/点击文末左下角阅读原文,即可查…

MySQL三大日志(binlog、redo log和undo log)详解

MySQL三大日志binlog、redo log和undo log详解1.redo logredo log概述刷盘时机innodb_flush_log_at_trx_commit0innodb_flush_log_at_trx_commit1innodb_flush_log_at_trx_commit2日志文件组2.binlogbinlog 概述记录格式写入机制刷盘时机3.两阶段提交4.undo log5.总结1.redo lo…

SSL和TLS协议如何提供身份验证、机密性和完整性

SSL 和 TLS 协议使两方能够相互识别和验证&#xff0c;并以机密性和数据完整性进行通信。SSL 和 TLS 协议通过 Internet 提供通信安全性&#xff0c;并允许客户端/服务器应用程序以保密和可靠的方式进行通信。这些协议有两层&#xff1a;记录协议和握手协议&#xff0c;它们位于…

要命!我篡改了系统命令惊现事故,竟要扣我年终奖-Golang-cobra

打工还是要打工的。。我最后也没发出去。 紧急处理以后&#xff0c;现在写复盘&#xff0c;大家随我看看我到底是在学习哪些内容。 &#xff08;以上内容纯属虚构&#xff0c;如有雷同纯属巧合&#xff09; 简介 之前我们讲过pflag和os.Args&#xff0c;现在说说cobra这个命令行…

如何将SQL Server数据从表导出到CSV文件

在本文中,我们将使用四种不同的工具将表从SQL Server导出到.csv文件。此外,你将学习如何将带有或不带有头的SQL查询结果导出到.csv文件。 SQL Server数据从表导出到CSV文件 使用SQL Server Management Studio将SQL结果导出到具有或不具有标题的CSV文件一、不带标题二、带标题…

图形编辑器:图形和辅助线绘制的坐标问题

大家好&#xff0c;我是前端西瓜哥。今天看看绘制图形和辅助线时&#xff0c;坐标转换的一些注意点。 项目地址&#xff0c;欢迎 star&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a; https://blog.fstars.wang/app/suika/ 先回顾一下之前讲的视口坐标和场…

docker镜像与容器实践

一、引子 镜像和容器是不同的概念&#xff0c;本文主要是为了通过实践来强化对这两种不同概念的理解。 二、安装docker 安装docker&#xff0c;执行以下命令即可&#xff1a; # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置国内源 yum-co…

显示Linux系统上的服务

init 和 systemd 都是 Linux的 init 守护进程&#xff0c;systemd出现较晚&#xff0c;最近的 Linux 发行版中很常用。init 使用service命令管理服务&#xff0c;而Systemd用systemctl命令管理服务。init 和 systemd 都是 Linux的 init 守护进程&#xff0c;即使你的 Linux 系统…

Maven3.8.*系列 settings.xml详解

文章目录文末,拿完整Settings配置文件设置参考介绍简要概述设置详细信息简单的价值观插件组服务器密码加密的镜像代理配置文件激活性能库插件的储存库活动概况直达文末,拿完整Settings配置文件结语文末,拿完整Settings配置文件 设置参考 介绍 简要概述 的 settings 元素 set…

返乡上云图

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

PicGo+Github搭建图床

文章目录一、Github仓库创建二、配置PicGo三、实际体验四、PicGo 2.3.1参考资料一、Github仓库创建 PS&#xff1a;它只会显示一次&#xff0c;所以最好把它复制下来到你的备忘录存好&#xff0c;方便下次使用&#xff0c;否则下次有需要重新新建&#xff1b; 二、配置PicGo …