Lord of BOF_7_Orge


핵심 알고리즘은 다음과 같다.
- main함수 인자를 받는다.
- main함수의 인자는 2개까지만 가능하다
- environ 전역변수가 가리키는 주소에 저장된 주소가 가리키는 곳의 데이터를 0으로 바꾼다.
argv[1]의 48번째 글자가\xbf가 아니면 종료한다.argv[1]의 길이가 49보다 길 시 종료한다.- strcpy로 스택에
argv[1]을 복사한다. - memset으로 main 함수의 스택 프레임 내의 내용을 0으로 바꾼다.
- memset으로
argv[1]의 내용을 0으로 바꾼다.
제한된 조건은 다음과 같다.
- 메인함수 인자 개수
argv[1]의 길이argv[1]주소의 내용 사용 불가- 환경변수 사용 불가
조작 가능 요소
- EBP backup
- return address
argv[0]내용!
argv[0]의 위치에 셸코드를 넣으면 되겠다.
일반적으로 프로그램을 실행하면 argv[0]을 변형할 수 없으므로, 직접 함수를 호출하여 프로그램을 실행해야 한다.

C언어 코드로 프로그램에 직접 인자를 넣어 실행하도록 했다.

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