HackCTF reversing에서 세 번째 문제는 Handray이다.
파일 포맷을 확인해 본 결과 ELF 64bit 실행 파일이었다.
파일을 실행시키기 전 권한을 부여해 주자. 이 권한에 대해 자세한 내용은 여기서 다루겠다.
파일을 실행시키면 바로 flag를 뛰어넘었다는 문구가 뜨면서 프로그램이 종료된다. IDA로 분석을 해 보자.
main 함수 부분을 먼저 살펴보자.
애초에 설정된 것이 loc_40058D로 점프해 flag를 뛰어넘고 프로그램이 종료되고 있음을 확인할 수 있다. 따라서 저 부분으로 점프하지 못하게 분기문을 수정해 주면 될 것 같다.
gdb로 본 main 함수 부분이다.
이 부분이 문제의 부분이다. <main+103>의 위치로 가게 되면 flag를 뛰어넘었다는 문구를 출력하면서 프로그램이 종료되므로 아래와 같이 [rbp-0x4] 값을 0x0으로 설정해 주면 <main+103>으로 점프하지 않는다.
분기문에서 <main+103>으로 점프하지 않으면 loc_400571 부분에서 반복문을 돌아 플래그를 구하고, 플래그를 출력하게 된다. 이 반복문에서는 string 배열과 array 배열, 2개의 배열을 이용한다. 두 배열의 값을 더한 값을 다시 string 배열에 넣어 flag가 출력된다. 이제 flag가 어떻게 출력되는지 알았으니 프로그램을 실행시켜 보자.
플래그를 성공적으로 구할 수 있고, 인증해 주면 된다.
[HackCTF-Reversing#6] static - 250 points (0) | 2021.01.06 |
---|---|
[HackCTF-Reversing#5] keygen - 200 points (0) | 2021.01.06 |
[HackCTF-Reversing#4] Strncmp - 150 points (0) | 2021.01.05 |
[HackCTF-Reversing#2] Reversing Me - 100 points (0) | 2021.01.02 |
[HackCTF-Reversing#1] Welcome_REV - 50 points (0) | 2021.01.01 |
댓글 영역