시스템 해킹

pwnable.kr fd 문제 풀이

kchabin 2022. 8. 2. 23:54

문제

호스트 이름과 포트 번호, 패스워드를 준 것으로 봐서 해당 서버에 접속하라는 것으로 보인다.

그래서 칼리 리눅스로 이동해서 접속했다. 엔터 누르고 yes 누르고 패스워드 입력하라고 하면 guest를 입력한다. 

ls를 입력해서 파일을 확인해보니 fd, fd.c, flag 파일이 보인다

flag 파일 열려고 했는데 암호를 모른다. fd로 알아내야 할 것 같다.

리버싱이랑 비슷한 느낌이다.

argv[1]이라고 숫자를 입력해야하는 것 같다. atoi로 입력한 문자열을 숫자로 바꿔준다.

read(fd, buf, 32)는 파일 디스크립터 값, 저장할 버퍼, 읽을 크기를 넣어 전달해주는 함수이다. 

0이면 표준입력이다. 이 부분이 좀 해석하기 힘든데, 아마 입력받은 값을 버퍼에 저장해주는거니까 fd가 0이어야하는거 아닐까 생각했다. 그리고 숫자를 제대로 입력하고 나서 LETMEWIN과 buf가 다르면 flag를 출력해주는 형태인 것 같다.

fd가 0이려면 argv[1]의 값이 0x1234여야한다. 근데 ./fd를 할 때 숫자를 넘기라는 것 같다.  

16진수는 틀린것같다.

16진수를 십진수로 변환해서 파일을 실행하고 LETMEWIN을 입력해줬더니 flag가 출력됐다.

성공!

'시스템 해킹' 카테고리의 다른 글

pwnable.kr collision  (0) 2022.08.12
set UID  (0) 2022.08.10
질문 - 2주차  (0) 2022.08.05
quizmachine 문제 풀이  (0) 2022.08.04
SSH, File Descriptor, nc 명령어  (0) 2022.08.03