나의 기록, 현진록

[War Game] pwnable.kr fd 본문

War Game/pwnable.kr

[War Game] pwnable.kr fd

guswlsdk 2018. 3. 29. 02:28
반응형

pwnable.kr

fd










.
a를 인자로 하여 실행 했더니

리눅스 파일 입출력에 대해 공부하라고 반응하였다.


코드 분석

atoi 함수는 문자열을 정수로 변환하는 함수이다.

아스키코드 값을 이용한다.


fd에는 인자로 받은 문자열을 정수로 바꾸어 0x1234 만큼 뺀으로 초기화된다.

0x1234는 16진수로서 10진수로 바꾸면 4660이다.



다음은 read 함수이다.

read(int fd, void *buf, size)

fd는 파일 디스크립터

*buf는 read할 버퍼이다.

size는 얼마만큼 읽은 것인지에 대한 크기이다.



fd 파일 디스크립터란 

파일을 관리하기 위해 운영체제가 요구하는 정보이다.

리눅스의 경우 파일 디스크립터는 다음과 같다.

0인 경우 : 표준 입력
1인 경우 표준 출력
2인 경우 표준 에러

이와 같이 리눅스는 정의하고 있다.


그 다음 strcmp 함수로 buf가 LETMEWIN일 경우 거짓이지만

!strcmp로 인해 결과가 참으로 바뀌어 if문을 통과하고

good job 출력 후

root 권한의 flag를 실행할 수 있다.


그럼 표준 입력 상태를 만들어 LETMEWIN을 입력하면 될 것 이다.






fd가 0이 되어야 표준 입력 상태가 되는 데

fd는 atoi(argv[1])-4660 이다

fd 가 0의 값을 가지려면

4660을 입력하면 된다.



반응형

'War Game > pwnable.kr' 카테고리의 다른 글

[War Game] pwnable.kr random  (0) 2018.05.01
[War Game] pwnable.kr passcode  (0) 2018.04.26
[War game] pwnable.kr bof  (0) 2018.04.03
[War Game] pwnable.kr collision  (0) 2018.04.02
pwnable.kr 접속 방법  (0) 2018.03.29