Bazinga!
버퍼 오버플로우와 취약점 본문
https://youtu.be/1S0aBV-Waeo?si=vF0ViXxAqscBe6UW
버퍼 오버플로우란?
낮은 수준의 메모리 공격이다.
버퍼 오버플로우 공격은 아마도 낮은 수준의 c함수나 무언가를 사용하여 문자열이나 다른 변수를 특정 길이의 메모리 조각에 쓰는 상황이다.
하지만 우리는 그보다 더 긴 내용을 쓰려고 할때 이후의 메모리 주소를 덮어쓰게 되어 모든 종류의 문제가 발생할수있
프로그램이 실행될 때 메모리에서 어떤 일이 일어날까?
프로그램이 운영체제에 의해 실행될 때, 우리는 쉘에 있고 프로그램을 실행하기 위한 명령을 입력한다.
운영체제는 코드의 기본 메소드를 함수로서 효과적으로 호출한다.
그러나 실제 프로세스, 실행 파일은 매우 특정한 방식으로 메모리에 보관된다.
서로 다른 프로세스 간에 일관된다.
함수란?
무언가를 수행하고 이전 위치로 다시 돌아가는 코드 영역
080491a6 size_t sub_80491a6()
080491a6 55 push ebp {__saved_ebp}
080491a7 89e5 mov ebp, esp {__saved_ebp}
080491a9 53 push ebx {__saved_ebx} {data_804c000}
080491aa 83ec14 sub esp, 0x14
080491ad e82effffff call sub_80490e0
080491b2 81c34e2e0000 add ebx, 0x2e4e
080491b8 83ec0c sub esp, 0xc
080491bb 8d8308e0ffff lea eax, [ebx-0x1ff8] {data_804a008, "size: "}
080491c1 50 push eax {data_804a008, "size: "}
080491c2 e899feffff call printf
080491c7 83c410 add esp, 0x10
080491ca 8b83fcffffff mov eax, dword [ebx-0x4] {stdin}
080491d0 8b00 mov eax, dword [eax]
080491d2 50 push eax {var_20}
080491d3 6a01 push 0x1
080491d5 6a04 push 0x4 {var_28}
080491d7 8d45f4 lea eax, [ebp-0xc {var_10}]
080491da 50 push eax {var_10} {var_2c}
080491db e890feffff call fread
080491e0 83c410 add esp, 0x10
080491e3 83ec0c sub esp, 0xc
080491e6 8d830fe0ffff lea eax, [ebx-0x1ff1] {data_804a00f, "buf: "}
080491ec 50 push eax {data_804a00f, "buf: "}
080491ed e86efeffff call printf
080491f2 83c410 add esp, 0x10
080491f5 8b83fcffffff mov eax, dword [ebx-0x4] {stdin}
080491fb 8b10 mov edx, dword [eax]
080491fd 8b45f4 mov eax, dword [ebp-0xc {var_10}]
08049200 52 push edx {var_20_1}
08049201 50 push eax {var_24}
08049202 6a01 push 0x1 {var_28}
08049204 8d8360000000 lea eax, [ebx+0x60] {buf}
0804920a 50 push eax {buf}
0804920b e860feffff call fread
08049210 83c410 add esp, 0x10
08049213 90 nop
08049214 8b5dfc mov ebx, dword [ebp-0x4 {__saved_ebx}]
08049217 c9 leave {__saved_ebp}
08049218 c3 retn {__return_addr}
08049219 int32_t main(int32_t argc, char** argv, char** envp)
08049219 8d4c2404 lea ecx, [esp+0x4 {argc}]
0804921d 83e4f0 and esp, 0xfffffff0
08049220 ff71fc push dword [ecx-0x4 {__return_addr}] {__return_addr_1}
08049223 55 push ebp {__saved_ebp}
08049224 89e5 mov ebp, esp {__saved_ebp}
08049226 53 push ebx {__saved_ebx} {data_804c000}
08049227 51 push ecx {argc} {var_10}
08049228 e8b3feffff call sub_80490e0
0804922d 81c3d32d0000 add ebx, 0x2dd3
08049233 e86effffff call sub_80491a6
08049238 83ec08 sub esp, 0x8
0804923b 8d8315e0ffff lea eax, [ebx-0x1feb] {data_804a015, "Kenterkey Fried Chicken"}
08049241 50 push eax {var_1c} {data_804a015, "Kenterkey Fried Chicken"}
08049242 8d83e0000000 lea eax, [ebx+0xe0] {target}
08049248 50 push eax {var_20} {target}
08049249 e8f2fdffff call strcmp
0804924e 83c410 add esp, 0x10
08049251 85c0 test eax, eax
08049253 7514 jne 0x8049269
08049255 83ec0c sub esp, 0xc
08049258 8d832de0ffff lea eax, [ebx-0x1fd3] {data_804a02d, "Good Job :)"}
0804925e 50 push eax {var_20} {data_804a02d, "Good Job :)"}
0804925f e81cfeffff call puts
08049264 83c410 add esp, 0x10
08049267 eb12 jmp 0x804927b
08049269 83ec0c sub esp, 0xc
0804926c 8d8339e0ffff lea eax, [ebx-0x1fc7] {data_804a039, "Try Again"}
08049272 50 push eax {var_20} {data_804a039, "Try Again"}
08049273 e808feffff call puts
08049278 83c410 add esp, 0x10
0804927b b800000000 mov eax, 0x0
08049280 8d65f8 lea esp, [ebp-0x8]
08049283 59 pop ecx
08049284 5b pop ebx {__saved_ebx} {data_804c000}
08049285 5d pop ebp {__saved_ebp}
08049286 8d61fc lea esp, [ecx-0x4]
08049289 c3 retn
'수업기록 > 시스템 해킹' 카테고리의 다른 글
python 쉘 코드와 함수 이용하여 파일 열기 (0) | 2024.08.06 |
---|---|
[시스템 보안] 시스템 해킹 조사 유의사항 (0) | 2024.08.03 |
[시스템 보안] 바이너리 닌자 사용해보기 (0) | 2024.08.02 |