바쁜 대기 busy wating 또는 spinning 은 어떠한 특정 공유자원에 대하여 두 개 이상의 프로세스나 스레드가 그 이용 권한을 획득하고자 하는 동기화 상황에서 그 권환 획득을 위한 과정에서 일어나는 형상이다. 장점 공유 자원에 대한 권한 획득이 아주 빠른 시간 내에 이루어질 수 있다는 확신이 있는 상황 또는 뮤텍스나 세마포어 등의 동기화 객체등을 이용하기에는 그 오버헤드가 큰 상황에서 간단히 쓸 수 있다. 단점 단순한 우선순위 스케줄링, 혹은 FCFS (First-come First-served) 스케줄링 기반의 단일 프로세서 시스템에서는 바쁜 대기를 적용할 때에 시스템에 행(hang) 이 거릴 수도 있다. 즉 빠르게 접근해서 빠르게 처리할 수 있는 경우 적용해서 공유자원을 이용하는데에 매우 ..
분류 전체보기
Heap 일단 heap 청크 구조를 알려면 힙이 무엇인지 알아야 할 것 같다. heap 은 프로그램이 실행되는 도중 동적으로 할당하고 해제하여 사용하는 메모리 영역 이다. 동적 메모리 할당자는 tcmalloc (google) ptmalloc2 (glibc) libumen (solaris) jemalloc (FreeBSD and Firefox) dlmalloc (General purpose allocator) 등이 있다. 우리가 봐야할 것은 ptmalloc2 와 dlmalloc 이다. dlmalloc 리눅스에서 사용되는 힙 관리에 사용되는 memory allocator dlmalloc 이 사용되다가 쓰레드 기능이 추가된 ptmalloc이 현재 사용된다. 그러므로 현재 우분투에서 사용되는 Memory Alo..
glibc 의 FILE 구조체가 가지고 있는 vtable을 변경하는 등 파일 스트림을 이용해 프로그램의 흐름을 변경하는 기법 이지만 vtable 을 변경하는 것은 최근 버전에선 대부분 막혀있다. 그래서 요즘엔 그냥 파일 스트림을 변경한다. 로컬 버전은 glibc 2.35 따라서 실습은 glibc 2.35 기준으로 했다. intro dreamhack - Backgropund : _IO_FILE https://dreamhack.io/lecture/courses/271 파일을 열 때 파일 접근 유형을 명시해야 한다. 대표적으로 읽기 및 쓰기 모드가 있다. 읽기 모드로 파일을 열고, 파일에 데이터를 작성하려하면 에러가 발생하지는 않지만 기능이 수행되지 않는다. 모든 파일 함수는 fopen 함수에서 반환한 파일 ..
Execution 실행을 하면 ya, da, yum, ba 로 이루어진 문자열이 출력된다. 복사해서 같은 문자열을 넣어주면 점수를 얻고 아니면 점수가 감점된다. Audit __int64 __fastcall main(__int64 a1, char **a2, char **a3) { initialize(); puts("Yolo yada yada - Play with me!"); puts("==========================================="); main_func(); return 0LL main 함수에서 minn_func 을 호출한다. unsigned __int64 sub_EAD() { size_t v0; // rax size_t v2; // rax char *s1; // [rsp+..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
tistoryBlogName: lmxx tistoryTitle: “[TOOR] 6.2 Toor_Canary write_up” tistoryTags: “” tistoryVisibility: “0” tistoryCategory: “1189856” tistorySkipModal: true tistoryPublished: “” tistoryPostId: “65” tistoryPostUrl: https://lmxx.tistory.com/65 link [TOOR] 6.1 Canary & canary write_up [[Canary Canvas.canvas|Canary Canvas]] main main 함수의 어셈은 다음과 같다. Dump of assembler code for function main: 0x0000..