시스템 해킹

 1576, 1/79 회원가입  로그인  
   miny480
   http://master.ffhosting.net
   BOf관련 질문입니다.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1580 [복사]


#include<stdio.h>
void f()
{
        printf("Assignment #2\n");
}
int main(int a, char **b)
{
        char c[256];
        strcpy(c,b[1]);
}


이러한 문제가 있습니다.

정상적인 루틴을 통해 f() 를호출 못하죠. 여러가지 방법이 있겠지만 BOF 만을 사용해야 한다고 가정할때,

대략 aaaaaaaaaa 나 char 형 문제를 많~이 써주면, return 값이 변조됩니다만.

저한겐 그게 한계;;;
참고로 리눅스환경이고

x $rsp, $rbp 등으로 register 값을 측정하면서 해봤지만.... 한계에 봉착하여 이렇게 질문드립니다.

어떻게 해결해야할까요..?


  Hit : 3462     Date : 2012/05/29 10:39



    
cd80 세그폴 계속 뜨게하셔서 코어파일 보시면서 몇바이트를 넣어야될지 확인하시고
리턴어드레스가 되는부분에 f()함수의 주소를 써넣어주시면됩니다
f()함수 주소는 gdb로 파일을 여셔서 x f 명령어로 확인하세용

근데 말씀하신 내용을 보면 실습하고 계신 환경이 64비트에 커널 2.6 이상 리눅스일거같은데
처음 공부하실땐 32비트 커널 2.2 or 2.4 를 추천드립니다
2012/05/29