admin——[HCTF 2018].19848094是什么意思?
摘要:解法一:利用burp弱口令爆破(非预期) 在源代码这里发现提示 ,以及有登录login和注册register路由地址,说明大概率需要我们拿到admin权限进行登录才能获得flag,然后我们进入register页面,在注册admin的时候,提
解法一:利用burp弱口令爆破(非预期)
在源代码这里发现提示 ,以及有登录login和注册register路由地址,说明大概率需要我们拿到admin权限进行登录才能获得flag,然后我们进入register页面,在注册admin的时候,提示该用户已经注册,那就说明有admin用户,我们可以取巧直接进行弱口令爆破,
直接返回login,用admin用户名作弱口令爆破,在burp截到包之后发送到intruder模块,
然后在需要爆破的位置添加变量,进入payloads页面,载入我们的弱口令字典
载入字典之后就可以直接开始攻击了
然后可以从长度来判断结果,状态码都是302重定向,但是这里是跳转到首页index,而其余的都是回到login页面,可以判断密码为123
我们拿到密码之后,直接去登录,就能拿到flag了
解法二:Flask Session 伪造(非预期)U
通过注册一个test账户,登陆后可以在change password页面源代码处发现github的源码链接,
通过给出链接去github(此时github上原链接已经删掉了)下载源码后,通过对源码架构分析我们可以知道这是个flask的架构,并且可以在源码里发现一些关键信息,路径如下:
hctf_flask-master\app\templates\index.html
hctf_flask-master\app\config.py
第一个发现如下:
{% include('header.html') %}
{% if current_user.is_authenticated %}
<h1 class="nav">Hello {{ session['name'] }}</h1>
{% endif %}
{% if current_user.is_authenticated and session['name'] == 'admin' %}
<h1 class="nav">hctf{xxxxxxxxx}</h1>
{% endif %}
<!-- you are not admin -->
<h1 class="nav">Welcome to hctf</h1>
{% include('footer.html') %}
第二个发现如下:
import os
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:adsl1234@db:3306/test'
SQLALCHEMY_TRACK_MODIFICATIONS = True
从第二个发现里我们可以知道key密钥(我们利用key进行cookie的解密和session的伪造),再看第一个发现,从index.html里,在5、6、7的代码里,双重条件判断:
用户必须已登录。
用户的 session['name'] 必须等于 'admin'。
