pwn43 [Toddler's Bottle] - passcode 문제 설명에서 암호기반의 로그인 시스템을 만들었는데 컴파일은 에러없이 됬지만 컴파일러의 경고가 있었다고한다. 어떤 에러인지 한번 확인해보자. main 함수에서 welcome()함수와 login()함수를 호출하고 리턴한다. welcome함수에서는 name[100] 만큼 선언해주고 입력을 받는다. 이제 login 함수를 보면 passcode1, passcode2를 검증하는데 검증이 성공하면 flag를 보여준다. 일단 문제를 실행시켜 보자. 실행시켜보면 passcode1을 입력하면 Segmentation fault가 출력되고 종료한다. 다시 위의 소스 코드의 longin 함수를 잘보면 scanf() 부분에서 &지정자가 빠져있다. 예를 들어 passcode1=0xbffff123 이면 0xbffff123의 주소에.. 2021. 3. 28. 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. ELF x86 - Stack buffer overflow basic 2 ELF x86 구조인 스택 버퍼 오버플로우 문제이다. Mitigation을 보면 GOT Overwrite가 가능하고 실행 권한이 없다. 코드를 보면*func 함수 포인터가 sup 함수를 가리키고 있고 buf를 133바이트 만큼 입력 받을 수 있다. 그리고 func 함수를 호출하는데 func는 sup을 가리키고 있고 우리가 원하는건 shell 함수이니 func -> shell 함수를 가리키게 조작하면 될 것 이다. buf를 128바이만큼 A를 입력하고 스택 상태를 보면 0xbffffafc 부분이 fucn 함수 포인터이다. 저 부분을 shell 함수 부분으로 조작 한다면 func가 shell 함수를 호출할 것 이다. exploit from pwn import * user = 'app-systeme-ch15'.. 2021. 3. 27. ELF x86 - Stack buffer overflow basic 1 이번 문제는 root-me.org 의 system 첫 문제인 stack-buffer-overflow이다. 이 사이트는 기술을 익히기에 좋은 워게임 사이트인거 같다. 접속 정보를 제공한다. 접속을 해서 보면 Mitigation 상태를 보여주고 파일들이 보이는데 소스 코드를 제공한다. 소스 코드는 문제 사이트에도 있다. check가 0xdeadbeef면 쉘을 획득할 수 있다. buf의 시작주소 부터 check까지의 거리는 0x28이다. 이제 check를 0xdeadbeef도 덮어보자. from pwn import * user = 'app-systeme-ch13' host = 'challenge02.root-me.org' port = 2222 password = 'app-systeme-ch13' s = ssh.. 2021. 3. 27. 이전 1 ··· 4 5 6 7 8 9 10 11 다음