overflow로 stack retrun address 바꾸는 방법?
글쓴이: dalili / 작성시간: 목, 2011/12/22 - 5:58오후
#include
#include
#include
void func1();
void func2();
int main(int argc, char **argv)
{
func1();
}
void func1()
{
char str[4];
// overflow code
}
void func2()
{
printf("call func2\n");
}
실행시 func2 호출되게 stack의 return address 를 바꿔 보려고 하거든요
해봤는데 잘 안되네요
어떻게 해야 하나요?
Forums:
쉽습니다. void
쉽습니다.
알려드릴게요
func2 주소를 얻어내시구요. func1() 에서 str 크기인 4byte+sfp 하면 return address 주소가 계산되는데요 그 주소에다가 func2() 넣어주면 실행하면 func2가 호출되긴 할거에요.
근데 일단 이거 요즘 리눅스에서 하시려면 스택가드나 , 랜덤 스택 따위 옵션 다 끄고하셔야지 안그러면 안됩니다.
이건 혼자서 그냥 캐삽질을 엄청 하면 됩니다.
옵션 안끄면 안되나 보군요
이론은 대충 알고 있는데 삽질 많이 해봤는데 잘 안되더라고요
옵션 끄고 다시 삽질 해봐야겠네요
감사합니다
댓글 달기