ssh로 접속을 해보면
fd, fd.c와 flag가 있다.
flag는 읽어보면 권한이 부족해서 읽을 수 없다.
fd 바이너리에 fd_pwn으로 setUID가 걸려있다.
fd.c를 읽어보면 command line argument 받아서 그 fd에서 0x1234를 빼서 읽고, LETMEWIN\n이면 flag를 읽어준다.
proc 먼저 확인해보려고 들어갔는데 거부됐다.
그래서 ps도 안 먹힌다.
/dev/fd를 들어가면 현재 프로세스의 fd를 확인할 수 있다.
/dev/fd는 /proc/self/fd의 심볼릭 링크가 걸려있다.
stdin, stdout, stderr인 0, 1, 2가 보이고, 다른 fd가 보인다.
여기서 이 프로세스의 fd를 확인할 수 있다.
파일에 LETMEWIN\n을 쓰고, ~/fd한테 그 파일의 fd + 0x1234를 넘겨주면 flag를 얻을 수 있다.
원래 파일을 하나 만들어서 LETMEWIN\n을 쓰고 open 한 다음, /dev/fd를 확인하고 넘기려고 했는데, 마땅히 쓸 곳이 없길래, stdin을 넘겼다.
stdin은 0이니까 0x0 + 0x1234 = 4660이 되고, 이걸 넘겨주면 된다.
'WARGAME > pwnable.kr' 카테고리의 다른 글
pwnable.kr random write-up (0) | 2022.08.20 |
---|---|
pwnable.kr passcode write-up (0) | 2022.08.16 |
pwnable.kr flag write-up (0) | 2022.08.15 |
pwnable.kr bof write-up (0) | 2022.08.15 |
pwnable.kr collision write-up (0) | 2022.08.15 |