관리 메뉴

HeeJ's

Basic RCE L01 :: CodeEngn/BasicRCE 본문

<CTF>/<CodeEngn>

Basic RCE L01 :: CodeEngn/BasicRCE

meow00 2021. 3. 29. 00:13

문제 힌트

문제 힌트를 읽어보면 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가라고 적혀있다.

 

 

이 문제 힌트를 먼저 해결한 후, exe 파일을 열어보려고 한다.

 

 

위의 힌트를 해결하기 위해 GetDriveType 함수를 찾아보았다.

 

 

GetDriveType 함수의 원형은

UINT WINAPI GetDriveType(

      _In_opt_ LPCTSTR lpRootPathName

 );

 

이며 이 함수는 인자로 전달받은 드라이브가 어떤 종류의 드라이브인지 판별하여 리턴해줍니다.

 

이제 리턴 값들에 대해 알아보면 힌트에 대한 답을 찾을 수 있을 것이다.

 

리턴 값 상수 설명
0 DRIVE_UNKNOWN 알 수 없음
1 DRIVE_NO_ROOT_DIR 최상위 경로가 없음
2 DRIVE_REMOVABLE 이동형 저장장치
3 DRIVE_FIXED 고정형 저장장치
4 DRIVE_REMOTE 네트워크 Drive
5 DRIVE_CDROM DVD/CD-ROM 유형
6 DRIVE_RAMDISK Ram Disk

위의 표를 보면 HDD를 CD-Rom으로 인식시키기 위해 GetDriveTypeA의 리턴 값이 5여야 한다는 것을 알 수 있다.

 

 

 

이렇게 리턴 값을 찾아주었고, 이제 exe파일을 실행시켜보았다.

비슷한 말이 뜨는 것을 확인했고, 이 파일을 ollydbg로 열어보았다.

 

 

ollydbg로 열어준 모습

프로그램이 굉장히 간단하게 이루어져, 한 눈에 알아볼 수 있었다.

 

 

여기서 전해지는 리턴 값을 알기 위해 GetDriveTypeA의 다음 줄인 0040101D에 bp를 걸어준 후 실행시켜보았다.

 

EAX 값에 3이 전달되는 것을 확인할 수 있다.

 

 

 

 

 

이 이외에 따로 무언가를 입력해 flag를 얻는 문제인 것 같지 않아 Auth에 이 리턴 값을 입력해주었다.

 

 

 

 

 

 

출처

[1]lab.cliel.com/entry/GetDriveType-Disk-Drive-%EC%9C%A0%ED%98%95-%ED%8C%90%EB%8B%A8

[2] vlindersec.tistory.com/24

'<CTF> > <CodeEngn>' 카테고리의 다른 글

Basic RCE L03 :: CodeEngn/BasicRCE  (0) 2021.04.26
BasicRCE L02 :: CodeEngn/BasicRCE  (0) 2021.04.26
Basic RCE L18 :: CodeEngn/Basic RCE  (0) 2020.06.07
Basic RCE L16 :: CodeEngn/Basic RCE  (0) 2020.06.06
Basic RCE L11 :: CodeEngn/BasicRCE  (0) 2020.06.06