분류 전체보기 57

5. orc → wolfman

일단 어디어디가 달라졌을지 코드를 볼까요 [orc@localhost orc]$ cat -n wolfman.c 1/* 2 The Lord of the BOF : The Fellowship of the BOF 3 - wolfman 4 - egghunter + buffer hunter 5*/ 6 7#include 8#include 9 10extern char **environ; 11 12main(int argc, char *argv[]) 13{ 14char buffer[40]; 15int i; 16 17if(argc < 2){ 18printf("argv error\n"); 19exit(0); 20} 21 22// egghunter 23for(i=0; environ[i]; i++) 24memset(environ..

4. goblin → orc

안녕하세요 어느덧 3번문제까지 클리어했네요ㅎ 저희는 크게 3가지 방법으로 bof공격을 해보았습니다. 3가지로 나누는 기준은 'ret를 어느 주소로 덮느냐'였는데요, 1. buffer 변수2. argv[1]3. 환경변수였죠 여기까지 잘 푸셨다면 아마 ret를 덮을 주소를 찾는 것 쯤은 식은죽 먹기 일 겁니다.(그래도 다시 정리를 위해ㅎ) 제가 유용하게 사용하는 방법은 크게 두 가지인데요, 먼저 gdb를 통해 뜯어보면서 메모리를 분석하는 방법입니다.gdb를 이용한다는 것 자체가 메모리, 어셈블리어 등의 개념들을 공부하는데에 많은 도움이 됩니다.또한, 문제를 이해하는데 큰 힘이 되주죠!! 두번째는 직접 코드를 짜서 해보는 것 입니다.제가 앞으로 문제풀이에서 많이 사용할 방법이기도 하구요ㅎgate를 가지고 예시..

3. cobolt → goblin

id : coboltpw : hacking exposed 이번 문제는 argv대신 stdin으로 입력값을 받습니다. argv를 이용할 수 없으니, '환경변수'를 이용해 보도록 할게요. [cobolt@localhost cobolt]$ cat goblin.c /* The Lord of the BOF : The Fellowship of the BOF - goblin - small buffer + stdin */ int main() { char buffer[16]; gets(buffer); printf("%s\n", buffer); } 환경변수란?환경변수는 OS가 필요한 정보를 메모리에 적재시켜 놓고 필요할 때마다 가져다 쓰는 영역을 의미합니다.메모리 주소가 고정적이라, 원하는 코드를 넣어놓고 주소를 찾아 re..

2. gremlin → cobolt

id : gremlinpw : hello bof world 먼저 소스코드를 보겠습니다.[gremlin@localhost gremlin]$ cat cobolt.c /* The Lord of the BOF : The Fellowship of the BOF - cobolt - small buffer */ int main(int argc, char *argv[]) { char buffer[16]; if(argc < 2){ printf("argv error\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } gate와 달라진 점은 buffer의 크기가 256에서 16으로 엄청 작아졌다는 점 입니다. bufffer로 직접 이동하여 실행시키기는 힘들..

1. gate → gremlin

id : gate pw : gate 로그인 해줍니다. gremlin.c 소스코드는 다음과 같습니다.[gate@localhost gate]$ cat gremlin.c /* The Lord of the BOF : The Fellowship of the BOF - gremlin - simple BOF */ int main(int argc, char *argv[]) { char buffer[256]; if(argc < 2){ printf("argv error\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } buffer의 크기가 256byte이니, 쉘코드를 넣기에 충분할것 같네요..ㅎ 실행될때 더미(dummy; 쓰레기)값이 추가되는지 gdb를..

LoB 원정대 start

LoB를 본격적으로 풀기전에 기본 셋팅과 몇가지 알아두면 편한 팁들을 정리해 보려 합니다. LoB란?LoB(Lord of BufferOverFlow)는 해커스쿨에서 제공하는 wargame입니다.총 20개의 level들을 여러가지 BufferOverFlow 기법을 활용하여 푸는 형식이죠.my-pass를 입력하면 각 level의 비밀번호를 알 수 있습니다. 기본 셋팅아래 주소에서 LoB vmware이미지 파일을 다운받습니다.(vmware는 있으시겠죠..? download....)http://hackerschool.org/TheLordofBOF/TheLordOfTheBOF_redhat_bootable.zip 압축을 풀고 폴더 속에 들어가보면, 위와같은 파일이 있을 겁니다. 실행시키면 LoB에 접속이 됩니다. ..