CTF 스터디

[pwnable.kr] 1번_fd 풀이

dalgorithm 2021. 3. 15. 19:58
728x90

 

포너블 1번_fd 문제 풀이

 

먼저 맨 아래 ssh gd@pwnable.kr -p2222를 통해 접속해야하는 것 같다.

 

 

비밀번호는 guest를 입력해주었다. 

 

처음에 여기서 더 어떤걸 해야하는지 모르겠어서 어떤 파일이 있는지

확인해보려고 ls 명령어를 입력했다.  fd, fd.c, flag 파일 총 3개가 있었다. 

 

fd.c와 flag의 경우 root 권한이기 때문에 확인할 수 fd를 실행해보았다.

""pass argv[1] a number"이라는 문구가 떴다. 숫자를 함께 입력해야 하는 것 같다.

 

fd.c는 권한이 거부되어서 cat으로 내용을 확인해보았다.

fd = atoi(argv[1]) - 0x1234 부분이 중요해보인다. fd 값이 read함수에서 

fd가 0이면 표준입력, 1이면 표준 출력, 2이면 표준에러 출력을 나타낸다.

그 후, strcmp함수로 "LETMEWIN"과 버퍼 값을 비교해 같으면 flag를 출력해준다.

 

argc는 2 이상이어야하고,

따라서 argv[1] = 0x1234 가 되면 0이 되어서 표준입력이 된다.

 

 

0x1234를 10진수로 바꾸면 4660이다.

그리고 strcmp에서 같아야하므로 LETMEWIN을 입력해준다.

그러면 아래에 flag 값이 나오는 걸 확인할 수 있다.

 

728x90