[HCTF 2018]admin解法二 cookie欺骗
还是这道题
第二种解法就是利用cookie欺骗来提权
提权后的用户就是admin
这题先要把所有页面的源代码先看一遍
这个页面的源代码中发现一句注释
!-- you are not admin –
可以猜测是需要使用admin的用户来登录才可以看到flag
先尝试注册一个admin的用户
有提示:
The username has been registered
说明已经有admin的用户
那就只有尝试伪造一个admin的用户来登录
那就先随便注册一个账号进行登录
这里注册了一个名叫123的用户
看看登录后的界面
登录后右上角的菜单栏就多了几个选项
逐个看一下源代码
在change password的页面源代码中发现一个提示
猜测是一个来自github网页下的一个flask文件
Flask是一个使用 Python 编写的轻量级 Web 应用框架。在flask中应该就有web应用中的一些线索,同时flask模板也可以修改对应的cookie
访问该连接地址
是一个flask文件
将文件进行下载解压之后
猜测这个web网页的后端服务代码应该就在APP之中
里面的文件有点多
所有的都看一下,在routes.py中发现
from flask import Flask, render_template, url_for, flash, request, redirect, session, make_response
导入了flask包中的session
说明可以利用修改session的方式来实现cookie欺骗
Flask中的session是存储在客户端的cookie中,也就是存储在本地,Flask对数据进行签名防篡改。而Flask并没有提供加密,所以session可以在客户端中被读取。
在APP的templates文件中发现了页面代码
打开看看
{% if current_user.is_authenticated and session[‘name’] == ‘admin’ %}
class=“nav”>hctf{xxxxxxxxx}
代码审计发现
当session的值等于admin时输出hctf{XXXXXXXXX}
就是用admin登录是输出flag
这里应该就是修改session的值,这个session的格式是用.进行分割的
抓包看一下
发现session的值
这里需要一个session解码器
直接去github里面搜索一个就行
建议这个
下载解压
看了readme之后发现还需要可以可以的值
key的值可以在config.py里面找到
SECRET_KEY = os.environ.get(‘SECRET_KEY’) or ‘ckj123’
key=ckj123
解码后将name的值换成admin
然后将编译出来的值放回去就可以看到flag