StorlenByte를 구하라고 하네요 :D
일단 열어봅시다!
또 PUSHAD가 나왔습니다!
패킹이 되어있다는 소리겠죠 ㅎㅎㅎ?
이번에는 한번에 POPAD로 가는 방법을 알려드리겠습니다!
PUSHAD를 실행시키면 8개의 레지스터가 스택에 쌓인다고 했죠 :D
쌓인 순간의 스택의 위치를 메모리 주소로 찾아갑니다!
그럼 ESP의 위치는 19FF54이므로 메모리도 19FF54로 Go To([Ctrl]+[G]) 해주도록 합시다 :D
그다음 첫번째 바이트에 브레이크 보인트를 걸어줍니다!
그리고 [F9]를 눌러 실행을 시켜주면 바로 POPAD 밑으로 갑니다!
이렇게 말이죠 :D
그런데 PUSH 명령어가 3개가 존재하는 걸 볼 수 있습니다!
StolenByte의 의미를 알아야 하는데요 !
패커가 임의로 이동 시킨 코드의 윗부분을 의미를 합니다 :D
이러한 경우 정상실행이 되지 않기 때문에 제 위치에 놓은 뒤 덤프를 시켜 정상 실행을 시켜줘야 하죠!
덤프하는 방법은 다른 사이트에도 많이 나와있으니 한번 꼭 해보시길 바랍니다 !
* 많은 공부가 되실꺼예요 ㅎㅎㅎ *
그럼 저 3개의 PUSH 명령어가 StolenByte면 OEP로 돌아갔을 때 정상적인 모습이 나오지 않겠죠 :D ?
OEP로 돌아가보니 정상적이지 않은 것을 보아 StolenByte임을 알 수 있습니다!
그러므로 정답은 "6A0068002040006812204000"이 되겠네요 ㅎㅎㅎㅎ
이만 9번 문제 풀이를 마치겠습니다 :D
'CTF > CodeEngn.kr' 카테고리의 다른 글
Basic RCE L11 (0) | 2020.02.24 |
---|---|
Basic RCE L10 (0) | 2020.02.23 |
Basic RCE L08 (0) | 2020.02.14 |
Basic RCE L07 (0) | 2020.02.13 |
Basic RCE L06 (0) | 2020.02.12 |