우선 문제를 다운받으면 다음과 같이 파일 형식이 파일인 파일이 다운로드 된다.
- 확장자가 file인 파일은 다른 운영체제에서 열어보자!
리눅스에서 열어보니까 ELF 32-bit 파일임을 알 수 있다.
일단 뭔지 모르겠으니까 실행을 시켜보자.
어... 실행이 안된다. 개인적인 생각으로는 실행시킬 권한이 없어서 실행이 안되는 것 같으니 권한을 부여해주자.
리눅스 파일 권한부여에 대한 내용은 다음 글을 참고하자.
https://saedal-a.tistory.com/6
리눅스에서 파일에 권한 부여하기
리눅스는 파일에 대해 권한을 부여할 수 있으며 각각의 고유한 권한이 표기되어 있다. 이 권한들은 숫자로 표현된다. chmod 777 [파일명] 권한을 부여하는 명령어이다. 이에 대해 자세히 설명하자
saedal-a.tistory.com
그런데 권한을 부여해도 안된다...
혹시 해당 파일이 32bit고 내가 64bit 환경에서 실행시켜서 그런가?
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386
해당 명령어는 64bit 환경에서 32bit 파일을 실행시켜주기 위한 것이다.
아무튼 이렇게 설정을 하고 실행시키면...
아하. 어떤 패스워드를 입력받아서 검증을 거친 후 맞으면 correct를 출력하겠군...이라는 생각을 했다.
그래서이를 ida로 열어주면...
다음과 같이 보여주는데, 저기 check_password 부분이 아마 문자열 검증함수인 것 같다.
그 함수에 들어가게 되면...
엄청 많은 내용이 있다!
사실 위에 반복문은 필요 없고, 마지막 줄에서 문자열 비교를 한다.
비교 문자열 마지막에 =이 들어간 것을 보니 base64로 인코딩 되었구나를 추측!
base64 인코딩은 무조건 3의 배수로 인코딩 되어야 하는데, 3의 배수가 아닌 경우 =으로 비어있는 부분을 채우기 때문에 =이 들어가면 base64로 인코딩 된 것을 추측할 수 있다.
이를 디코딩해주면...
HackCTF{w3lc0m3_70_r3v3r51n6_w0lrd@_@!_!}
쨘! 이렇게 쉽게 flag를 얻을 수 있다.
'Write-up > HackCTF' 카테고리의 다른 글
[HackCTF] Handray (0) | 2022.01.14 |
---|---|
[HackCTF] Reversing_me (0) | 2022.01.14 |