| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> [HCTF 2018]admin -> 正文阅读 |
|
[Python知识库][HCTF 2018]admin |
页面右上角有登录和注册按钮 随便注册一个账号,然后登录 发现会回显用户名,并且在页面源代码处发现 需要登录为admin账户才能拿到flag 发现 在change password中,发现页面源代码有 访问https://github.com/woadsl1234/hctf_flask/,可以拿到源码 用的是 flask 框架,flask 是一个轻量型的web框架,其session存储在客户端上并对存储的session进行了签名处理 方法一:flask session 伪造 想要伪造session,需要先了解一下flask中session是怎么构造的。 我们可以通过脚本将session解密一下:
利用脚本将session解密:python3 python文件名 session值 得到:
但是如果我们想要加密伪造生成自己想要的session还需要知道SECRET_KEY,然后我们在config.py里发现了SECRET_KEY 然后在index.html页面发现 只要session[‘name’] == 'admin’即可以得到flag 于是我们找了一个flask session加密的脚本 https://github.com/noraj/flask-session-cookie-manager
生成session:python3 flask_session_cookie_manager3.py encode -s SECRET_KEY的值 -t 上面修改为admin后的值 ?得到
修改session,得到flag 方法二:Unicode欺骗 在routes.py发现 这里用的nodeprep.prepare函数,而nodeprep是从Twisted模块导入的,在requirements.txt文件中发现
假如我们注册?????用户,然后在用?????用户登录,因为在login函数里使用了一次nodeprep.prepare函数,因此我们登录上去看到的用户名为ADMIN,此时我们再修改密码,又调用了一次nodeprep.prepare函数将name转换为admin,然后我们就可以改掉admin的密码,最后利用admin账号登录即可拿到flag。 注册: 登录: 修改后,可使用admin进行登录,密码就是修改后的密码 ? 参考:HCTF2018-admin_小白白@的博客-CSDN博客 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:59:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |