푸르미르

pwnable.kr 1. fd 본문

SECURITY/pwnable

pwnable.kr 1. fd

((•_•)) 2021. 3. 22. 21:36

포너블이란 운영 체제나 소프트웨어, 하드웨어에 내재된 보안 취약점을 해킹하는 것. 흔히 리트에서 따온 pwn을 써서 포너블(Pwnable)이라고도 부른다.

오늘은 pwnable.kr의 1번 문제 fd를 풀어보자.

문제이름이 fd 인데 file descriptor을 연상케한다. 이게 힌트일까?

 

 

문제 내용을 살펴보자.

 

 

beginner이면 해당 유튜브 링크로 들어가서 보라는거고,

그 아래 ssh fd@pwnable.kr -p2222로 가라는 것같다.

결국 알아야 하는 것은 flag인 것이다. 

리눅스 창에서 들어가보자.

fd유저로 ssh로 pwnable.kr애 접속하라는 것인데, - p옵션을 보면 default ssh port 대신 2222포트로 하라는 것이다.(passwd: guest)

내 리눅스에는 ssh가 설치가 되어있지 않기때문에 먼저 openssh-server을 설치해보자

 

설치

 

 

설치 확인

 

ssh fd@pwnable.kr -p2222하면

 

 

프롬프트를 보면 fd유저로 pwnalble에 들어간 것을 확인 할 수 있다. 

ls -al로 파일들이 뭐가 있는지 확인해보자.

 

 

flag 파일이 있는데 권한을 살펴보면 fd유저인 내가 읽을 권한은 없다. 

 

일단 fd.c 파일을 보면,

 

argc가 2개 이상일 때,

atoi(argv[1])로 char to int로 하여 0x1234로 빼준 후 fd변수에 넣는다.

fd를 파일 지정 번로 하여 read함수로 파일을 읽어 buf에 32바이트를 저장한다. 이때 파일 읽기를 성공하였으면 0보다 큰수를 반환하고 읽을 데이터가 없을 때 (EOF) 0을 반환한다. 그래서 len을 결성하고, "LETMEWIN\n"과 buf를 비교하여 동일하면 flag value를 출력해준다는 것이다.

이것을 알고 fd file을 실행시키면, 따라서 0x1234는 10진수로 4660이기 때문에

 

 

 

'SECURITY > pwnable' 카테고리의 다른 글

pwnable.kr 6.random  (0) 2021.04.06
pwnable.kr 5.passcode (문제 파악)  (0) 2021.03.31
pwnable.kr 4.flag  (0) 2021.03.31
pwnable.kr 3.bof  (2) 2021.03.24
pwnable.kr 2.collision  (0) 2021.03.24