일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- srop
- seccomp
- heap exploit
- ROP
- heap
- malware
- Dynamic Analysis
- 나뭇잎 책
- HackCTF
- H4CKING GAME
- BOF
- GOT overwrite
- vtable
- master canary
- Android
- RTL
- DFB
- K-shield Junior
- __environ
- DreamHack
- shellcode
- Reversing
- UAF
- heap feng shui
- _IO_FILE Arbitrary Address Write
- tcache
- _IO_FILE Arbitrary Address Read
- _IO_FILE
- DFC 2022
- Lazenca
- Today
- Total
목록RTL (5)
Studying Security

Mitigation Vulnerability Analysis 바이너리 파일 실행 흐름 Hey guyssssssss here you are: 어떤 값1 어떤 값2 입력 값을 받음 받은 입력 값을 출력 입력 값을 또 받음 이제 gdb를 통해 자세히 알아보자 1번 과정에서 어떤 값1, 2가 무엇을 의미하는지 살펴보면 어떤 값1 = 0x8049940 = binsh라는데 아무 값도 쓰여 있지 않다 어떤 값2 = DWORD PTR [ebx-0x10] = system함수의 주소 2번 과정 fgets를 통해 [ebp-0x84]에 0x80size 만큼을 입력 받고 있음 (ret영역까지 overwrite할 수 없음) 3번 과정 2번 과정에서 입력 받았던 값을 출력 (Format String Bug가 발생할 수 있음) 4번..

Mitigation Vulnerability Analysis lookatme 바이너리 파일의 경우 statistically linked 되어 있는 함수였다 IDA로 열어보니 여러 함수들이 파일에 올려져 있는 것을 확인할 수 있었다 import하고 있는 library파일도 없기 때문에 system함수나 execve함수를 사용할 수가 없음... 바이너리 파일안에 있는 함수를 뒤져봐야겠다 이 곳에 mprotect라는 함수가 존재하는데 manual을 찾아보니 설명에 changes the access protections for the calling process's memory pages라고 나온다 이걸로 어떤 주소 범위의 access 권한을 변경할 수 있나보다 대신 addrss는 반드시 페이지 경계에 맞게 주..

Mitigation Vulnerability Analysis IDA disassembler를 이용해 main함수를 보자 Passcode를 입력받아 hashcode와 일치할 경우 core함수로 들어갈 수 있다 core함수에는 read가 존재하는데 이를 가지고 BOF공격을 통해 exploit할 수 있다 우선 hashcode를 통과하기 위한 값을 찾아보자 입력 값을 4byte씩 5개의 값으로 더한 값을 return함 이 return 값이 hashcode랑 같으면 통과 hashcode의 값이 0xc0d9b0a7이라는 사실을 확인했으므로 이를 위한 input값을 만들자 0x30362c29 0x30362c2a 0x30362c2a 0x30372c2a 0x00000000 이렇게 4byte씩 나눠 전달하면 모두 합친 값..

Mitigation Vulnerability Analysis IDA disassembler를 이용해 어떤 바이너리 파일인지 확인해보자 전체적으로 살펴보면 case 5에 read함수로 0x400만큼 입력받을 수 있다는 점에서 BOF를 발생시킬 수 있어 보인다 NX enabled이고 문제 제목이 RTL_World이니 만큼 RTL을 염두에 두고 RTL을 위한 재료들을 구해보자 case 3와 case 4를 보면 v6와 s1의 주소 값을 얻을 수 있음 v6 = system함수 s1 = "/bin/sh" 문자열 RTL 공격을 시행할 수 있는 재료들이 다 주어짐 위의 값들을 얻기 위해서는 gold가 필요하므로 case 2의 Get_Money함수의 4를 입력해 random한 gold 획득 1. main함수에서 획득할 ..

1. Return to Libc(RTL)이란? Return address 영역을 공유 라이브러리 함수의 주소로 변경해, 해당 함수를 호출하는 방식 NX bit(DEP)를 우회 가능 2. 함수 인자 전달 방식 x86 → 스택에 PUSH해서 전달 stack을 살펴보면 아래와 같은 구조를 지님 ebp-0x4 sfp ebp ret ebp+0x4 ??? ebp+0x8 arg1 = 1 ebp+0xc arg2 = 2 ret영역과 4byte 간격을 두고 인자를 차례로 전달하고 있음 x64 → rdi, rsi, rdx, rcx, r8, r9, 스택을 이용 (인자의 개수에 따라 다음의 순서로 전달) func함수의 register rdi 1 rsi 2 3. RTL payload 구성 위에서 살펴본 함수의 인자 전달 방식을 ..