해커스쿨 FTZ ( level15 -> level16 ) by ORANG FTZ_level15 [level15@ftz level15]$ bash2[level15@ftz level15]$ cat hint #include main(){ int crap; int *check; char buf[20]; fgets(buf,45,stdin); if (*check==0xdeadbeef) { setreuid(3096,3096); system("/bin/sh"); }} 이번에도 bash2를 띄우고!! 힌트를 보겠습니다level14와 아주 비슷하지만 check 가 포인터로 되어있네요ㅎㅎ0xdeadbeef를 넣어주고, 그 주소를 가리키도록 바꾸어 공격해보겠습니다. 메모리 구조를 그리는 과정은 level14와 같으므로 생략하겠습니다.buf 의 시작 주소가 필요하겠네요ㅎㅎ 찾아보겠습니다. RET [.. 더보기 해커스쿨 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로 덮어씌어줌으로 우회하면.. 더보기 이전 1 ··· 64 65 66 67 68 69 70 ··· 72 다음 목록 더보기