LOB 15번 (giant → assasin) cat assassin.cargv[1][47]이 \xbf, \x40이면 안된다. 즉, 스택의 주소도 공유라이브러리 주소도 쓰지 못한다.사실 어떻게 해야할지 감이 안와서 찾아보니 ret명령어를 통해 4byte 증가하는 esp를 이용하여 푸는 거 같다. 이걸 RET sled라고 하길레 좀 더 찾아보았다. 즉 RET에 RET주소를 덮으면 esp가 4byte 더 증가하면서 스택상의 위치가 올라간다. 이렇게 내가 원하는 위치에 함수 주소를 넣을 수 있다.그렇다면 ret주소에 ret를 덮고 system함수를 부르고 더미 4byte넣고 /bin/sh주소 넣으면 될 것이다. ret 주소 : 0x804851esystem 주소 : 0x40058ae0 /bin/sh 주소 : 0x400fbff9 더보기 LOB 14번 (bugbear → giant) cat giant.c일단 지금 당장 알 수 있는 건 ret 주소가 execve_addr이 아니면 안된다는 거다.우선 execve가 무엇을 하는 건지 찾아보자 execve(const char *path, char *const argv[], char *const envp[] );첫 번째 인자에 path에 파일경로를 지정해주고 두 번째 파일의 인자로 들어가는데 포인터 배열이다. 마지막에는 NULL이 들어가야 한다. (http://m.blog.naver.com/bestheroz/116479172) ret에 execve 주소를 덮으면LOW | execve() | execve의 RET | path | argv[] | envp[] | HIGH→ LOW | execve() | system() | exit() | “bi.. 더보기 LOB 13번 (darkknight → bugbear) cat bugbear.c음 갑자기 문제 난이도가 쉬워졌다. 주석부분에 RTL이 있다.argv[1][47]도 \xbf이면 안된다. system 함수 주소 찾고 코드 짠 후에 주소 알아내고 공격 더보기 이전 1 ··· 25 26 27 28 29 30 31 ··· 36 다음