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

Mitigation Vulnerability Analysis fgets( [ebp-0x808], 0x400, stdin ) snprintf( [ebp-0x408], 0x400, [ebp-0x808]) [ebp-0x808]을 [ebp-0x408]에 출력 → snprintf함수의 경우 Format String Bug 발생 가능 printf( [ebp-0x408] ) 바이너리 파일 실행 (Format String Bug를 이용하기 위해 stack 확인) flag라는 shell을 따오는 함수가 존재함 → FSB를 이용해 printf의 got를 flag함수의 주소로 got overwrite 실시 → printf가 실행되는 대신 flag함수 실행 Exploit code Result

Mitigation Vulnerability Analysis gdb를 통해 main함수 분석 0x08048505를 보면 DWORD PTR [ebp-0xc]의 값을 eax레지스터에 넣고 call → [ebp-0xc]에 shell을 얻을 수 있는 함수를 넣어주면 해당 함수가 실행되어 shell을 얻을 수 있음 fgets 함수를 통해 [ebp-0x8c]에서 0x85 size의 입력 값을 받을 경우 [ebp-0xc]를 원하는 값으로 바꿀 수 있음 shell을 얻을 수 있는 함수 → 0x0804849b shell [ebp-0xc]를 0x804849b로 바꿔주자 Exploit code Result

Mitigation Vulnerability Analysis gdb를 통해 main함수 분석 target위치에 system("/bin/dash")가 존재 분기를 살펴보면 0x08048543의 cmp명령을 통해 [ebp-0xc]와 0xdeadbeef를 비교 True → target방향으로 진행 False → 0x804857c로 jump 프로그램 종료 위를 살펴보면 fgets함수를 통해 [ebp-0x34]에 0x2d size만큼을 입력 가능 → [ebp-0xc]에 원하는 값을 입력할 수 있음 → 이 곳에 0xdeadbeef를 입력하자 Exploit code Result