[주의] 해당 글에는 풀이 및 정답이 적혀있습니다.
스스로 해결하고 싶으신 분들은 문제를 해결한 후, 이 페이지를 참고하셨으면 합니다 : )
Music_Player.exe 파일과 dll 파일을 제공해주고, 1분 이상 실행시키는 것이 목적이다. 처음에 IDA로 봤는데 별로 유의미한 내용을 얻진 못하고, VB Decompiler로 많은 정보를 얻고 IDA의 Graph View로 실행흐름을 파악했다.
프로그램을 1분 이상 실행하려고 하면, "1분 미리듣기만 가능합니다."라고 msgBox가 나온다. FrmMain의 TMR_POS_TIMER를 보면 그 코드가 나와있다.
그래서 해당 부분을, 디버거로 디버깅했는데, 비교하는 부분을 찾았고, 이를 우회하지 못하면 메세지박스가 출력되는 것을 확인했다.
우회하기 위해 0xEA60을 0xFFFEA60으로 바꾸고 실행하니, 에러가 발생했다.
어디서 발생하는지 찾다가 콜스택으로 보면 되겠네라고 생각하고 봤는데 여기서부터 삽질을 많이했다.
RaiseException은 해당 에러가 발생해서 call된 함수일 것이고, 아래 콜스택을 살펴봤다. 근데 전혀 감을 잡지 못했다. TlsGetValue 함수를 계속 호출하는데 1분 이상 동작하는데 아무 관련이 없는 것 같았다. 그래서 방법을 바꿔서 58초 일때와 59초일 때, 일시정지 시키고 비교하면서 디버깅했는데 JGE에서 58초일땐, 점프뛰고 59초일땐, 점프를 안뛰고 에러메세지가 출력됬다. 그래서 JGE를 JMP로 바구고 했더니 flag를 획득했다.
Flag가 어떻게 나오는지도 디버깅 해보려고 한다.
'Security' 카테고리의 다른 글
[pwnable.kr] fsb (0) | 2021.02.09 |
---|---|
[pwnable.kr] simple login (0) | 2021.02.07 |
[Reversing.kr] Easy Keygen (0) | 2021.01.17 |
[Reversing.kr] Easy Crack (0) | 2021.01.16 |
pwnable.kr Toddler's Bottle (0) | 2021.01.07 |