راهنمای چالش رمزنگاری - چالش اول
1404-05-26 11:59رایت آپ چالش Crypto Challenge (JWT + Base64)

در این چالش یک JWT در اختیار کاربران قرار داده شده است. آنها باید توکن را decode نموده و مقدار فیلدی به نام username را پیدا کنند. مقدار username خودش Base64 است؛ با این حال عمداً کمی «بههمریخته» شده و باید اصلاح شود تا به فلگ برسیم.
تشخیص نوع داده
توکن سه بخش دارد که با نقطه جدا شدهاند (header.payload.signature). همین الگو، بهعلاوه خروجی ابزارهای شناسایی (تصویر زیر – Hashes.com)، نشان میدهد با JWT طرفیم.
دیکد کردن JWT
توکن را در یکی از ابزارها باز کنید (مثلاً Burp Decoder یا jwt.io).
Header بعد از Base64URL-decode چیزی شبیه این است:
{"alg":"HS256","typ":"JWT"}
Payload بعد از Base64URL-decode شبیه این است:
{
"sub":"1234567890",
"username":"WYRtaW4tc2FiYXNhZmV2aWxsYWdl",
"iat":1516239022
}
نکته: JWT رمزنگاری نشده؛ فقط Base64URL شده است. امضا (HS256) برای یکپارچگی است، نه محرمانگی.
دیکد کردن username
مقدار username خودش به Base64 است. اگر همین مقدار را دیکد کنیم، خروجی «مشکوک» میشود:
WYRtaW4tc2FiYXNhZmV2aWxsYWdl → Ymin-sabasafevillYe
میبینیم ابتدای رشته بههم ریخته است؛ Ymin باید در واقع admin باشد. سرنخش این است که Base64 کلمهی admin برابر YWRtaW4 است، ولی رشتهی ما با WY... شروع شده (جابجایی احتمالی دو کاراکتر اول). همچنین به نظر میرسد این مقدار در انتهای رشته نیز تغییر پیدا کرده است.
اصلاح بههمریختگی و دیکد نهایی
با برگرداندن دو کاراکتر اول Base64 از WY... به YW... و همچنین همین مقدار در انتهای رشته، مقادیر معتبر میشوند:
از شما دوستان گرامی بابت مطالعه این مقاله تشکر میکنم و امیدوارم محتوای آن و همچنین چالش مربوطه مورد توجه شما قرار گرفته باشد.
لینک چالش:
https://challenginno.ir/challenge/cryptography-1
نویسنده: احسان نیک آور
آخرین مقالات

راهنمای چالش رمزنگاری - چالش اول

راهنمای چالش وب اپلیکیش آسیب پذیر- عدم اعتبارسنجی ورودی

راهنمای چالش اشتباه در پیکربندی وب سرور
آخرین مقالات

راهنمای چالش رمزنگاری - چالش اول

راهنمای چالش وب اپلیکیش آسیب پذیر- عدم اعتبارسنجی ورودی
