본문 바로가기

스터디122

[BOF-Wargames] IO SmashTheStack Level6 문제풀이 level6@io:/levels$ ./level06 Segmentation fault 프로그램을 실행하니 세그멘테이션 폴트가 뜹니다. 버퍼 오버플로우 문제일 가능성이 높아보입니다. level6@io:/levels$ cat level06.c #include // The devil is in the details - nnp void copy_buffers(char *argv[]) { char buf1[32], buf2[32], buf3[32]; LOW [ BUF 3 | BUF 2 | BUF 1 | SFP | RET ] HIGH argv[2] argv[1] strncpy(buf2, argv[1], 31); // argv[1] 의 내용을 31 바이트만큼 buf2 에 복사한다. strncpy(buf3, argv[.. 2011. 8. 14.
[BOF-Wargames] IO SmashTheStack Level5 문제풀이 드디어 이번 레벨부터 8 까지 버퍼오버플로우 문제인것 같습니다. 레벨 9 는 포맷스트링에 대한 문제이고 그 이후는 아직 풀어보지 못하였습니다. level5@io:~$ cd /levels level5@io:/levels$ ./level05 이번에는 프로그램을 실행해도 아무 메세지도 뜨지가 않는다. 인자를 전달해줘보자 level5@io:/levels$ ./level05 aa aa level5@io:/levels$ ./level05 aa aa aa 입력한 argv[1] 의 문자열을 다시 출력해주고 있다. 소스가 있으니 먼저 소스를 분석해보고 필요하다면 디버깅을 해보겠다. level5@io:/levels$ cat level05.c #include #include int main(int argc, char **a.. 2011. 8. 12.
[USE-Wargames] IO SmashTheStack Level4 문제풀이 level4@io:~$ cd /levels level4@io:/levels$ ./level04 uid=1004(level4) gid=1004(level4) euid=1005(level5) groups=1005(level5),1004(level4),1029(nosu) 프로그램을 실행하니 id 명령어가 실행되는것 같습니다. level4@io:/levels$ id uid=1004(level4) gid=1004(level4) groups=1004(level4),1029(nosu) level4@io:/levels$ cat level04.c #include int main() { system("id"); // 리눅스 명령어 id 를 실행한다. return 0; } 이 문제는 리눅스 시스템에 대한 지식이 있으신분들이.. 2011. 8. 12.
[USE-Wargames] IO SmashTheStack Level3 문제풀이 이번에는 Level3 을 풀어보도록 하겠습니다. level3@io:~$ cd /levels level3@io:/levels$ ./level03 Segmentation fault 프로그램을 실행하면 세그폴트가 뜹니다. level3@io:/levels$ ./level03 aa Address of hmm: 0x804847f level3@io:/levels$ ./level03 bb Address of hmm: 0x804847f 어떤값을 입력하든지 고정된 주소를 출력해줍니다. 이번에도 먼저 소스를 보고 필요하면 디버깅을 해보겠습니다. level3@io:/levels$ cat level03.c #include #include #include int good(int addr) { printf("Address of h.. 2011. 8. 12.
[USE-Wargames] IO SmashTheStack Level2 문제풀이 level2@io:~$ cd /levels level2@io:/levels$ ./level02 source code is available in level02.c 이번에는 프로그램을 실행하니 소스를 확인하라고 합니다. 소스에는 바로바로 주석을 달아가겠습니다. level2@io:/levels$ cat level02.c //a little fun brought to you by bla #include #include #include #include void catcher(int a) // 쉘 획득 { setresuid(geteuid(),geteuid(),geteuid()); printf("WIN!\n"); system("/bin/sh"); exit(0); } int main(int argc, char **a.. 2011. 8. 12.
[USE-Wargames] IO SmashTheStack Level1 문제풀이 앞으로 글 제목 앞에 문제별로 [USE] [BOF] [FSB] 등등이 나뉘어져 붙을겁니다. [USE] 는 이런 문제들을 가지고 나뉘어질것이며 BOF 와 FSB 는 말 안해도 아시죠? IO 워게임을 Level1 부터 다시 풀이해가겠습니다. 기존에 올라와있던 워게임처럼 간단하게 올릴생각은 아니구요, 처음부터 모르는게 있으면 완벽하게 올리려고 합니다. 편하게 작성하는거라 말투는 수시로 바뀔겁니다 ㅋㅅㅋ IO 워게임 공식 사이트 : http://io.smashthestack.org:84/ level1@io:~$ cd /levels level1@io:/levels$ ./level01 Usage: ./level01 서버에 접속해 Level1 문제파일을 실행하면 다음과 같이 뜬다. level1@io:/levels$ .. 2011. 8. 11.
SmashTheStack : level5@io.smashthestack 문제풀이 이번 문제는 버퍼 오버플로우 문제이다. level5@io:/levels$ cd /levels level5@io:/levels$ ./level05 level5@io:/levels$ cat level05.c #include #include int main(int argc, char **argv) { char buf[128]; // 128 바이트 변수 선언 if(argc < 2) return 1; // argc(인자의 개수)가 2 보다 적으면 프로그램 종료 strcpy(buf, argv[1]); // argv[1] 을 buf 로 복사 - 버퍼 오버플로우 취약점 printf("%s\n", buf); // argv[1] 이 복사된 buf 내용 출력 return 0; } STRCPY 함수에서 문자열 복사할때 제한값.. 2011. 7. 29.
SmashTheStack : level4@io.smashthestack 문제풀이 워게임 문제풀이 - SmashTheStack : level4@io.smashthestack 문제풀이 이번 문제는 내가 처음 접했을때 어떻게 해야될지를 몰라서 막막했던 문제였다. 약간의 힌트를 얻어 풀기는 했지만 시스템해킹의 답은 일단은 문제를 많이 푸는것이다. 경험을 많이 쌓아가야 한다. 이렇게 기초문제들을 풀어감으로써 기초들을 많이 쌓아야지 좀 더 깊숙하고 이론적인 버퍼 오버플로우, 포맷스트링과 같은 기술을 연마할 수 있게 되는 것이다. 나는 대회들의 문제를 다시 풀어보거나 대회 보고서를 많이 읽으려고 애쓴다. 읽으면 읽음으로써 패턴들이 머리속에 들어오게 되고 그 패턴덕에 앞으로 문제를 푸는데 도움이 되기 때문이다. 이런 생각을 가지는데 '+α' 를 갖게 해준 나의 친구 pwn3r 에게 깊은 고마움의 .. 2011. 7. 29.
[SECURITY KOREA 2011] 중고생 해킹방어대회 LEVEL6 문제풀이 이번 문제를 풀면서 참 많은 후회가 밀려왔다. 내가 왜 이 풀이를 시작한건가... 그래도 일단 시작한건 끝내야되니깐 시간상 LEVEL6 까지만 쓰고 LEVEL7 과 LEVEL8 은 다음으로 미루겠다. 압축을 풀면 secret.doc 라는 파일이 있고 이 워드파일을 열려면 비밀번호를 알아야한다. 내가 이 비밀번호 찾는 프로그램을 찾으려고 아주 생 XX 을 다해서.... 찾긴 찾았는데 문서를 열어보면 내용은 다음과 같다. 패스워드를 찾으셨군요. 패스워드에서 100 뺀 값을 답안에 기입해주세요. ...... 정답은 1004 이다. tq 2011. 7. 22.