본문 바로가기

해커스쿨 FTZ ( level14 -> level15 ) by ORANG FTZ_level14 [level14@ftz level14]$ bash2[level14@ftz level14]$ cat hint 레벨14 이후로는 mainsource의 문제를 그대로 가져왔습니다.버퍼 오버플로우, 포맷스트링을 학습하는데는 이 문제들이최고의 효과를 가져다줍니다. #include #include main(){ int crap; int check; char buf[20]; fgets(buf,45,stdin); if (check==0xdeadbeef) { setreuid(3095,3095); system("/bin/sh"); }} bash2부터 띄우고~~ 힌트를 보니 level14와 비슷합니다 ㅎㅎ하지만 fgets 함수로 입력받는 최대 크기가 45바이트로 되어있네요check 부분을 0xdeadb.. 더보기
해커스쿨 FTZ ( level13 -> level14 ) by ORANG FTZ_level13 [level13@ftz level13]$ bash2[level13@ftz level13]$ cat hint #include main(int argc, char *argv[]){ long i=0x1234567; char buf[1024]; setreuid( 3094, 3094 ); if(argc > 1) strcpy(buf,argv[1]); if(i != 0x1234567) { printf(" Warnning: Buffer Overflow !!! \n"); kill(0,11); }} 먼저 bash2를 띄우고, 힌트를 확인해보니 역시 BOF문제네요 long형 변수 i를 두고 값이 조작될시에 BOF를 감지하고 종료하는것 같습니다.그렇다면 i부분을 0x1234567로 덮어씌어줌으로 우회하면.. 더보기
해커스쿨 FTZ ( level12 -> level13 ) by ORANG FTZ_level12 [level12@ftz level12]$ bash2[level12@ftz level12]$ cat hint #include #include #include int main( void ){ char str[256]; setreuid( 3093, 3093 ); printf( "문장을 입력하세요.\n" ); gets( str ); printf( "%s\n", str );} bash2부터 띄워주시고요~~level11과 비슷하지만 인자로 전달받지 않는다는점만 다르네요ㅎㅎgets 함수 역시 입력받을 수 있는 문자열 크기 제한이 없으므로 BOF 취약점이 있습니다. 간단하게 분석후, 메모리 구조를 그려보겠습니다. (gdb) disas mainDump of assembler code for func.. 더보기
해커스쿨 FTZ ( level11 -> level12 ) by ORANG FTZ_level11 [level11@ftz level11]$ bash2​[level11@ftz level11]$ lsattackme hint public_html tmp[level11@ftz level11]$ cat hint #include #include int main( int argc, char *argv[] ){ char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str );} bash에서는 셸코드중 /xff 에서 문제가 생기므로 bash2로 시작하겠습니다. 버퍼 오버 플로우 문제네요먼저 메모리 구조를 그려보겠습니다 [level11@ftz level11]$ cp attackme tmp/attackit[level11@ftz.. 더보기
해커스쿨 FTZ ( level10 -> level11 ) by ORANG FTZ_level10 [level10@ftz level10]$ cat hint 두명의 사용자가 대화방을 이용하여 비밀스런 대화를 나누고 있다.그 대화방은 공유 메모리를 이용하여 만들어졌으며,key_t의 값은 7530이다. 이를 이용해 두 사람의 대화를 도청하여level11의 권한을 얻어라. - 레벨을 완료하셨다면 소스는 지우고 나가주세요. 이 문제를 풀려면 공유 메모리에 대한 개념이 필요합니다.공유 메모리란 여러 프로세스가 공유하는 메모리 공간.. 입니다. 예를 들면 A라는 프로세스와 B라는 프로세스가 공유 메모리를 사용할 때,A와 B 프로세스는 각각의 메모리 공간을 가지고, 두 프로세스가 모두 사용할 수 있는 공유 메모리를 가집니다.공유 메모리를 사용하는 프로세스들은 해당 메모리에 접근할 수 있으므로A.. 더보기
해커스쿨 FTZ ( level9 -> level10 ) by ORANG FTZ_level9 [level9@ftz level9]$ lshint public_html tmp[level9@ftz level9]$ cat hint 다음은 /usr/bin/bof의 소스이다. #include #include #include main(){ char buf2[10]; char buf[10]; printf("It can be overflow : "); fgets(buf,40,stdin); if ( strncmp(buf2, "go", 2) == 0 ) { printf("Good Skill!\n"); setreuid( 3010, 3010 ); system("/bin/bash"); } } 이를 이용하여 level10의 권한을 얻어라. 슬슬 BOF(버퍼 오버 플로우) 문제가 나오기 시작하네요ㅎㅎBO.. 더보기
해커스쿨 FTZ ( level8 -> level9 ) by ORANG FTZ_level8 [level8@ftz level8]$ lshint public_html tmp[level8@ftz level8]$ cat hint level9의 shadow 파일이 서버 어딘가에 숨어있다.그 파일에 대해 알려진 것은 용량이 "2700"이라는 것 뿐이다. 간단하네요ㅎㅎfind 명령어를 이용하겠습니다. [level8@ftz level8]$ find / -size 2700 2>/dev/null​ 하지만 아무 반응도 없네요find의 메뉴얼 중 size 옵션에 대해 찾아보니.. [level8@ftz level8]$ man find …생략… -size n[bckw] File uses n units of space. The units are 512-byte blocks by default or i.. 더보기
해커스쿨 FTZ ( level7 -> level8 ) by ORANG FTZ_level7 [level7@ftz level7]$ lshint public_html tmp[level7@ftz level7]$ cat hint /bin/level7 명령을 실행하면, 패스워드 입력을 요청한다. 1. 패스워드는 가까운곳에..2. 상상력을 총동원하라.3. 2진수를 10진수를 바꿀 수 있는가?4. 계산기 설정을 공학용으로 바꾸어라. 2진수를 10진수로.. 아주 간단한 암호학 문제같네요/bin/level7을 실행해보겠습니다. [level7@ftz level7]$ /bin/level7Insert The Password : itstest Wrong Password....!! --_--_- --____- ---_-__ --__-_- 아무거나 입력해보면 이상한 표시가 뜨는군요ㅎㅎ 저부분이 패스워.. 더보기
해커스쿨 FTZ ( level6 -> level7 ) by ORANG FTZ_level6 level6로 로그인해보면.. hint - 인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이다. 라는 글이 뜨네요.. 그동안의 문제와 다른것 같습니다.계속 진행해보면.. ##################################### ## ## ## 텔넷 접속 서비스 ## ## ## ## ## ## 1. 하이텔 2. 나우누리 ## ## 3. 천리안 ## ## ## ##################################### 접속하고 싶은 bbs를 선택하세요 : 1, 2, 3 어떤 것을 입력해도 반응이 없고.. crtl+c 도 먹히지 않습니다..이 문제에서 많이 헤맸는데.. 해답은 너무 쉽더군요 crtl+] 로 메뉴를 빠져나오면 됩니다. ㅎㅎ [level6@ftz.. 더보기
해커스쿨 FTZ ( level5 -> level6 ) 2 by ORANG 이번에는 스레드를 이용해서 더 깔끔하게 풀어보겠습니다. [level5@ftz thread]$ cat thread.c#include #include #include void *a();void *b(); int main(){ pthread_t thread1, thread2; int ia, ib; ia = pthread_create(&thread1, NULL, a, NULL); ib = pthread_create(&thread2, NULL, b, NULL); if(ia != 0 || ib != 0) { printf("pthread_create error!!"); exit(0); } pthread_join(thread1, NULL); pthread_join(thread2, NULL); return 0;} voi.. 더보기