首页 > 其他分享 >CTFer成长记录——CTF之Web专题·buuctf—admin

CTFer成长记录——CTF之Web专题·buuctf—admin

时间:2023-08-10 20:26:12浏览次数:59  
标签:Web admin py flask CTF session cookie SESSION

一、题目链接

https://buuoj.cn/challenges#[HCTF%202018]admin

二、解法步骤

  本题页面十分简单,

  在源代码中发现:

  猜测需要用admin进行登陆,如果在注册模块用admin进行注册的话,会提示已被注册,那么可以肯定与admin有关。

  在登陆页面用弱口令试试,发现不行。

  那么注册账号,在修改密码的网页源代码发现:

  访问该网址,下载源码发现是flask,python的框架:

  解法一:unicode覆盖

  通过代码审计,发现在注册时候使用了nodeprep.prepare()函数,这个函数曾有个unicode欺骗漏洞:nodeprep.prepare函数会将unicode字符转换成A,而A在调用一次nodeprep.prepare函数会把A转换成a。所以我们需要想办法调用两次该函数,一次绕过重复用户检查,另一次将大写改成小写进行重复用户覆盖:

  其方式是:使用ᴬᴰᴹᴵᴺ进行注册,

登录后发现成了大写

然后用进行密码修改:

  然后用admin进行登录:

解法二:flask的session伪造

  在对网页进行抓包的时候可以发现其中还有session信息:

  本题核心是用admin的身份进行登陆,最后拿到flag,而像cookie,session,token这些就是识别用户的。之前已经知道该网页使用flask框架构成的,其中就存在session伪造漏洞:

  简介:flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。新建一个config.py的文件配置secret_key;直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的,main.py

  在刚才的github上找到config.py文件:

  发现默认密钥是:ckj123,然后在kali中git解密脚本(需要梯子):git clone https://github.com/noraj/flask-session-cookie-manager.git 

  使用方法:python3 flask_session_cookie_manager.py decode -s "SECRET_KEY" -c "SESSION",SESSION的获取可以通过抓包:

{'_fresh': True, '_id': b'aa2f3880e10d7de7d5929f922bc7dd299f4b78e3fdca2b4870f82f312b38657e49a8c9d178719d06f7dcc42f609253aa1ee3173cc2bd305d368255b2ee7b164a', 'csrf_token': b'1cfacd29e9df8172fbd80437e8de8bdecbbe9e64', 'image': b'aKkt', 'name': 'abc', 'user_id': '10'}

  最后解码结果,然后把name中的abc换成admin:

  然后进行加密:python3 flask_session_cookie_manager.py encode -s "SECRET_KEY" -t "解密的SESSION结构"

   把这串SESSION代替原来的即可:

  

  

   成功得到flag

三、总结

  本题考察了flask框架中函数漏洞以及session伪造漏洞,session伪造在CTF中考的还是比较多的。本题很适合做知识积累

标签:Web,admin,py,flask,CTF,session,cookie,SESSION
From: https://www.cnblogs.com/miraclewolf/p/17621121.html

相关文章

  • Hadoop集群启停命令以及Web UI界面的相关介绍
    1、Hadoop集群的启停命令(我是将文件都配置好了,直接使用最方便的启停命令就能进行使用)start-all.shstop-all.sh2、HDFS集群的WebUI界面主要是通过命令行:ifconfig获取到本虚拟机的ip地址,然后输入:ip:9870进行访问即可3、YARN集群的WebUI界面可以使用以下命令访问:ht......
  • 基于 Webpack4 和 Vue 的可热插拔式微前端架构
    如果项目对你有所帮助,可以给个star Github地址什么是PuzzlePuzzle是基于Vue和Webpack4实现的一种项目结构;业务模块可以像拼图一样与架构模块组合,形成不同的系统,而这一切都是可以在生产环境热插拔的;这意味着你可以随时向你的系统添加新的功能模块,甚至改版整个系统,而不需......
  • 解决mysqladmin flush-hosts
    1、提高允许的max_connect_errors数量(治标不治本)a.命令行修改 修改max_connection_errors的数量为1000 mysql-h123.57.78.101-P3306-uroot-p123456 setglobalmax_connect_errors=1000; showvariableslike‘%max_connect_errors%’;b.配置文件修改 登陆进入M......
  • WebDAV之π-Disk派盘+Joplin
    Joplin是一个优秀的开源笔记,可以组织到笔记本中的大量笔记和文本编辑器中进行复制,标记和修改。支持Evernote的笔记直接导入到Joplin应用程序中。Joplin还支持各种云服务同步,包括Dropbox、OneDrive、WebDAV或文件系统,方便对其进行检查、备份和移动。该应用程序可用于Windows,Linux,mac......
  • 百度WebUploader 大文件分片上传处理
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • C# WEB 服务
     1.WEB服务的添加   右键项目->添加->服务引用->   地址中输入你要添加的WEB服务地址,我这里是http://www.webxml.com.cn/WebServices/WeatherWebService.asmx   ->确定(命名默认)2.接口使用   在项目文件中找到默认命名的文件,在对应项目中using空间......
  • CTFer成长记录——CTF之Web专题·攻防世界—lottery
    一、题目链接https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691651594927二、解法步骤  打开网页,这是一个买彩票换flag的网站。题目附件提供了源码:  在网站上探索一番,发现买flag需要9990000R,获得资金的方式就通过buy功能买彩票。  那么我们随便输入一个数字,......
  • 雷池 Web 应用防火墙安装
    官方网站:https://waf-ce.chaitin.cn/GitHub托管地址:https://github.com/chaitin/safeline 【简介】一款足够简单、足够好用、足够强的免费WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护网站不受黑客攻击。 【特点】 一、安装部署配置需求操作系......
  • apache/hop-web 2.5安装和简单入门
    一、使用Docker安装部署1、拉取镜像推荐使用下面的web版本dockerpullapache/hop:latestdockerpullapache/hop-web:latest2、部署a、简单部署(不使用用户名密码)dockerrun-p8080:8080apache/hop-web:latestb、使用用户名密码和相关数据库配置的部署docker文件......
  • 卸载 Microsoft Edge WebView2 Runtime后无法重新安装
    报错信息:"安装失败,已为系统安装microsoftedgewebview2runtime"需要删除注册表内容(两个都需要删除才可以在进行安装)64位系统HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} HKEY_CURRENT_USER\Softwar......