본문 바로가기

BASIC RCE

(2)
[Basic RCE] L05 Q. 이 프로그램의 등록키는 무엇인가? 등록 키를 입력하여 인증을 받는 프로그램이다. 정상적으로 실행한 모습. 아무 값이나 넣고 Register now를 클릭해본다. 시리얼 번호가 틀렸다고 출력되고 아이다를 통해 분석해보기로 한다. 그런데 분석이 되지 않고 딸랑 하나의 Function만 존재하며 세그먼트는 UPX1을 가리키고 있다. 검색을 해보니 UPX로 프로그램이 패킹되어 있는 것을 확인 할 수 있다. Detect It Easy에서도 UPX로 패킹되어있는것을 확인할 수 있다. UPX는 디버거 상태의 OEP 위치에서 다음 진행을 통해 우회하거나, 메모리 상의 시작 위치를 계산하고 덤프하여 분석할 수도 있지만 편의성을 위해 upx 언패커가 존재하므로 해당 프로그램을 사용하기로 한다. 언패킹 후 다시 DIE..
[Basic RCE] L03 Q. 비주얼베이직에서 스트링 비교 함수는? 비주얼베이직에서 스트링 비교함수의 이름을 찾는 문제이다. 해당 문제 파일을 실행하여 아무 값이나 입력하였더니 위 그림과 같은 에러 메시지가 출력된다. IDA Pro에서 해당 파일을 디컴파일 한 뒤 스트링 값으로 해당 문자열을 찾아보았다. 해당 문자열이 위치한 로직으로 이동하면 다음과 같은 로직이 나오게 된다. 해당 ebp-58h 위치(사용자 입력값)에 저장된 사용자가 입력 한 값과 2g83g35hs2 값을 스택에 저장하고 __vbaStrCmp를 통해 두개의 값을 비교하여 정답여부를 결정한다. 따라서 프로그램은 2g83g35hs2가 정답이다. 코드엔진 사이트에서 요구하는 정답은 __vbaStrCmp가 될 것이다.