Lord of BOF_6_Darkelf


핵심 알고리즘은 다음과 같다.
- main함수 인자를 받는다.
argv[0]의 길이가 77이 아니면 종료한다.- environ 전역변수가 가리키는 주소에 저장된 주소가 가리키는 곳의 데이터를 0으로 바꾼다.
argv[1]의 48번째 글자가\xbf가 아니면 종료한다.argv[1]의 길이가 49보다 길 시 종료한다.- strcpy로 스택에
argv[1]를 복사한다. - memset으로 main 함수의 스택 프레임 내의 내용을 0으로 바꾼다.
argv[0]의 길이가 77이어야 한다는 조건이 추가되었다.
일반적으로 argv[0]은 프로그램을 실행한 경로가 들어간다.
프로그램에서 직접 프로세스를 실행시킬 때에는 인자를 달리 줄 수도 있다. 프로그램을 실행할 때 이름을 길게 넣어서 우회했다.


orge의 비밀번호는 timewalker 이다.
tags: writeup, pwnable, buffer overflow, stack overflow, memory corruption, elf file, linux, c lang, x86asm