'Tip'에 해당되는 글 12건

  1. 2014.02.22 [Linux BOF] strcpy같은 함수로 GOT Overwrite할 때
  2. 2014.02.22 [Linux BOF] pop;pop;ret 원리

strcpy같은 함수로 GOT Overwrite할 때, 가급적이면 custom stack을 생성해서 그곳에 함수의 주소를 복사 후에 그 custom stack에 있는것으로 GOT Overwrite 하는것이 가장 좋다.

 

1byte 씩 덮어 씌울경우, 1byte만 복사되는게 아니라 그 뒤에 \x00을 만날 때 까지 쭈욱 복사가 된다.

그 과정에서 엉뚱한 GOT을 overwrite할 위험이 있으므로, 가급적 custom stack을 이용하는 것이 좋다.

이 방법이 쓸수없는 그런 상황일때는 최대한 내가 복사하려는 1byte와 \x00이 가깝게 붙어잇는것을 고른다.

 

일례로 strcpy로 계속 chaining RTL을 해주면서 GOT Overwrite를 해주고 있었는데 2번째 strcpy에서 뻑가버리고 세그먼테이션 폴트를 내뱉음...

복사하는 바이트가 너무 길어서 strcpy의 GOT까지 덮어씌웠기떄문이다

:D

Posted by windowhan
,

[Linux BOF] pop;pop;ret 원리

Tip 2014. 2. 22. 01:37

제곤이 블로그(xer0s.tistory.com)를 보고 알게 되었다.


call로 정상적으로 특정 함수를 호출 했을 때, 함수가 끝나고난 후 코드를 실행 시키기 위해서 saved eip를 스택에 푸시합니다.

ret으로 특정 함수를 호출하고 그 함수가 끝나면 saved eip가 되있어야할 위치의 값을 호출합니다.
따라서 [system][exit]["/bin/sh"] 이런 구성도 가능합니다

Posted by windowhan
,