XSS 공격 기법이란 Cross Site Scripting의 약자로 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 말한다. 하지만 만약 XSS 기법을 막기위해 Filtering이 되어있다면 해당 Filtering을 우회해서 공격해야 한다. 자바 스크립트 실행 공격자가 자바 스크립트를 실행할 수 있는 방법은 태그 말고도 다양하다. 이벤트 핸들러 속성 이벤트 핸들러란 특정 요소에서 발생하는 이벤트를 처리하기 위해 존재하는 콜백 형태의 핸들러 함수이다. 따라서 이벤트 헨들러에 XSS 공격 코드를 삽입해두면 해당 이벤트가 발생했을때 공격코드가 실행되게 된다. 대표적으로 위와 같은 onload, on..
해당 페이지는 dreamhack.io 사이트의 강의를 참고해 정리하고 이해못한 내용을 추가로 작성해둔것이니 참고사이트의 사이트를 참고하시기바랍니다. glibc 2.26 버전에서는 tcache에 대한 검증이 제대로 이루어지지 않았기 때문에 보안에 취약했다. 하지만 glibc 2.29 버전 이후로 tcache에 대한 검증이 이루어지면서 보안이 강화되었다. 또한 그 외에도 다양한 취약점을 개선하였다. tcache_put & tcache_get tcache를 관리하는 tcache_entry 구조체와 tcache_put, tcache_get 함수에 Double Free 검증에 사용될 코드가 추가되었다. // GLIBC 2.29 typedef struct tcache_entry { struct tcache_entr..
해당 페이지는 dreamhack.io 사이트의 강의를 참고해 정리하고 이해못한 내용을 추가로 작성해둔것이니 참고사이트의 사이트를 참고하시기바랍니다. glibc는 계속해서 업데이트가되고 있다 아래의 내용은 glibc 2.26 버전의 내용이고 glibc 2.29부터는 달라지게 된다. tcache는 glibc 2.26 버전 이상부터 적용된 기술이다. tcache는 Thread local caching)의 약자로 멀티 스레드 환경에서 메모리 할당 속도를 높이기 위해 적용되었다. 그렇기 때문에 보안이 취약하다. 우선 malloc 함수를 통해 동적 할당 요청이 들어오면 __libc_malloc 함수가 호출된다.__libc_malloc 함수는 MAYBE_INIT_TCACHE 매크로를 호출하여 tcache_init 함..
ptmalloc2는 리눅스 glibc에서 사용하는 메모리 할당자이다. ptmalloc2는 glibc 2.23버전과 glibc 2.26 이후 버전 동작 방식이 tcache로 인해 조금 달라졌다. glibc 2.23 기준으로 설명하겠다. 해당 페이지는 dreamhack.io 사이트의 강의를 참고해 정리하고 이해못한 내용을 추가로 작성해둔것이니 참고사이트의 사이트를 참고하시기바랍니다. ptmalloc2 allocator ptmalloc2에서 힙 청크는 malloc_chunk를 사용한다. struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */ INTERNAL_SIZE_T size; /* Size in byte..
scanf() 함수는 format string을 이용해 표준입력을 받을 수 있는 함수이다. format string에는 다양한 종류가 있는데 실수를 입력받는 방법은 %f, %lf를 이용해 입력받을 수 있다. 취약점 하지만 위의 방법을 이용해 실수를 입력받게되면 취약점이 발생하게된다. 바로 문자열 .을 입력하게 된다면 메모리에있는 데이터의 값이 달라지지않고 메모리에 원래있던 값이 그대로 남아있게된다. 만약 공격자가 buffer overflow 공격을 사용할 수 있고 바이너리에 canary가 걸려있다는 조건에서 바이너리가 실수를 입력받을때 위의 방법을 통해서 canary를 leak할 수 있거나 canary의 값을 변경하지 않고 ret를 조작할 수 있기 때문에 exploit이 가능하다. 주의할점 ROP와 같은..