IT 그리고 정보보안/Write-up 23

Codegate 2013 - Forensic(100)

문제 파일을 업로드 하고 싶었지만 용량 제한이 걸려서 업로드를 하지 못했음. 문제 내용은 파일을 주고 거기에서 조건에 합당하는 증거를 찾아라 이말. 문제 파일을 받아서 보면, 무슨 파일인지 확장자가 없다. 그럼.. 궁금하니까 일단 ExeinfoPE 에 넣고 돌려보았다. 7zip 파일이라고 나온다. 그럼 당장 확장자를 주고 압축을 풀어보자. 압축을 풀면 다음과 같이 evidence.001 이라는 파일이 나온다. 아.. 그럼 이녀석도 Exeinfo에 넣고 돌려볼까?? 헉. 안된다. 용량이 너무 커서 못한댄다.ㅠㅠ 그럼 이 파일이 무슨 파일인지 다른 방법으로 알아보아야 한다. 리눅스에 file 명령이 있으니 아마 무슨 파일인지 알 수 있을 것 같다. Ubuntu로 옮겨서 file 명령을 쳐보았다. x86 bo..

Codegate 2013 - Web(100)

문제파일은 첨부 (apmsetup 이용하여 서버를 열어서 거기에 집어넣고, db파일은 소스코드 보고 설정하셈. 따로 설명안함.) 일단 html 페이지를 열어보면 아래와 같은 페이지가 나온다. 원래 대회때는 get source를 누르면 login_check.php 소스 파일을 받을 수 있었따는데.. 나는 일단 첨부한 문제파일에 소스 파일이 담겨있었다. 로그인 창만 덩그러니 나와 있는 것을 보아 로그인 우회를 해야하는 문제라고 판단할 수 있다. 일단 소스를 보자. php함수에 대해 잘 모르는 관계로 검색해서 좀 알아봤따. ---------------------------------------------------------------------------------------------------------..

LOB Level 19 (nightmare)

xavius.c 를 열어보았다. /* The Lord of the BOF : The Fellowship of the BOF - xavius - arg */ #include #include #include main() { char buffer[40]; char *ret_addr; // overflow! fgets(buffer, 256, stdin); printf("%s\n", buffer); if(*(buffer+47) == '\xbf') { printf("stack retbayed you!\n"); // ret에 스택상의 주소를 쓸 수 없음 exit(0); } if(*(buffer+47) == '\x08') // 가젯 사용 불가능 { printf("binary image retbayed you, too!..

LOB Level 17 (zombie_assassin)

succubus.c를 열어봅시다. /* The Lord of the BOF : The Fellowship of the BOF - succubus - calling functions continuously */ #include #include #include // the inspector int check = 0; void MO(char *cmd) // check가 4라면 system(cmd) 실행 { if(check != 4) exit(0); printf("welcome to the MO!\n"); // olleh! system(cmd); } void YUT(void) // check가 3이라면 check를 4로 올림. { if(check != 3) exit(0); printf("welcome to th..

LOB Level 16 (assassin)

좀비 어쎄신.! 소스를 보면.. 저번 문제와 같이 스택,라이브러리 영역을 못쓴다. 거기에 쁠라스로 strcpy 대신 strncpy를 사용하여 RET 위로 못쓴다. 에헤이. RET위로 못쓰니까 생각나는게 Fake EBP 인데. 마침 주석에 FEBP 라고 나와 있네;; 그럼 고민없이 Fake EBP를 써서 문제를 풀어보자. 페이로드를 짜보면 스택을 초기화 시키는 코드가 존재하지 않으므로 그냥 스택 상에 shellcode를 올리도록 하겠다. 페이로드는 이렇게 구성된다. [shellcode 주소][shellcode] [nop 20] [shellcode주소 -4의 주소] [leave-ret 가젯] [assassin@localhost assassin]$ cp zombie_assassin zombie_assassim..

LOB Level 15 (giant)

assasin.c 를 열어보자. 이건 또 뭐하는 놈인가. no stack, no RTL? 일단 스택, 라이브러리 영역으로 eip를 돌릴 수가 없다. 에헤이.. 그럼 도대체 어디다가 하란 말이오... 코드영역(텍스트 영역)이 남아 있는데.. 코드영역을 활용해서 공격을 할 수 있을지 생각해보자. 어셈블리 코드는 코드영역 상에 있는 주소 그 위치에 있다. gdb돌리면 나옴 명령어 별로 그 주소를 가젯이라고 한다. RET 가젯을 이용하면 되지 않을까. 이것에 대해서 선행으로 미리 공부를 한 적이 있어서 쉽게 생각할 수 있었다. RET가젯은 gdb로 쉽게 알 수 있다. RET가젯을 RET자리에 올리고 RTL을 해보자. "/bin/sh"의 주소는 접때 구해놓은 것을 쓰겠다. ----> 0x400fbff9​ 페이로드..

LOB Level 14 (bugbear)

giant.c를 열어봅시다. 이번에도 주석에 친절하게 RTL이라고 미리 설명해주고 있다. 근데 뭔가 코드가 좀 더럽?네.. 슥슥 읽어보는거 보다 코드 해석부터 좀 할 필요가 있는듯 하다. --------------------------------------------------------------------------------------------------------- fp = popen("/usr/bin/ldd /home/giant/assassin | /bin/grep libc | /bin/awk '{print $4}'", "r"); fgets(buffer, 255, fp); sscanf(buffer, "(%x)", &lib_addr); fclose(fp); fp = popen("/usr/bin/..

반응형