Wargame/pwnable.kr

fd Write-Up

LikeMermaid 2021. 10. 18. 05:34
728x90

1. 문제 코드

- 문제 제목처럼 fd(파일디스크립터)를 이용한 버퍼 오버플로우 문제로 보임

2. 문제 풀이

- 파일 실행 시 전달 인자는 atoi 함수를 통해 문자형 -> 정수형 으로 변환됨

 

- 위 설명은 기본 파일디스크립터이며 read(0,buf,len) 로 만들면 buf에 원하는 값을 입력하여 덮을 수 있기 때문에 fd를 0으로 만들기 위해서는 atoi(전달인자) - 0x1234 = 0 공식이 성립이 되야함

 

- 전달인자로 4660을 입력하면 atoi(4660)이 되며 0x1234는 10진수로 변환하면 4660이기 때문에 atoi(4660) - 0x1234(4660) = 0 공식이 성립되어 위 사진처럼 원하는 값을 입력할 수 있음

 

- 해당 if문이 참(true)이라면 flag를 획득할 수 있으므로 해당 조건을 만족시켜야하며 !strcmp 이기 때문에 "LETMEWIN\n"과 buf의 내용이 같게 된다면 1을 반환하게 됨

 

- 인자값으로 4660을 입력하고 buf에 LETMEWIN을 덮어주면 flag를 획득할 수 있음