함수의 got 구하기 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

함수의 got 구하기

생각보다 물어보는사람이 많아서... 걍 정리글 씁니다 제가 아는 방법은 두가지 방법 정도가 있는 것 같아요. 저는 첫 번째 방법을 추천합니다. 1. gdb 사용 첫 번째 방법은 gdb를 이용합니다. gdb -q (파일명)으로 gdb를 실행하고, gdb로 p (함수명) 입력해 함수의 plt주소를 찾습니다. +) 이때 프로그램을 실행시켜 함수를 실행하면 다른값을 보여주니 gdb 실행하고 다른 명령 하지말고 바로 p (함수명) 해주시길 바랍니다. 그렇게 함수의 plt를 알아낸 다음, 그 주소의 plt가 jmp하는 곳이 got주소입니다. 다음 사진의 경우 printf의 got는 0x601238입니다. 왜 저런 과정을 통해서 구해지는지 모르겠다구요? 참고1을 읽어봅시다. 기본적인 plt와 got의 지식이 필요하네..

2020.10.09 게시됨

[Stack] Fake EBP에 대하여 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Stack] Fake EBP에 대하여

FEBP(Fake EBP)에 대하여 오늘은 Fake EBP에 대해서 이야기해봅시다. FPO랑 비슷한 맥락입니다. FPO를 몰라도 충분히 이해할 수 있지만, 설명하는 과정에서 FPO와 비교를 하면서 많이 설명할 것이기 때문에 한번씩은 읽으면 좋을 것 같습니다. https://dokhakdubini.tistory.com/228?category=809542 [Stack] Frame Pointer Overflow, FPO에 대하여 오늘은 FPO, Frame Pointer Overflow에 대해서 알아볼 것입니다. SFP Overflow라고도 불립니다. FPO에 대한 풀이 글들을 보면 계속 leave가 ebp+4에 접근할 수 있다, sfp를 조작했으니 ebp를 조작할 수 있다이런.. dokhakdubini.tis..

2020.08.31 게시됨

[Stack] RET sled에 대하여 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Stack] RET sled에 대하여

오늘은 RET Sled에 대해서 알아볼 것입니다. RET Sled는 Return Address영역에 RET 명령어의 주소를 연속적으로 삽입해서 esp를 조작하는 기법입니다. 일단 RET의 구조를 한번 봅시다. Internal of "ret" pop eip jmp eip 이해를 돕기 위해 그림도 가져왔습니다. 상황 자체는 함수의 에필로그 중 leave까지 진행한 상황이라고 가정합시다. 그러면 SFP 안의 값이 ebp안으로 들어가있겠죠? 그런 뒤 esp는 RET를 가리키고 있을 거고요. 그런 뒤에 ret가 실행되면서 RET(return address)안에 있는 값이 eip에 pop되고, 그 값으로 jmp(이동)하게 됩니다. 이 그림의 경우에는 ret를 통해서 0xaabbccdd라는 주소에 접근하게 되겠죠? ..

2020.08.08 게시됨

[Stack] Frame Pointer Overflow, FPO에 대하여 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Stack] Frame Pointer Overflow, FPO에 대하여

오늘은 FPO, Frame Pointer Overflow에 대해서 알아볼 것입니다. SFP Overflow라고도 불립니다. FPO에 대한 풀이 글들을 보면 계속 leave가 ebp+4에 접근할 수 있다, sfp를 조작했으니 ebp를 조작할 수 있다이런 말들이 되게 많은데 이걸 단계별로 제대로 이해하지 못하고 넘어가면 이게 뭔 개소리지??? 하다가 포기하게 되니까 천천히 이해해봅시다. 일단 FPO가 뭔지 알아봅시다. 일단 FPO를 이해하기 위해서는 기본적인 stack구조가 어떻게 굴러가는지 알아야하며, 더불어 stack bufferoverflow가 어떻게 일어나는지 배경지식으로 알고 있어야 합니다. 그에 대해서 잘 모른다면 먼저 stack bufferoverflow에 대해서 공부를 해보고, 이 글은 buf..

2020.07.30 게시됨

[stack] 함수의 에필로그(epilogue) 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[stack] 함수의 에필로그(epilogue)

함수의 에필로그(epilogue)에 대하여 오늘은 함수의 에필로그라는걸 배울 것입니다. 보통 함수의 프롤로그와 에필로그를 묶어서 설명하는데, 모든 함수의 처음(프롤로그)과 끝(에필로그)에 공통적으로 들어가기 때문에 프롤로그와 에필로그라고 합니다. 오늘은 에필로그만 보겠습니다. 에필로그의 각 단계를 설명하고, 그림으로 다시한번 이해해 보도록 하겠습니다. Function Epilog leave ret 간단하죠? 에필로그는 leave와 ret로 구성되어있습니다. 그러나 각 단계를 더 나눠서 볼게요. Internal of "Leave" move esp, ebp pop ebp 우선 Leave입니다. ebp를 esp로 복사하여 지역변수를 정리하고, stack의 가장 위에 있는 값을 ebp에 pop합니다. 근데 여기..

2020.07.30 게시됨

[ROP] gadget찾는법 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[ROP] gadget찾는법

ROP(Return Oriented Programming)에서 가장 핵심적인 부분을 고르라고 하면 gadget을 구하는 것일 것이다. 이에는 몇가지 방법이 있다. 1. ROPgadget 이용하기 명령어는 다음과 같이 쓰면 됩니당. ROPgadget --binary (파일명) | grep '(찾을 가젯)' 짠. 다음과 같이 사용하면 된다. 위의 경우는 64비트의 경우고 32비트도 그냥 똑같다. (참고로 64비트에서 인자 받는 순서는 rdi, rsi, rdx 순서라고 한다 외우장) 근데 저기 세 번째의 경우를 보면 아무런 결과가 없다. 그럼 경우는 두가지이다. 1. 진짜로 pop rdx가 없다. 2. ROPgadget 으로는 조회가 되지 않는다. 근데 이경우는 프로그램에 pop rdx가 없을리가 없기때문에 ..

2019.10.11 게시됨

[Heap Exploit] UAF(Use After Free)기법 이론설명 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Heap Exploit] UAF(Use After Free)기법 이론설명

Heap Exploit UAF(Use After Free)기법 이론설명 당분간은 Heap의 취약점 분석을 할 것인데요, 오늘은 UAF(Use After Free)기법입니다. UAF기법을 들어가기 전에, Heap구조가 무엇인지 알아야겠죠? 모른다면, 공부를 조금 하고 다시 돌아오는 것으로 합시다. 아무튼 다들 Heap구조를 어느정도 알고 있다는 전제 하에 진행을 하면, Heap구조는 컴퓨터 안의 메모리 구조 중 사용자가 임의로 사용하는 메모리 공간으로, 대표적으로 malloc함수를 이용해 선언해주고, free함수를 통해 해제를 해준다는 것을 알 수 있습니다. 본격적으로 설명해봅시다. 1. First-Fit 알고리즘 UAF에 대해서 본격적으로 들어가기 전에, First-Fit 알고리즘에 대해서 이해할 필요가..

2019.07.29 게시됨