[LOB] gremlin -> cobolt

Posted by dw0rdptr
2015. 3. 18. 15:18 System/LOB

ㄹㅇ

ㅇㄹ

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