zj3t

email: euntaejang@gmail.com

Latest Posts

LOB-level7

By 오후 5:04 ,


#include <stdio.h>
#include <stdlib.h>

extern char **environ;

main(int argc, char *argv[])
{
char buffer[40];
int i;

if(argc < 2){
printf("argv error\n");
exit(0);
}

// here is changed!
if(strlen(argv[0]) != 77){
                printf("argv[0] error\n");
                exit(0);
}

// egghunter 
for(i=0; environ[i]; i++)
memset(environ[i], 0, strlen(environ[i]));

if(argv[1][47] != '\xbf')
{
printf("stack is still your friend.\n");
exit(0);
}

// check the length of argument
if(strlen(argv[1]) > 48){
printf("argument is too long!\n");
exit(0);
}

strcpy(buffer, argv[1]); 
printf("%s\n", buffer);

        // buffer hunter
        memset(buffer, 0, 40);
}

저 빨간 글씨의 함수가 추가되었습니다.

이는 argv[0]은 실행하는 파일의 글자수라고 알고있어서 77개의 a로 이루어진 파일로 익스플로잇을 짜서 공격실행했는데 안되서 고민하다가

./실행파일 에서 ./도 포함된다는 것을 알아서 75로 공격했더니 성공했습니다.

그외 달라진 것은 없었습니다.


You Might Also Like

0 개의 댓글