DINGA DINGA
article thumbnail
[LOB] cobolt → goblin
SYSTEM/LOB 2021. 3. 4. 23:59

1. cobolt/hacking exposed로 로그인 2. bash2, ulimit -c unlimited 명령어 실행 후 ls -l로 디렉터리 내부 파일 확인 3. goblin.c 내용 확인 버퍼의 크기가 16바이트로 작아 환경변수가 필요하고, gets함수가 사용되는 것을 알 수 있다. 4. 환경변수 선언 사용한 쉘코드는 다음과 같다. "\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" 5. 환경변수 값을 가져오는 get.c 파일 생성 6. 컴파일 후 실행 환경변수 shellcode의 주소: 0xbfffff65 7. 공격코드 구성 및 비밀번호 획득 환경변수 주소값을 바탕..

article thumbnail
[LOB] gremlin → cobolt
SYSTEM/LOB 2021. 3. 4. 23:34

1. gremlin/hello bof world로 로그인 2. bash2, ulimit -c unlimited 명령어 실행 후 ls -l로 디렉터리 내부 파일 확인 3. cobolt.c 내용 확인 buffer에 할당된 크기가 너무 작아 쉘코드를 넣지 못한다. 따라서 쉘코드를 환경변수에 저장할 것이다. 4. 환경변수 선언 환경변수는 export변수=값 명령어로 선언한다. 사용한 쉘코드는 다음과 같다. "\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" 5. 환경변수 값을 가져오는 get.c 파일 생성 6. 컴파일 후 실행 환경변수 shellcode의 주소: 0xbfffff63..

article thumbnail
[Dream hack] Linux Exploitation & Mitigation Part 1 中 Return Address Overwrite & NOP Sled
SYSTEM/개념 정리 2021. 3. 4. 22:54

Return Address Overwrite 1. RET Overwrite - 1 - 리턴 주소를 덮어 실행 흐름을 조작해 공격자가 원하는 코드를 실행함. 2. RET Overwrite - 2 - example1.c에서는 argv[1]을 vuln함수의 인자로 전달함. - vuln함수에서는 src 버퍼를 buf 버퍼에 strcpy함수를 이용해 복사함. - strcpy 함수는 피복사 버퍼에 대한 길이 검증이 없기 때문에, 프로그램의 첫번째 인자에 buf 배열의 크기보다 긴 문자열을 넣으면 스택 버퍼 오버플로우가 발생함. - x86 아키텍처 호출 규약에 의해 vuln함수가 호출되면 vuln함수의 인자인 src 문자열 포인터가 스택에 먼저 쌓임 → vuln함수의 리턴 주소가 쌓임 → 함수의 프롤로그에서 ebp ..

article thumbnail
[Dream hack] Memory Corruption - C (I) 中 스택 버퍼 오버플로우
SYSTEM/개념 정리 2021. 3. 4. 21:10

1. 버퍼 오버플로우란? - 버퍼: 지정된 크기의 메모리 공간 - 버퍼 오버플로우: 버퍼가 허용할 수 있는 양의 데이터보다 더 많은 값이 저장되어 버퍼가 넘치는 취약점 - 발생하는 위치에 따라 스택 버퍼 오버플로우, 힙 오버플로우로 나뉨 - 스택 버퍼 오버플로우: 지역 변수가 할당되는 스택 메모리에서 오버플로우가 발생하는 경우 - 버퍼 A가 8바이트, 버퍼 B가 8바이트일 때 16바이트의 데이터가 버퍼 A에 복사되면 이 데이터의 뒷부분은 B에 쓰여짐 (버퍼 오버플로우). 이는 프로그램의 Undefined Behavior를 이끌어냄. - 만약 데이터 영역 B에 나중에 호출될 함수 포인터를 저장하고 있다면 이 값을 "AAAAAAAA"와 같은 데이터로 덮었을 때 Segmentation Fault를 발생시킴. ..

728x90