목록Pwnable/pwnable.tw write-up (7)
뇌
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.

[ 메모리 보호기법 ] [ create_bullet source code ] Stack Pointer 에 값을 최대 0x30 bytes 만큼 입력 받음 입력 받은 문자열의 길이는 Stack Pointer+0x40 에 저장 [ power_up source code ] create_bullet 함수로 Stack Pointer 에 문자열을 입력 받았다면, 입력받은 문자열의 길이가 0x2F 보다 크지 않으면, create_bullet 함수에서 받은 문자열에 이어 strncat 을 통해 최대 0x30 bytes 만큼 덧붙임 총 문자열의 길이는 Stack Pointer+0x40 에 저장 [ beat source code ] HP 가 0 이하가 되면 1 을 반환 아니면 0 반환 1 을 반환했을 때 return 0; ..

[ 메모리 보호기법 ] [ main 함수 ] 매우 간단하다. 3초 동안 sleep 후 read 함수로 값을 입력 받는다. buf 의 시작주소가 rbp-0x10 이고, read 함수로 최대 0x100 bytes 만큼 덮을 수 있으므로 BOF 가 발생한다. 평범한 ROP 처럼 보여 함수 주소를 leak 한 후 libc_base 를 구해 oneshot 으로 ret addr 를 덮으면 된다고 생각을 했지만, 값을 출력할 수 있는 함수 ( leak 할 수 있는 함수 ) 가 없기 때문에 leak 이 불가능하다.. 이 문제의 핵심은 syscall 을 호출을 하는 것이다. syscall 을 호출한다면 여기에 없는 함수여도 호출을 할 수가 있다. 1. 그럼 syscall 은 어떻게 호출을 할까 ? 메모리 보호기법을 보면..