[LOB] gremlin -> cobolt
ㄹㅇ
ㅇㄹ
cobolt 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* The Lord of the BOF : The Fellowship of the BOF - cobolt - small buffer */ int main(int argc, char *argv[]) { char buffer[16]; if(argc < 2){ printf("argv error\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } | cs |
bash2실행하고 gdb로 까봤다
스택에 16바이트가 할당되어있다. 역시 더미가 없으므로 메모리구조를 생각해보면
| buffer(16Byte) | sfp(4Byte) | ret(4Byte) |
이렇게 된다. 버퍼의 크기가 작아 버퍼에 쉘코드를 쓰는 대신 환경변수를 이용해 풀겠다
NOP과 쉘코드가 있는 환경변수 shellcode를 등록하고 주소를 찾았다.
1 2 3 4 5 6 7 8 9 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char *addr; addr=getenv(argv[1]); printf("The address of %s is %p\n",argv[1],addr); return 0; } | cs |
*환경변수 주소를 구하는 소스
페이로드와 결과
'System > LOB' 카테고리의 다른 글
[LOB] wolfman -> darkelf (0) | 2015.03.25 |
---|---|
[LOB] orc -> wolfman (0) | 2015.03.24 |
[LOB] goblin -> orc (0) | 2015.03.21 |
[LOB] cobolt -> goblin (0) | 2015.03.20 |
[LOB] gate->gremlin (0) | 2015.03.17 |