Hack
-
Off-by-oneHack/Pwnable 2016. 8. 11. 18:36
Off-by-one 다음 코드를 보자 1234567891011121314151617#include int overflow(char *x){ char buf[1024]; strcpy(buf,x); printf("%s\r\n",buf);} int main(int argc,char *argv[]){ if(strlen(argv[1]) > 1024) { printf("BufferOverflow Attempt!!!\n"); return 1; } overflow(argv[1]);}Colored by Color Scriptercs 다음 코드를 보면, 오버플로우 발생 할 수 없는 환경임을 알 수 있다. 버퍼는 1024바이트인데, 1024바이트를 넘긴다면 버퍼오버플로우 탐지 문구가 출력되게된다. 그리고 바로 리턴시켜버리기..
-
const overwrite, 버그헌팅하면서 배운점Hack/Pwnable 2016. 7. 19. 00:07
const 는 C언어를 하면 누구나 알고있듯이 상수로, 변수와달리 한번지정한후로 절대 바꿀수없는 값이다. 취약점을 찾았는데 오버플로우를통해 그 다음에 있는 주소가 const로 선언된 변수였다. strcpy, sprintf같은 함수로 터졌었는데, 멍청하게 좀 오래 생각했었다.. #include int main(int argc,char *argv[]) { const char v25[4] = "CCCC"; char buf[20]; strcpy(buf,argv[1]); if(v25 == "AAAA") { printf("good!\n"); } else { printf("no\n"); } printf("%s",v25); return 0; } 코드는 이렇게 작성했다. 일단 내가 생각한 바로는 이랬다 const는 C ..
-
-
-
-
ARM Shellcode 간단한거..Hack/Pwnable 2016. 6. 29. 20:03
.section .text.global _start _start:.code 32add r3, pc, #1bxr3.code 16mov r0, pcadd r0, #10str r0, [sp, #4] add r1, sp, #4sub r2, r2, r2 mov r7, #11svc 1 .ascii "/bin/sh" 쉘코드를 만들때 이러한 어셈을 작성해서 만드는데, 그냥 간단하게 몇개 써보려해요 일단 arm에서의 calling convention부터 알아야하는데, 모든함수의 첫번쨰인자는 r0부터시작하며, 두번째인자는 r1, 세번째는 r2이렇게하여 r3까지 담기게되요 만약 어떤 함수중에 인자가 5개이상이면 어디에 넣지? 하는데 스택에다 넣어주게되요! 이제 이걸 알고난후에 다시 저 어셈을 보세요 뭔가 감이오지않나용 전 ..