문제:StolenByte를 구하시오 Ex) 75156A0068352040
일단 문제를 실행시켜보겠습니다.
확인을 눌러보겠습니다.
역시나 에러 창이 뜹니다.
이제 PEiD로 열어보겠습니다.
UPX로 패킹된 것을 확인할 수 있습니다.
언패킹 도구로 언패킹 해주겠습니다.
이제 Ollydbg로 열어주겠습니다.
그리고 F9를 이용해서 실행시켜보겠습니다.
그랬더니
이런 알 수 없는 창이 뜹니다.
어째서? 이런 일이 일어나는 것일까요?
그 이유는 StolenByte가 적용되어있기 때문입니다.
StolenByte에 대한 내용은 여기를 참고해주세요.
https://brainfreeee.tistory.com/35
StolenByte에 대해서 간단히 설명하자면 코드의 일부를 OEP이전에 숨겨서 OEP를 찾은 뒤 덤프를 떠도 정상적으로 실행이 되지 않게 하는 것입니다.
이제 다시 OllyDBG로 돌아가서 패킹을 풀기 이전의 코드를 자세히 살펴보겠습니다.
위 사진은 OEP로 가는 JMP와 그 근처의 코드입니다.
JMP위에 PUSH가 보이는 것을 확인할 수 있습니다.
저 PUSH를 통해서 OEP로 점프한 이후에 호출할 함수에서 사용할 값을 스택에 넣습니다.
위의 사진은 언패킹 도구를 이용해서 패킹을 푼 상태의 코드입니다.
OEP의 위쪽 부분이 NOP으로 채워져 있습니다.
저 부분이 OEP이전에 있던 PUSH들이 있었던 자리입니다.
그리고 그 아래에서 MessageBoxA함수를 호출하는 것을 확인할 수 있습니다.
이 상태에서 실행시켜보겠습니다.
이제 NOP로 채워진 공간에 OEP이전에서 봤던 PUSH들을 옮겨주겠습니다.
이 상태에서 실행시키니 정상적으로 실행되는 것을 확인할 수 있습니다.
Flag: 6A0068002040006812204000
'CodeEngn Write Up > Basic' 카테고리의 다른 글
CodeEngn Basic RCE L11 Write Up (0) | 2022.02.17 |
---|---|
CodeEngn Basic RCE L10 Write Up (1) | 2022.02.10 |
CodeEngn Basic RCE L08 Write Up (1) | 2021.10.05 |
CodeEngn Basic RCE L07 Write Up (0) | 2021.09.30 |
CodeEngn Basic RCE L06 Write Up (0) | 2021.09.29 |