상세 컨텐츠

본문 제목

[Write-up] CodeEngn Advance RCE 9

Reversing Write-Up/03.CodeEngn Advance

by RACC8N 2020. 2. 4. 21:52

본문

문제 : Password는 무엇인가

 

풀이 : 

우선 Password를 알기 전에 UserName을 알아야 할 것 같다.

 

디버거를 켜보자.

 

문자열 검색으로 분석할 위치를 찾았다. 

 

입력한 이름 AAAA와 DonaldDuck을 비교하는 것으로 보아 DonaldDuck을 사용하면 될 것 같다.

 

해당위치까지 갈 수 있도록 이름을 DonaldDuck으로 하고 다시 실행해보자.

 

먼저 입력한 이름 DonaldDuck과 NULL을 비교한다. 

 

밑으로 내려가보면 cmp eax, ecx 가있는데 eax에는 비밀번호로 입력한 1234의 16진수 값이 들어있음을 알 수 있다.

 

그럼 ecx값이 패스워드임을 예상할 수 있다. 8921743.

 

아까와 다른 모습이지만 여전히 틀렸다고 한다. 계속 분석해보자.

 

test bl, bl 조건으로 인해 분기문을 통과할 수 없는것 같다.

 

조건을 맞추기위해 bl을 조작하는 부분을 찾아보자.

 

위로 올라가보니 sete bl 명령어가 있는것을 확인할 수 있다.

 

저 부분은 입력한 UserName과 NULL을 비교하는 부분이다.

 

bl을 조작하기위해 비교대상인 NULL을 DonaldDuck으로 바꿔주었다.

 

해당 분기를 통과하였다.

 

관련글 더보기

댓글 영역