본문 바로가기

Forensics/SuNiNaTaS

[SuNiNaTaS] 31번

[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