본문 바로가기

Security/Pwnable

(4)
[FTZ] level 11 문제풀이 힌트를 먼저 봐보자 ! 힌트를 보면, argv[1]의 값을 str에 복사해준 후 출력을 해 주는데, 복사해주는 부분이 취약하다는 것을 알 수 있다. 왜 취약할까 ?? strcpy 함수는 문자열을 복사하는 함수로, 복사하는 버퍼(argv[1])의 크기를 검증하지 않고 복사한다. 따라서 str의 크기인 256byte를 넘는 데이터를 str에 복사할 수 있게 되고, 이것은 buffer overflow 공격을 가능하게 하여 공격자가 원하는 대로 할 수 있기 때문에 취약하다고 할 수 있는 것이다. 그럼 이제 이 취약한 부분을 이용해 쉘을 얻어보자 ! 먼저, 쉘을 얻어올 수 있는 쉘코드는 다음과 같다. \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x8..
[FTZ] level 9 문제풀이 먼저 ls를 해보면! 힌트가 있다!! 힌트를 먼저 봐보자! 힌트를 보니 소스 코드는 /usr/bin 폴더 안에 있는 bof의 소스코드이고 buf2에 go라는 문자열이 있다면 쉘을 얻어올 수 있으니 buf2에 go를 집어넣으면 된다라는 것을 알 수 있었다. 그렇다면 고것을 어떻게 할까..? 그걸 알아보기 위해 gdb를 이용해보기로 하자! /* gdb란? Linux에서 사용되는 디버깅 툴로 프로그램 내부에서 무슨 일이 일어나고 있는지 보여주거나 프로그램이 잘못 실행되었을 때 무슨 일이 일어나고 있는지 보여준다. ******************level 9를 풀기 전 알아야 할 gdb 명령어************************** - gcc -o a a.c : a.c라는 소스코드를 컴파일 하여 a라는..
함수의 프롤로그와 에필로그 함수의 프롤로그와 에필로그를 알아보기 전에 몇 가지를 짚고 넘어가 보자! 먼저, 스택 프레임이란? 한 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 주소, 함수에서 선언된 지역변수 등이 저장되는데, 그 영역을 그 함수의 스택 프레임이라 한다. 이 스택 프레임들은 함수가 종료되면 스택에서 제거되고 저장해놓았던 '함수를 호출한 지점(RET)'으로 돌아가는데, 미리 말하자면, 이를 에필로그라고 한다. 그림에 있는 EBP와 ESP는 뭘까?? EBP는 스택 상의 한 데이터의 주소가 저장되어 있는 레지스터로, 그 데이터 위부터 한 함수가 실행된 이후의 값들이 쌓인다. 즉, 그 함수의 시작 지점이라고 생각할 수 있으며, 따라서 함수가 종료되지 않는 한 EBP 값은 변하지 않는다. ESP는 스택의 ..
해쿨 핸드북 정리 보호되어 있는 글입니다.