[SuNiNaTaS] 31번
문제 파일은 pdf 파일이다.
해당 파일을 열어 확인할 수 있는 것은
Hello, Nice to meet you. Do you wanna get a Key? 문장뿐이다.
문제 제목처럼 pdf 분석을 해야 할 것 같아서 HxD로 문제 파일을 열어보았다.
(pdf 파일 사이에 숨겨진 파일 등등이 있을지도 모르니)
쭉 보다보니 javascript 코드를 발견할 수 있었다.
var Base64 = {
keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
decode : function (input) {
for (var ah = 0; ah < (input.length); ah++){
input=input.replace("'+'", "");
}
var rlLwarzv = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
rlLwarzv = rlLwarzv + String.fromCharCode(chr1);
if (enc3 != 64) {
rlLwarzv = rlLwarzv + String.fromCharCode(chr2);
}
if (enc4 != 64) {
rlLwarzv = rlLwarzv + String.fromCharCode(chr3);
}
}
eval(rlLwarzv);
}
}
Base64.decode("'Vm0'+'wd2Qy'+'UXlW'+'a1pP'+'VldS'+'WFYw'+'ZG9WV'+'ll3W'+'kc5V'+'01Wb'+'DNXa2'+'M1VjF'+'Kc2JET'+'lhhMU'+'pUV'+'mpGS'+'2RHVk'+'dX'+'bFpOY'+'WtFe'+'FZtc'+'EdZV'+'1JIV'+'mtsa'+'QpSb'+'VJPW'+'W14R'+'00x'+'WnR'+'NWH'+'BsU'+'m1S'+'SVZ'+'tdF'+'dVZ'+'3Bp'+'Umx'+'wd1'+'ZXM'+'TRkM'+'VZX'+'WkZ'+'kYV'+'JGS'+'lVU'+'V3N'+'4Tk'+'ZaS'+'E5V'+'OVhR'+'WEJ'+'wVW'+'01Q'+'1dW'+'ZHNa'+'RFJa'+'ClYx'+'WlhWM'+'jVLVm1'+'FeVVtR'+'ldh'+'a1p'+'MVj'+'BaV'+'2RF'+'NVZ'+'PV2'+'hSV'+'0VK'+'VVd'+'XeG'+'FTM'+'VpX'+'V2t'+'kVm'+'EwN'+'VVD'+'azF'+'XV2'+'xoV'+'01X'+'aHZ'+'WMG'+'RLU'+'jJO'+'SVR'+'sWm'+'kKV'+'0do'+'NlZ'+'HeG'+'FZV'+'k5I'+'VWt'+'oU2'+'JXa'+'FdW'+'MFZ'+'LVl'+'ZkW'+'E1U'+'QlR'+'NV1'+'JYV'+'jI1'+'U2Fs'+'SllV'+'bkJEY'+'XpGV1'+'kwWm'+'9XR0'+'V4Y'+'0hK'+'V01'+'uTjN'+'aVmR'+'HUjJ'+'GRwp'+'WbGN'+'LWW'+'toQm'+'VsZH'+'NaR'+'FJa'+'Vms1'+'R1R'+'sWm'+'tZV'+'kp1U'+'WxkV'+'01GW'+'kxWb'+'FprV'+'0Ux'+'VVF'+'sUk'+'5WbH'+'BJVm'+'pKMG'+'ExZH'+'RWbk'+'pYYm'+'tKRV'+'lYcE'+'dWMW'+'t3Cl'+'dtOV'+'hSMF'+'Y1WV'+'VWN'+'FYw'+'MUh'+'Va3'+'hXT'+'VZw'+'WFl'+'6Rm'+'Fjd3'+'BqUj'+'J0T'+'FZXM'+'DFRM'+'kl4W'+'khOY'+'VJGS'+'mFWa'+'kZLU'+'1ZadG'+'RHOV'+'ZSbH'+'AxV'+'Vd4'+'a1Y'+'wMU'+'cKV'+'2t4'+'V2J'+'GcH'+'JWMG'+'RTU'+'jFw'+'SGR'+'FNV'+'diS'+'EJK'+'Vmp'+'KMF'+'lXS'+'XlS'+'WGh'+'UV0'+'dSW'+'Vlt'+'dGF'+'SVm'+'xzV'+'m5k'+'WFJ'+'sbD'+'VDb'+'VJI'+'T1Z'+'oU0'+'1GW'+'TFX'+'VlZ'+'hVT'+'FZeA'+'pTWH'+'BoU0'+'VwV1'+'lsaE'+'5lRl'+'pxUm'+'xkam'+'QzQn'+'FVak'+'owVE'+'ZaWE'+'1UUm'+'tNa'+'2w0'+'VjJ'+'4a1'+'ZtR'+'XlV'+'bGh'+'VVm'+'xae'+'lRr'+'WmF'+'kR1'+'ZJV'+'Gxw'+'V2E'+'zQj'+'VWa'+'ko0'+'CmE'+'xWX'+'lTb'+'lVL'+'VVc'+'1V1'+'ZXS'+'kZW'+'VFZ'+'WUm'+'tVN'+'VVG'+'RTl'+'QUT'+'09'");
코드 내용은 마지막 줄의 문자열을 base64로 디코딩하는 것이다.
Vm0wd2QyUXlWa1pPVldSWFYwZG9WVll3Wkc5V01WbDNXa2M1VjFKc2JETlhhMUpUVmpGS2RHVkdXbFpOYWtFeFZtcEdZV1JIVmtsaQpS
bVJPWW14R00xWnRNWHBsUm1SSVZtdFdVZ3BpUmxwd1ZXMTRkMVZXWkZkYVJGSlVUV3N4TkZaSE5VOVhRWEJwVW01Q1dWZHNaRFJaClYx
WlhWMjVLVm1FeVVtRldha1pMVjBaV2RFNVZPV2hSV0VKVVdXeGFTMVpXV2tkVmEwNVVDazFXV2xoV01XaHZWMGRLUjJOSVRsWmkKV0do
NlZHeGFZVk5IVWtoU2JXaFdWMFZLVlZkWE1UQlRNV1JYVjI1U2FsSllVbkJEYXpGV1kwWm9XR0V4Y0hKV01uTjNaVmRHUjJGRwpWbGNL
WWtoQmVsZHNaRFJaVms1R1RsWmtZVkp1UWxkV01GWkxWbFprV0UxVVFsUk5WbHBJVmpKMGExZHRWbkpYYmtKRVlYcEdWMWt3CldtOVhS
MFY1WVVWNFYwMUhVa3hXTVZwWFl6RmFjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSmFWakZLU1ZadGRHOVZSbHAxVVd4a1YwMUcKV2t4V2JG
cHJWMGRTUjFwSGRFNVdiSEJKVmpKMFlXSXlSWGhUV0dSWVltdGFSVmxzVm5kWFJsbDVDbVJIT1ZoU01GWTFXVlZhVTFZeApTWHBoU0Vw
V1lsaE5lRlpxUmxkamQzQnFVakowVEZaWE1UUmtNa2w0VjJ4a1ZtRXlVbGhVVmxaelRrWmFkR1ZJVGxwV2EzQjVWako0CmExWXlTblVL
VVc1V1ZXSkZWVFZWUmtVNVVGRTlQUT09
결과 값을 계속해서 디코딩 하다 보면
진짜 삽질했다....
HxD 만으로는 한계가 있는 것 같아서 pdf 분석 툴인 PDFStreamDumper를 사용했다.
보다보니 pdf 파일 안에 또 다른 pdf 파일이 있는 것 같았다.
이 pdf 파일을 다운로드 받아보았다.
빈 화면
PDFStreamDumper로 열어보니 뭔가 보이긴 하는데 암호화가 된 듯하다
추출한 pdf를 열 때 복호화하겠냐는 창이 뜬 걸로 봐서 pdf가 잠긴 것이라고 추측하고 pdf 잠금을 풀어 다시 열어보았다,
플래그를 찾았다.
SunINatAsGOodWeLL!@#$
음 왜 안 되지
문제를 다시 보니까 MD5 암호화를 했어야 했다.
13d45a1e25471e72d2acc46f8ec46e95
'Forensics > SuNiNaTaS' 카테고리의 다른 글
[SuNiNaTaS] 29번 (0) | 2024.02.17 |
---|---|
[SuNiNaTaS] 26번 (0) | 2024.02.17 |
[SuNiNaTaS] 19번 (0) | 2024.02.17 |
[SuNiNaTaS] 18번 (0) | 2024.02.17 |
[SuNiNaTaS] 14번 (0) | 2024.02.17 |