[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. python重拾第九天-进程、线程、协程

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  2. Linux内核:regmap机制

    背景 在学习SPI框架的时候,看到了有一个rtc驱动用到了regmap,本想通过传统方式访问spi接口的我,突然有点不适应,翻了整个驱动,愣是没有找到读写spi的范式:因此了解了regmap以后,才发 ...

  3. Linux 网络编程的5种IO模型 总结

    背景 在网络编程中,经常会用到一些模型,在这里做一下总结. 正文 Linux 网络编程的5种IO模型:阻塞IO与非阻塞IO 这是最简单的模型,一般配合多线程来实现. Linux 网络编程的5种IO模型 ...

  4. Linux进程退出:SIGINT、SIGTERM 和 SIGKILL 有关信号 区别

    背景 学习 海思SDK,查看例程的时候发现了类似下面的代码: int main(int argc, char *argv[]) { if(argc != 2) { printf("Usage ...

  5. 三层交换机vlan间路由

    sw1: [Huawei]vlan batch 10 20 [Huawei]int e0/0/1 [Huawei-Ethernet0/0/1]port link-type access [Huawei ...

  6. 使用gitea搭建源码管理【0到1架构系列】

    使用开源搭建Git源码方案,gitlab和gitea是两个不错的方案,gitlab以前简单易用,现在功能复杂且对开源并不友好,gitea一直保持功能单一易用且完全开源,个人推荐gitea. 通过容器安 ...

  7. node.js (原生模板引擎模板)

    app01 // 引入http模块 const http = require('http'); //连接数据库 require('./model/connects'); // 创建网站服务器 cons ...

  8. UML类图的表示

    1.类的表示方法 2.接口的两种表示方法 3.类的继承怎么表示 空心三角形+实线 4.类实现接口 空心三角形+虚线 5.关联(association)关系 实线箭头 6.聚合(aggregation) ...

  9. 使用post请求登陆

    1.使用post请求登陆 import requests import matplotlib.pyplot as plt url = 'https://www.ptpress.com.cn/login ...

  10. JavaScript小面试~什么是深拷贝,什么是浅拷贝,深拷贝和浅拷贝的区别,如何实现深拷贝

    深拷贝:就是在复制数据或者对象的时候,将其内存中值复制过来. 浅拷贝:就是在复制数据或者对象的时候,是将其引用复制过来. 深拷贝和浅拷贝的区别:深拷贝复制的是被复制数据或者对象的值,复制的数据或对象会 ...