목록Pwnable (5)
ipwn
open("/dev/pts/0", O_RDWR); 위 형식으로 2번 열어주면 순서대로 stdin, stdout가 열림. 근데 왜 pwnable.tw kidding은 안열림? 아마 권한이 있어야하는 건가 싶다.
FSB(Format String Bug) 필요한 친구가 있다고 하여 일단 brop보다 우선적으로 작성하게 됐다. fsb는 format string을 사용하는 함수 딴에서 인자 전달을 확실히 하지 않았을 경우에 발생하는 취약점이다. 가장 먼저 포맷 스트링이 무엇인지 알아보자. 자세한 설명은 생략하겠다. 하지만 이 표에서도 설명이 되어있지 않은 포맷 스트링이 두 가지 존재한다. 바로 "%n"과 "%hn"이라는 포맷스트링인데, 이 포맷스트링은 현 (esp + 4 + 포맷스트링에 따라 더해질 byte수)가 가리키고 있는 값을 주소로 인식하고 이전에 출력했던 byte수 만큼 그 주소값에 대입을 하겠다는 포맷스트링이다. 이 두 포맷스트링의 차이점은 %n같은 경우에는 4byte 메모리 공간을 가진 주소로 인식해서 4..
이번에 정리해볼 기법은 house of force기법이다. free고 뭐고 필요 없어서 내가 이해하기 쉬웠다. 이 기법은 간단하게 정리하면 top chunk를 건들여서 size를 무한정 입력받을 수 있게 해주는 기법이다. 이 기법을 이용해서 스택까지의 offset을 구해서 ret을 변조해서 eip를 어떻게 할 수도 있고, 아마 보통은 got overwrite를 하는데 쓰이지 않을까 하는 생각이 든다. 일단 바로 예제 코드를 컴파일하고 어떻게 작동하는 건지 원리 설명을 차근차근 해보겠다. #include #include #include void make_system(){ system("echo this func just gadget");} int main(int argc, char *argv[]){ cha..
아직까지는 heap overflow를 이용한 leak, 그리고 uaf밖에 공부를 안했는데 uaf를 한 번 정리해봐야겠다.이러다가는 정말 공부한 거 다 까먹을 것 같아서 아무래도 정리를 해야겠다 ㅋㅋ 먼저 이 포스팅을 공부목적으로 들어오셨다면, 메모리구조를 먼저 이해하고 오시길 바란다. 공부를 할 때 블랙펄 시큐리티에 있는 글 들을 많이 참조했다. 아직 힙 구조에 대해서는 제대로 공부를 안해놨기 때문에, 공부하고 그로 인해 발생하는 취약점도 찾아봐야겠다. 여튼 uaf는 use after free의 약자인데, 이 취약점이 발생하는 이유는 생각보다 간단했고 신기했다. #include #include int main() { int *ptr1; int *ptr2; int *ptr3; ptr1 = malloc(4)..