농소
다음 troll파일을 보면 전 문제같은 경우 argv[2]를 이용하여 공격을 했는데 0,1만 사용할 수 있게 해뒀네요또 추가적으로 argv[1]을 0으로 초기화 시키네요 그러면 argv[0]에 쉘코드를 넣어야 겠습니다아마 전의 darkelf에서 했던 방법 그대로 하면 되겠네요 자 우선 2f를 /로 인식을 하기에 신경써서 경로를 만들어줍니다. 만들어 주었으면 심볼릭링크를 이용하여 쉘코드를 넣습니다. 제가 argv[0]주소를 나타내는 코드를 따로만들어 실행한겨로가 bffff8c5가 나왔습니다 실제 공격파일의 eip위치에 저 값을 넣어주면 되겠습니다. 임의로 만들었던 파일을 제거하고 실제 공격파일을 생성하여 실행한결과 쉘이 실행되었습니다.
이번문제는 argv[0]의 길이를 추가로 체크하네요공격을 하려면 심볼릭 링크로 argv[0]에 쉘코드를 넣거나 argv[2]의 값을 이용하거나argv[0]에 쉘코드를 넣을때 길이체크하는것은 여러모로 귀찮을것 같으니 심볼릭 링크로 길이만 맞추어 주고 argv[2]에 쉘코드를 넣도록 하겠습니다. 우선 심볼릭 링크로 길이를 맞춰주고 bbbb... 파일은 제가따로 argv[2]길이를 체크 하기위해 만든 파일입니다.입력해보니 bffff7cc가 시작주소가 되네요 argv[2]의 길이체크는 하지않으므로 넉넉하게 nop코드를 넣어주고 쉘코드를 삽입하여 실행한 결과 쉘이 실행되어 권한상승이 일어나게 됐습니다.
살펴보면arg 0,1 두개 사용 가능환경변수 0 초기화첫번째 인자의 48번째값 = \xbf 스택메모리 이용 첫번째 인자 길이체크버퍼메모리 0 초기화 추가적으로 1번째 인자의 길이를 막았네요arg 0번째는 아직 체크를 안하므로 0번째에 쉘코드를 넣어서 실행시키도록 하겠습니다. 심볼릭 링크를 이용하여 0번째 인자에 쉘코드를 넣으려고 했으나 경로설정이 안되어서 오류가 발생했습니다. \x2f이 / 로 인식하나봅니다. 경로를 만들어 줍시다. 정상적으로 링크가 설정되어 있는것을 확인할 수 있습니다 제가 따로 argv[0]의 시작주소를 출력해주는 것을 추가해주어 확인한 결과 bffff8ad인 것을 확인 했습니다. 다시 원래 파일을 심볼릭 링크 하여 해당 주소로 변경후 실행한 결과 쉘이 실행되..