CTF bukgu JWT

0x01の問題解決のためのアイデア

1、我々は最初のウェブサイトを開いて、ヒントを得るためにソースコードを表示<!--hint:NNVTU23LGEZDG===-->ここでは、直接思っbase64デコードが、解決策は、その後、試してみました出て来ていないbase32成功をデコード!(思考あまりにも制限されます)。
首尾よく取得するために口座番号やパスワードをデコード2は、後にkk:kk123
3を、我々はにログインするように求められ
ここに画像を挿入説明
diary言及しvim、私たちの最初に考えたのは、そのソースコードのリークであるので、私たちに直接dirsearch取得するスクリプトスイープ/src、ダウンロード.swp後、ファイル、およびvim -rソースコードファイルの回復を取得します。

<?php
    error_reporting(0);
    require_once 'src/JWT.php';

    const KEY = 'L3yx----++++----';

    function loginkk()
    {
        $time = time();
        $token = [
          'iss'=>'L3yx',
          'iat'=>$time,
          'exp'=>$time+5,
          'account'=>'kk'
        ];
        $jwt = \Firebase\JWT\JWT::encode($token,KEY);
        setcookie("token",$jwt);
        header("location:user.php");
    }

    if(isset($_POST['username']) && isset($_POST['password']) && $_POST['username']!='' && $_POST['password']!='')
    {
        if($_POST['username']=='kk' && $_POST['password']=='kk123')
        {
            loginkk();
        }
        else
        {
            echo "账号或密码错误";
        }
    }
?>

私たちは、ソースコードから見ることができますcookie使用されjwt、私たちはしまったKEY = 'L3yx----++++----';、ブラウザ・トークンを置き換えるJWT構築します。
私は、ここで使用したURLであるエンコードやデコードJWTs
ここに画像を挿入説明我々は最初の元に入ったJWT Stringし、Signing Keyその後、変更account、その後、JWT String変更が発生しますが、その後、上記のコピーJWT String代替ブラウザをtokenあなたはフラグを取得することができます。

0x02の概要

1、時には私たちは、ソースコードを入手することができません見ることができないSigning Key、私たちが爆破することができ、成功はまた、運に依存し、ツールgithubのアドレスを貼り付けるcrack- JWT
2を、JWTの構成は次のとおりです。

  	Header(头部)
    Payload(负载)
    Signature(签名)

中間の.接続は、時には我々はする必要がありbase64、デコード。

公開された47元の記事 ウォンの賞賛2 ビュー3147

おすすめ

転載: blog.csdn.net/a3320315/article/details/102810981