전체 글

· 후기
.Intro이번 BoB 13기 취약점 분석 트랙에 합격하게 되어 서류는 어떤 식으로 작성했는지, 면접은 어떤 식으로 봤는지, 교육 시작한 지 한 달이 지난 지금 어떤지 후기를 작성하기 위해 오랜만에 글을 작성한다. 참고로, 과제 도중에 숨 돌릴 겸 작성하는 거라 두서없이 생각나는 대로 작성하겠다. 서류본래 BoB는 생각이 있었지만 하고 있던 프로젝트도 있었고, 다음에 할 프로젝트도 구상하고 있었던 터라 다음에 지원하려고 했었으나 모집기간이 연장되었다는 소식을 듣고 경험 삼아 지원이라도 해볼까 해서 급하게 서류를 작성해서 제출하였다.거의 2시간 정도만에 작성해서 제출했던 것 같다.따라서, 이 글을 읽고 BoB지원에 도움을 얻고자 하는 사람들에게는 도움이 안 될 수 있다. 서류에 제출한 항목에는 동아리, 발..
· TOOR
what is environ main 함수의 인자는 사실 3가지가 있다. int main(int argc, char **argv, char **envp); argc – 명령행 인자 개수 argv – 명령행 인자 벡터 envp – 환경 변수 목록 인데 C 언어에서는 envnviron 이라는 전역변수가 미리 만들어져 있다. #include extern char ** environ; int main(){ int i = 0; printf("environ list\n"); for(i = 0; environ[i]; i++){ printf(": %s\n", i, environ[i]); } return 0; } 그래서 아래처럼 extern 으로 environ 을 불러와서 출력해보면 이렇게 환경변수들이 모두 출력되는 것..
· TOOR
What is Stack Pivoting 특정 중심점을 기준으로 스택이 아니었던 공간을 스택 영역인 것 처럼 사용하는 기법. 이 기법을 통해 익스플로잇을 하기 위한 공간이 부족할 때 새로운 스택 영역을 확보할 수 있다. 기존의 스택을 리얼 스택이라고 하고 새롭게 확보된 영역을 페이크 스택이라 한다. 여러 gadget을 이용해서 쓰기 가능한 공간에 Fake Stack을 구성해놓고 chaining 하는 기법 fake stack을 위한 공간으로는 보통 bss + 0x300 영역을 사용하고 체이닝할 때마다 0x100 씩 더해서 새로운 공간을 만들어 준다. 가젯은 RSP 레지스터의 값을 변조할 수 있는 가젯을 사용한다. 여러 가젯들이 있는데 이중 보통 leave; ret; 가젯을 사용한다. pop rsp gadg..
· TOOR
보호되어 있는 글입니다.
· TOOR
// 이름 : uaf_overwrite.c // 컴파일: gcc -o uaf_overwrite uaf_overwrite.c #include #include #include #include 구조체 인간 { 문자 이름[16]; 정수 무게; 나이가 많다; }; 로봇 구조체 { 문자 이름[16]; 정수 무게; 무효 (*fptr)(); }; 구조체 인간 *인간; 구조체 로봇 *robot; char *맞춤[10]; int c_idx; void print_name() { printf("이름: %s\n", 로봇->이름); } 무효 메뉴() { printf("1. 인간\n"); printf("2. 로봇\n"); printf("3. 사용자 정의\n"); printf("> "); } 무효 human_func() { int ..
· Misc/books
Intro 최근 보안에 대한 관심이 많아 지면서 보안성을 고려한 개발 등을 다룬 책들이 많이 나오고 있다. 애플리케이션 보안을 다루는 책들은 애플리케이션에서 취약점이 발생하지 않게 하는 테크닉에 중점을 둔다. 이런 책들은 애플리케이션 개발에 대한 방어의 근간을 만드는 데 도움이 되지만, 취약점의 본질은 거의 다루고 있지 않는다. 제한된 시간과 예산을 고려해야 하기 때문에 모든 개발이 기본부터 보안 애플리케이션을 고려할 수 있는 것이 아니다. 반면 보안 코딩의 목표는 “조금이라도 취약점이 발생할 수 있는 방법은 사용하지 말라!” 이다. 맞는 말이지만 너무 비용이 많이 들거나 시간을 많이 소모함으로써 비합리적인 경우도 종종 발생하기 때문에 침투 테스트나 윤리적 해킹에 관심을 돌린다. 이런 주제는 시중에서 다..
· Misc/CS
/* * context_switch - 새 MM 및 새 스레드의 등록 상태로 * 전환합니다. */ static inline void context_switch(struct rq *rq, struct task_struct *prev, struct task_struct *next) { struct mm_struct *mm, *oldmm; prepare_task_switch(rq, 이전, 다음); mm = 다음->mm; oldmm = 이전->active_mm; /* * paravirt의 경우 이는 스위치_to의 종료와 결합되어 * 페이지 테이블 다시 로드와 스위치 백엔드를 * 하나의 하이퍼콜로 결합합니다. */arch_start_context_switch(이전); if (!mm) { next->active_m..
· Misc/CS
바쁜 대기 busy wating 또는 spinning 은 어떠한 특정 공유자원에 대하여 두 개 이상의 프로세스나 스레드가 그 이용 권한을 획득하고자 하는 동기화 상황에서 그 권환 획득을 위한 과정에서 일어나는 형상이다. 장점 공유 자원에 대한 권한 획득이 아주 빠른 시간 내에 이루어질 수 있다는 확신이 있는 상황 또는 뮤텍스나 세마포어 등의 동기화 객체등을 이용하기에는 그 오버헤드가 큰 상황에서 간단히 쓸 수 있다. 단점 단순한 우선순위 스케줄링, 혹은 FCFS (First-come First-served) 스케줄링 기반의 단일 프로세서 시스템에서는 바쁜 대기를 적용할 때에 시스템에 행(hang) 이 거릴 수도 있다. 즉 빠르게 접근해서 빠르게 처리할 수 있는 경우 적용해서 공유자원을 이용하는데에 매우 ..
lmxx
lmxx