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'。
阅读全文