HackChang

[xcz.kr] Prob9 9번 문제 풀이 본문

W4RG4M3/R3V3RS1NG

[xcz.kr] Prob9 9번 문제 풀이

HackChang 2020. 7. 17. 19:55

Prob9

이번 문제는 쉬운 리버싱이라고 한다.

지금까지 코드엔진에서 리버싱 문제를 어느정도 풀어봤기 때문에

바로 진행해보도록 하겠다.

 

늘 풀던 방식처럼 우선 PEID에 올려보도록 하겠다.

 

따로 뭐 패킹이 되어있는 것 같지 않아서 우선 실행시켜보도록 하겠다.

 

위와같이 프로그램이 나오는 것을 볼 수 있고, 틀리면 "who are you???"라고 문자가 출력되며, 아무 키를 누르면 프로그램이 종료된다.

올리디버거로 해당 프로그램을 열어보도록 하겠다.

 

 

 

우선 쉬운 리버싱 문제라고 했으니 문자열을 검색해보도록 하겠다.

 

 

역시나 좋은 접근이었다. 우선 해당 문자열에 접근해보도록 하겠다.

 

이렇게 바로 윗 부분에 입력값을 비교 후 점프하는 것을 볼 수 있다.

비밀번호가 틀려도 정답으로 인식할 수 있도록 점프문을 JNZ -> JZ로 변경하도록 하겠다.

위에보면 똑같은 점프문이 하나 더 있는데 그 부분도 JNZ -> JZ로 바꿔주도록 한다.

 

이런식으로 위의 점프문에 F2를 눌러 브레이크 포인트를 걸어주고, 점프문을 수정해서 F8을 눌러 한줄씩 진행해보도록 하겠다.

 

오른쪽 레지스터를 보면 비밀번호가 UNL1M1T인 것을 볼 수 있고,

 

이렇게 %s를 출력하기 전에 레지스터(EAX)에 문자열이 담기는 것을 합치면 키 값이 될 것이라고 생각했지만,

이렇게 레지스터를 하나씩 합칠 필요없이 프로그램에 출력되기 떄문에 바로 키를 알 수 있다.

 

이렇게 조금만 찾아보면 ID와 PW도 찾을 수 있을 정도로 쉬운 문제였다.

 

 

Comments