[TRUST] – mess write up
Reversing >> mess
문제는 아래 버튼을 클릭하면 파일을 다운 받을 수 있다.
- Running a file
파일을 실행하면 ‘비밀을 찾아라’ 하면서, 난독화된 문장이 있다.
test 라고 입력하니 fail. 이라고 출력하고 프로그램이 끝난다.
- Write up
ollydbg로 위 프로그램을 디버깅 했을때 아래 사진에서 멈추었다.
Entry point를 찾기 위해 시도 해본 결과, 주소가 00CD2040 인 Entry point 를 찾았다.
이제 프로그램이 시작할때 출력되는 문자열이 어디 있는지 찾아보자.
00CD218B에서 어떤 함수를 call 하게 되는데, 여기서 문자열이 출력이 되었다.
call 하는 주소에 들어간다.
해당 주소로 들어오니 여러개의 함수를 호출하고 있는데, 그 중 맨 아래 있는 call에서 문자열이 출력이 되었다.
해당 주소로 들어간다.
드디어 우리가 찾던 문자열이 아래 사진의 노란색 박스 에 보이게 된다.
F8을 눌러보면서 하나씩 실행 해보니, 초록색 박스 에서 몇번의 반복을 하게 된다.
초록색 박스 는 무언가를 한다는 생각이 들었다.
그런데 생각을 해보면 노란색 박스 에 ASCII 문자로 S3CRe7PA5sW0rD 라는 문장과 또 다른 문장을 stack에 push 하고
00CD1352 라는 함수를 호출한다. 밑에도 똑같은 함수를 호출하는 것으로 보아, 이 주소는 printf 함수 임을 알 수 있다.
stack에는 함수에 값을 전달 할때 인자를 거꾸로 전달하게 된다.
S3CRe7PA5sW0rD 라는 문장을 먼저 stack에 넣고 또 다른 문장을 넣는 것으로 보아, S3CRe7PA5sW0rD 이 문장은 실행할때 본적이 없는 문장이므로
flag라는 생각이 들었다.
초록색 박스는 S3CRe7PA5sW0rD 이 문장을 난독화 하기 위한 작업 이었다.
실제로 위 반복문을 돌려보니 아까 프로그램을 실행할때 봤던 난독화된 문장이랑 똑같은 것을 알 수 있다.
그래서 프로그램을 실행한 뒤 S3CRe7PA5sW0rD 값을 넣었더니 flag를 얻을 수 있었다.
'🚩CTF' 카테고리의 다른 글
[HackingCamp 2019] – 양념 친구들! write up (0) | 2019.04.06 |
---|---|
[HackingCamp 2019] – genius_brain write up (0) | 2019.04.06 |
[TRUST] – Easy Taebo write up (0) | 2019.04.06 |
[LOS] – assassin 풀이 (0) | 2019.04.06 |
[LOS] – giant 풀이 (0) | 2019.04.06 |
댓글
이 글 공유하기
다른 글
-
[HackingCamp 2019] – 양념 친구들! write up
[HackingCamp 2019] – 양념 친구들! write up
2019.04.06 -
[HackingCamp 2019] – genius_brain write up
[HackingCamp 2019] – genius_brain write up
2019.04.06 -
[TRUST] – Easy Taebo write up
[TRUST] – Easy Taebo write up
2019.04.06 -
[LOS] – assassin 풀이
[LOS] – assassin 풀이
2019.04.06