본문 바로가기

Hacking/[System] codeengn.com

[Basic RCE] L05

Q. 이 프로그램의 등록키는 무엇인가?

등록 키를 입력하여 인증을 받는 프로그램이다.

정상적으로 실행한 모습. 아무 값이나 넣고 Register now를 클릭해본다.

시리얼 번호가 틀렸다고 출력되고 아이다를 통해 분석해보기로 한다.

그런데 분석이 되지 않고 딸랑 하나의 Function만 존재하며 세그먼트는 UPX1을 가리키고 있다.
검색을 해보니 UPX로 프로그램이 패킹되어 있는 것을 확인 할 수 있다.

Detect It Easy에서도 UPX로 패킹되어있는것을 확인할 수 있다.

UPX는 디버거 상태의 OEP 위치에서 다음 진행을 통해 우회하거나, 메모리 상의 시작 위치를 계산하고 덤프하여 분석할 수도 있지만 편의성을 위해 upx 언패커가 존재하므로 해당 프로그램을 사용하기로 한다.

언패킹 후 다시 DIE 도구를 통해 확인하면 패킹이 풀려있는 것을 확인할 수 있다.

다시 IDA로 분석해보았을 때 이전과는 다르게 여러가지 함수와 프로그램 내부에 있는 문자열들이 보이는 것을 확인할 수 있다.

틀렸을 때 출력되던 문구를 추적해본다.

해당 로직을 보아 GetText를 통해 입력된 값을 받고 mov를 통해 각 레지스터에 저장하여 StrCmp를 통해 비교 후 정상인지 아닌지 확인하는 것으로 추정된다.

GFX_754_IER_954라는 텍스트를 edx에 저장하는 것으로 보아 해당 문자열이 시리얼 번호인 것으로 추정된다.

또한 위의 로직으로 보아 이름은 Registered_User로 추정된다.

따라서 코드엔진 문제의 정답은 GFX-754-IER-954 이다

'Hacking > [System] codeengn.com' 카테고리의 다른 글

[Basic RCE] L05  (0) 2019.07.19
[Basic RCE] L04  (0) 2019.07.19
[Basic RCE] L03  (0) 2019.07.13
[Basic RCE] L02  (0) 2019.07.07
[Basic RCE] L01  (0) 2019.06.30