美文网首页ctf
JWT伪造cookie

JWT伪造cookie

作者: _阿烨_ | 来源:发表于2018-04-29 23:43 被阅读1227次

    以全国信安比赛CISCN2018的web题easyweb为例

    这道题的大部分人是用非预期解做出来的

    密码为空,可以登陆


    image.png
    image.png

    该题的正解是JWT伪造cookie

    注册账号密码均为 admin2333
    登陆得到cookie

    eyJ0eXAiOiJKV1QiLCJhbGciOiJzaGEyNTYiLCJraWQiOiI4MjAxIn0.eyJuYW1lIjoiYWRtaW4yMzMzIn0.aC0DlfB3pbeIqAQ18PaaTOPA5PSipJe651w7E0BZZRI
    

    base64解码后有惊喜


    image.png

    猜测是cookie伪造

    经过搜索后发现是采用了JWT机制(Json Web Token)

    参考链接
    http://laravelacademy.org/post/3640.html

    关键信息截图

    image.png
    image.png
    生成和调试JWT的网站: https://jwt.io image.png
    为了伪造,这里要观察一下签名的生成算法
    参考链接
    https://www.cnblogs.com/lyzg/p/6028341.html
    https://1024tools.com/hmac image.png

    这里的kid是key的id,具体的密钥是key的值

    这里key的值在数据库中,类似的数据库代码为

    sql="select * from table where kid=$kid "
    res=exec(sql)
    

    所以我们可以构造kid=0 union select 1,使得res=1
    然后我们用1作为密钥来签名加密,就可以顺利伪造cookie

    image.png
    image.png

    或者也可以通过时间盲注来,来得到签名的密钥,或者直接注出admin密码的md5,一解密,你会发现是空密码,2333

    这里给出另一道可以伪造的CTF题,因为泄露了加密时的密钥
    https://chybeta.github.io/2017/08/29/HITB-CTF-2017-Pasty-writeup/

    低版本的JWT,密钥也可以直接设为none,来进行伪造

    相关文章

      网友评论

        本文标题:JWT伪造cookie

        本文链接:https://www.haomeiwen.com/subject/symalftx.html