목록Buffer OverFlow (9)
뉴비에욤
보호되어 있는 글입니다.
HeapOverflows for human 103.5 번역 문서입니다.
HeapOverflows for human 103 번역 문서입니다.
HeapOverflows for human 102.5 번역 문서입니다.
HeapOverflows for human 102 번역 문서입니다.
HeapOverflows for human 101 번역 문서입니다.
내용이 다소 길어 문서로 작성하였습니다.
지난 번에 FakeEBP에 대한 글을 작성하였는데 비슷한 원리를 가지는 공격 기법으로 FPO가 있다. 사용 환경에는 다음과 같은 조건이 따른다. 1. SFP 영역에서 1 바이트 오버플로우가 반드시 일어나야 함 2. 메인 함수 이외 서브 함수가 필요함 이번에도 스택 구조를 대충 그려보면서 설명할 것이다. 일단 바이너리에서 버퍼를 40만큼 선언했다면 공격자의 페이로드는 총 41 바이트가 된다. FakeEBP와 달리 FPO는 리턴 주소는 변조하지 않고 SFP 역시 1바이트만 오버플로우 시키기 때문이다. 어쨋든 페이로드를 올리고 서브 함수의 에필로그 직전까지를 보면 우측과 같은 구조를 가지게 된다. 서브 함수의 에필로그 중 leave 명령어의 "mov esp,ebp"가 실행되면 좌측 구조처럼 esp/ebp 모두..
BoF 공격을 할 때 사용되는 다양한 방법 중 하나인 Fake EBP (가짜 EBP)에 대하여 설명하고자 한다. 원래는 글로 쓸려고 했는데 내가 봐도 이해가 잘 안 가는 듯하여 PPT로 대충 스택 구조를 그려보았다. 새로운 공격 기법을 사용한다는건 특정한 환경과 이유가 존재하는데, 이 기법은 "RET 이후로 덮어 쓰기 불가능", "RET 자리에 스택/라이브러리 주소 필터링"이 되어 있을 때 사용할 수 있다. (사실 이런거 다 필요없고 ROP가 진리) 어쨌든 이런 경우에는 RET에서 원하는 위치로 실행되게 eip를 추출해야 하는데 이게 굉장히 어렵다. 따라서 ebp(sfp)의 위치를 옮겨 우리가 원하는 위치에서 원하는 RET 주소를 추출하는 것이 바로 Fake EBP 기법이다. 쉽게 말하면 함수의 에필로그..