LOB 6

LOB level 6

login은 wolfman, password는 love eyuna 이다 앞과 마찬가지로 bash2를 사용하여 오류를 잡아주고, ls -l 명령어를 통해 darkelf, darkelf.c 파일이 있다는 것을 확인할 수 있었다. 앞 문제와 마찬가지로 //egghunter을 통해 환경변수를 사용할 수 없고 바로 밑에 if문 때문에 스택영역을 사용할 수 없다. 또한 argv[1]의 길이를 48바이트가 넘지 않게 제한하고 있다. 그래서 argv[2]를 이용하여 문제를 해결하겠다. mkdir을 이용하여 tmp 디렉터리를 만들고 cp 명령어를 통해 darkelf 파일을 tmp 디렉터리에 복사시키고 cd 명령어를 이용하여 tmp 디렉터리로 이동하였다. 리턴주소를 0xbffffc30으로 설정하였다. 리턴값과 쉘코드를 이..

LOB 2020.08.19

LOB level 5

login은 orc이고 password는 저번 문제에서 도출해낸 cantata 였다. bash2로 오류를 회피하고 ls -l 명령어를 이용하여 wolfman과 wolfman.c 파일이 존재한다는 것을 확인했다. //egg hunter 아래 for문을 통해 환경변수를 사용할 수 없다는 것과, 바로 아래의 if문으로 스택영역을 사용할 수 없다는 것을 알 수 있었다. 그래서 입력값의 크기는 제한이 없기에 리턴주소 다음에 쉘코드를 넣는 방법을 사용할 것이다. mkdir 명령어를 이용해 tmp 디렉터리를 만들고 그 다음 cp 명령어를 이용하여 wolfman 파일을 tmp 디렉터리에 복사시킨다. cd 명령어를 이용해 tmp 디렉터리로 이동한다. gdb 명령어를 이용해 core 파일을 분석한다. (여기서 core파일..

LOB 2020.08.19

LOB level 4

login은 goblin이고 password는 저번 문제에서 찾아낸 hackers proof였다! 우선 앞 문제들과 마찬가지로 bash2를 이용해서 오류를 잡아주었고, ls -l 을 이용해서 orc, orc.c 파일들이 있는 것을 확인할 수 있었다. cat 명령어를 통해서 orc.c를 확인 해볼 수 있었다. //egghunter 아래 for문을 통해서 환경변수 부분을 0으로 설정한 것을 볼 수 있었다. 따라서 환경변수를 사용하여 문제를 해결할 수 없다는 것을 알 수 있었다. if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } 리턴주소의 첫 바이트는 \xbf이어야 하는 것도 알 수 있었다. 그래서 스택영역을 사용하여..

LOB 2020.08.19

LOB level3

level3에 입장하기 위해서는 login은 cobolt이고 password는 저번 level에서 얻어낸 hacking exposed 였다. 우선 bash2를 이용해 오류를 잡아주고, ls -l 명령어를 통해 goblin과 goblin.c가 있다는 것을 알아 낼 수 있었다. cat 명령어를 이용하여 goblin.c를 열어서 확인해보니 앞에 문제와는 다르게 표준입출력(gets)으로 받는 것을 볼 수 있었다. 저번 문제와 마찬가지로 쉘코드를 사용하여 환경변수를 설정하는 방법을 택했다. mkdir를 이용하여 tmp 디렉터리를 만들고 cd 명령어를 이용하여 tmp 디렉터리로 이동한다. 다음 쉘코드를 넣어주고 주소를 알아냈다. cd ../ 명령어를 이용해 cobolt 디렉터리로 나와 이 페이로드를 이용하여 문제를..

LOB 2020.08.18

LOB level2

level2의 login은 gremlin이고 password는 level1으로 얻어진 값 hello bof world이다!! 우선 로그인을 한 다음 bash2를 이용해서 오류를 방지하고 ls -l을 이용하여 어떤 파일과 디렉토리가 있는지 확인하였다. 다음 cat 명령을 이용하여 cabolt.c의 코드를 확인하였다. 여기에서 buffer의 크기는 16이라는 것을 확인할 수 있었다. gdb를 이용해서 cobolt을 열어보니 번째의 [%ebp-16]으로 dummy가 없다는 것을 알 수 있었다. mkdir 명령어를 이용하여 tmp 디렉토리를 만들어주고 cd 명령어를 이용하여 gremlin 디렉토리에서 tmp 디렉토리로 이동하였다. 환경변수를 41바이트 쉘코드로 추가하였다. 따라서 환경변수의 주소를 0xbffff..

LOB 2020.08.14

LOB level1

LOB 풀기 시작~~~! Level1의 login은 gate이고 password 역시 gate 였다! 처음에 할 때는 bash2를 사용하지 않고 했는데 자꾸 답이 안나왔다. bash2를 사용하여 오류들을 잡아준다. ls -l 명령어를 이용하여 파일, 폴더를 확인한다. 여기서 gremlin.c 파일이 있는 것을 확인할 수 있었다. cat 명령어를 이용하여 gremlin.c의 내용을 확인해보았다. 256바이트 크기만큼 buffer에 입력을 무제한으로 받는다는 것을 확인할 수 있었다. 우선 gdb를 이용해서 gremlin 파일을 열어보았다. buffer와 return 값 사이의 거리를 구한 다음 쉘코드를 환경변수에 올려서 쉘을 획득하는 방법을 사용한다. 를 통해 %ebp-256에 buffer가 있다는 것을 확..

LOB 2020.08.14