y0u_bat

[Pwnable.kr] fd - 1pt 풀이 본문

System/[Pwnable.kr]

[Pwnable.kr] fd - 1pt 풀이

유뱃 2015. 7. 24. 07:13


[Pwnable.kr] fd - 1pt  풀이




리눅스 파일디스크럽터에 대해 아냐고 물어본다.


파일 디스크럽터에 대한 문제 인가보다.


파일 디스크럽터에 대해 알아야된다.

http://y0ubat.tistory.com/31  - 설명



접속해서 fd.c 를 보았다.


우선 argv[1] 에 입력을 해야되고,

read(fd,buf,32); 에 의해 buf에 32글자까지 입력가능하다.

만약에 buf가 LETMEWIN 이면 flag을 읽고 아니면 file IO에 대해 배우라는 문장이 뜨고 종료한다.


int fd = atoi(argv[1]) -0x1234;


여기서 atoi라는 함수가 나온다.

http://y0ubat.tistory.com/30 - 설명


파일 디스크럽터

0 stdin - 입력

1 stdout - 출력

2 stderr - 에러


우리는 여기서 입력을 해야되니 fd를 0으로 만들어줘야된다.


atoi(argv[1]) - 0x1234 이  fd  이다

 


0x1234은 4660이다.

fd를 0으로 만들기 위해 argv[1]의 적절한 값을 넣어준다.



fd를 0으로 만들었다면, argv[1]을 넣고 파일을 실행한뒤에 입력 할 수 있을것이다.


아까 if으로 LETMWIN이  buf면 flag가 출력이 된다고 했었다.


LETMEWIN을 입력해보자 


입력해보면 플래그가 출력되는것을 알 수 있다.


클리어.

'System > [Pwnable.kr]' 카테고리의 다른 글

[Pwnable.kr] leg - 2pt 풀이  (0) 2015.07.25
[Pwnable.kr] random - 1pt 풀이  (0) 2015.07.24
[Pwnable.kr] passcode - 10pt 풀이  (0) 2015.07.24
[Pwnable.kr] bof - 5pt 풀이  (0) 2015.07.24
[Pwnable.kr] collision - 3pt 풀이  (0) 2015.07.24
Comments