문제 : 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으로 바꿔주었다.
해당 분기를 통과하였다.
[Write-up] CodeEngn Advance RCE 11 (0) | 2020.02.07 |
---|---|
[Write-up] CodeEngn Advance RCE 10 (0) | 2020.02.06 |
[Write-up] CodeEngn Advance RCE 8 (0) | 2020.02.04 |
[Write-up] CodeEngn Advance RCE 6 (0) | 2020.02.01 |
[Write-up] CodeEngn Advance RCE 5 (0) | 2020.01.31 |
댓글 영역