Basic RCE L10

2021. 10. 26. 11:25Security/코드엔진

Q. OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE (EX) 00400000EB03)

 

1. 실행

2. x32dbg 실행

- "pushad". 전문가 등장

- 그러나 PEiD로 확인 결과, EP Section이 다르다. aspack이 되어 있다는 뜻. 

언패킹 방법은 수동 언패킹이다. 위에서부터 popad를 찾기 위해 두 가지 방법이 있다. 1) command로 찾기

f9를 누르면 이동 완료.

2) Hardware breakpoint로 찾기

중간에 보이는 nop에 hardware breakpoint를 걸고 f9를 누르면 단번에 찾아진다.

popad와 가까운 곳에 위치한 push 10. 445834 이것이 바로 OEP라고 한다. popad 바로 아래에서 무언가 값을 push하고 return하기 때문이다. push한 주소를 따라가 보자.

흠... 이거 원래 이렇게 생기지 않았는데 움직이는 순간 바뀌었다. 여기서 성공 문자열을 찾아보자.

저것이 성공 문자열이렸다. 따라가 보면 이렇다. 여기서 성공/실패를 가르는 분기점인 jne 10. 44552B가 정답 OPCODE가 된다.

정답: OEP+OPCODE = 004458347555 (opcode는 바이트값을 넣어야 정답으로 인정해 줌.)

'Security > 코드엔진' 카테고리의 다른 글

Basic RCE L09  (2) 2021.10.26
Basic RCE L08  (0) 2021.10.26
Basic RCE L07  (0) 2021.10.26
Basic RCE L06  (0) 2021.10.26
Basic RCE L05  (1) 2021.10.26