본문 바로가기

D. 시스템6

[Pwnable.kr] bof ㅎㅇ 저 주소로 들어가서 C코드를 먼저 봐보자func 함수안에 있는 gets를 통해 BOF를 일으켜서key 값을 조건문에 맞도록 변경시켜 문제를 해결해야겠다그래서 func함수를 gdb를 이용해 까보았다 우선 gets함수의 인자에 들어가는 eax의 크기를 보면 위 네모칸과 같이0x2c그리고 키값이 들어있는 곳의 위치는 ebp+0x8이여서 크기는0x8 그래서 ebp+0x8까지 버퍼를 채우고 그 이후로는 조건문에 맞추기위해서0xcafebabe라는 값을 넣어야 한다. 그래서 채워야하는 버퍼의 값은8-(-44)해서52byte가 된다. 이것을 입력하기위해서 파이썬을 이용해 파이프라인을 작성하면 이렇게 flag값을 얻어서해결ㅎㅎㅎ 2017. 10. 13.
[SYSTEM] BOF(버퍼 오버 플로우)란 BOF(Buffer Over Flow) 메모리에 할당된 버퍼의 양을 초과하는 데이터를 입력하여 프로그램의 복귀 주소(return address)를 조작, 궁극적으로 해커가 원하는 코드를 실행한다. ▶이런식으로 8칸의 메모리가 4칸 짜리 버퍼가 있을 때 , 버퍼를 초과하는 값을 입력하면 버퍼 이후의 값이 바뀌게 된다. BOF공격원리는 내가 생각하기에 이 그림으로 설명이 가능할 거 같다Buffer부터 값을 채워 다 채운후 SFP까지 값을 채운뒤에 RET까지 접근하도록 넘치게 값을 넣어주면RET = POP eip이기 때문에 다음 실행해야 할 명령어가 존재하는 메모리 주소를 변경하여해커가 원하는 명령을 실행 할 수 있도록 해준다. 2017. 10. 13.
반응형