-
Pwnable.kr 1번 Toddler's bottle fdWeekHack/Pwnable 2019. 9. 19. 01:43반응형SMALL
pwnable.kr 을 처음부터 풀어보려합니다. 오랜만에 작성하는 포너블 라업이군요
ssh pwnable.kr -p 2222 fd/guest
실행
아무것도 하지 않고 실행하면 pass argv[1] a number이 뜨고 종료됩니다.
분석
c언어 파일이 주어져서 따로 바이너리를 디스어셈블하거나 리버싱할 필요가 없었습니다.
이런 식으로 소스코드가 있습니다. 간단히 작동 순서를 풀어 써 본다면,
- 입력 받은 값을 정수형을 바꾼 다음 0x1234(4660)만큼 뺀 값을 fd에 저장합니다.
- 32만큼 buf에 read()함수로 입력을 받습니다. 그 중 첫 인자인 file_descriptor은 fd의 정수값입니다.
- 만약 read로 입력 받은 값이 LETMEWIN\n일 경우 flag를 출력합니다.
익스플로잇
따라서 0x1234(4660)에 1을 더한 4661을 첫번째 인자값으로 보내면, fd가 1이 되어 정상적으로 read()할 수 있을 것입니다.
4661을 첫번째 인자값으로 넣으면 아무것도 넣지 않고 실행했을 때와 다르게 입력을 받고 아무거나 입력을 할 경우 learn about Linux file IO가 뜨고 그냥 종료됩니다.
해당 입력이 LETMEWIN이 되어야 할 것 입니다.
성공적으로 문제가 풀리는 것을 확인할 수 있습니다.
반응형LIST