오버플로우(2)
-
ROP (64byte) 문제 2번
안녕하세요!오늘은 ROP 64bit 2번 문제를 풀어보도록 하겠습니다!파일은 위에 있습니다! 소스코드는 1번문제와 크게 달라진 것은 없습니다!vuln 함수는 여전히 버퍼 크기가 16byte인데256 byte를 읽어서 오버플로우가 일어나고 저희는 run 함수로 return 합니다!근데 run 함수에 이번에는 인자 arg가 있네요!arg의 값이 0x31337이여야 쉘이 따지네요! payload를 작성하기 전에checksec 명령어를 통해서 prob2 파일의 보호기법을 확인해보겠습니다! 근데 1번과 같이Partial RELRO (GOT overwrite 가능)Canary X (canary 기법 없음) NX enabled (스택의 실행권한 없음)NO PIE (바이너리 영역을 랜덤하게 배치) 보호기법은 똑같이 걸..
2019.04.24 -
ROP (64byte) 문제 1번
안녕하세요!오늘은 ROP(Return Oriented Programming)에 대해서알아보도록 할게요! 64bit의 ROP는32bit의 ROP와 방법이 조금 달라서문제를 통해서 알려드릴려고 해요!(이번 문제는 32bit 방식으로도 풀려요) 문제 파일은 제가 여기에 업로드 해놓았습니다!리눅스에서 wget명령어로 다운받으시면 됩니다!소스코드는 아래와 같아요! 되게 간단하죠? run이라는 함수가 불러지면system("/bin/sh") => 쉘을 시켜주는 놈알아서 쉘이 떨궈지죠? vuln 함수는buf에 16byte만 선언했는데!read 함수로 256byte을 읽어오니당연히 overflow가 발생하겠죠?main 함수에서 vuln 함수를 call 하고요! 어떻게 exploit 하실지 보이시나요? 일단 리눅스에서 아..
2019.04.22