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
、デコード。