반응형
이번에 풀 문제는 fd
File Descriptor(파일 디스크립터)입니다.
ssh로 접속해서 확인해봅니다.
Ubuntu 환경에서 terminal에
이렇게 해주고
패스워드로는 guest
그럼 접속을 하는데
여기서부터 풀이를 시작해봅시다.
풀이
사실 파일디스크립터라는 이름을 몰라도
read함수의 사용법만 알면 풀 수 있을 것입니다.
read함수는 인자로 3개를 받는데
fd, buf, size
입니다.
read(fd, buf, size)
다른 글에서도 이미 몇 번 설명했지만
fd = 0 : stdin (표준 입력)
fd = 1 : stdout (표준 출력)
fd = 2 : stderr (표준 에러)
입니다.
cat flag를 그냥 하면 권한이 없어서
fd.c라는 코드를 보고 fd를 exploit합니다.
fd.c를 보면,
인자가 없으면 그냥 종료하고
인자로 입력된 문자열을 atoi를 써서 숫자로 바꾸고 0x1234를 뺀 값을 fd에 넣습니다.
strcmp를 했을 때 "LETMEWIN\n"과 buf에 있는 내용이 같으면 good job를 출력하고 flag를 보여줍니다.
그러면 read가
표준 입력으로
read(0, buf, 32)로 되도록 하여
fd를 0이 되게끔 만들어주고 그냥 입력으로 LETMEWIN을 입력해주면 될 것입니다.
0x1234 = 4660 이니까
인자가 4660이면 fd가 0이되어 입력받을 수 있습니다.
그렇게 하여 실행하면
짜잔.
반응형