format string bug5 Memory Corruption: Format String Bug 포맷 스트링 %[parameter][flags][width][.precision][length]type 형식 지정자(specifier) 형식 지정자 설명 %d 부호있는 10진수 정수 %s 문자열 %x 부호없는 16진수 정수 %n 인자에 현재까지 사용된 문자열의 길이를 저장 %p void형 포인터 width 최소 너비를 지정한다. 치환되는 문자열이 이 값보다 짧을 경우, 공백문자를 패딩해준다. 너비 지정자 설명 정수 정수의 값만큼을 최소 너비로 지정 * 인자의 값 만큼을 최소 너비로 지정 // Name: fs.c // Compile: gcc -o fs fs.c #include int main() { int num; printf("%8d\n", 123); printf("%s\n", "Hello, world".. 2022. 1. 5. basic_exploitation_003 보호되어 있는 글 입니다. 2021. 4. 4. basic_exploitation_002 보호되어 있는 글 입니다. 2021. 4. 4. ELF x86 - Format string bug basic 1 이번 문제는 포멧스트링 문제이다. #include #include int main(int argc, char *argv[]){ FILE *secret = fopen("/challenge/app-systeme/ch5/.passwd", "rt"); char buffer[32]; fgets(buffer, sizeof(buffer), secret); printf(argv[1]); fclose(secret); return 0; } 이번 문제의 소스 코드이다. fopen 함수가 위 경로의 .passwd 파일은 텍스트로 읽어오고 fgets로 buffer에 입력을 받는다. 그리고 printf 에서 형식 지정자를 쓰지않아 포멧 스트링 취약점이 일어난다. from pwn import * user = 'app-systeme.. 2021. 3. 27. 이전 1 2 다음