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를 획득할 수 있음