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 адрес JWT crack-
2, JWT состоит из:
Header(头部)
Payload(负载)
Signature(签名)
Середина с .
связи, иногда нам нужно base64
декодировать.