728x90

사람이 만들어 놓은 문제를 시간제약 없이 푼다고 가정했을때, 가장 중요한 점은 출제자의 의도 파악이다.

이 문제를 푸는게 목적이 아니라 이 문제를 통해서 개념을 배우는 입장이므로, 출제자의 의도를 파악하는 과정이 

가장 중요하다. 

 

우선, c파일을 읽어보면, egghunter가 있으므로 환경변수를 이용한 풀이는 제외.

처음보는 bufferhunter 코드를 보면 buffer에다가 shell코드를 넣는 풀이도 제외다.

 

어떻게 풀까?

 

우선 buffer에 값이 들어가는 방식을 잘 살펴보면, argv에 있던 값을 strcpy로 buffer에 넣어준다.

즉, buffer를 사용할 수 없다면 argv를 이용하면 될 것이다.

 

일단 늘 하던것처럼 intel로 disas해주면, 

 

이렇게 나오는데, bufferhunter의 작업이 끝난 230번에 b를 걸어주고, 주소를 보자.

bffffc5c 가 argv의 주소인것 같다.

한번 해보자.

 

 

페이로드가 nop슬라이드로 감싸준 경우도 있지만, 지금까지 풀어봤을때 그걸 감싸준다고 해도 주소가 완전히 다르면

에러가 나기에 지금은 딱히 감싸줄 필요가 없는것 같다.

 

728x90

'pwnable > LOB' 카테고리의 다른 글

LOB 7번  (0) 2020.07.25
LOB 6번  (0) 2020.07.25
LOB 4번  (0) 2020.07.22
LOB 3번  (0) 2020.07.19
LOB 2번  (0) 2020.07.12

+ Recent posts