목록Hack/DreamHack (74)
CIDY
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.

task 리눅스의 태스크는 프로그램 실행 단위를 말한다. 사용자가 어떤 프로그램을 실행하면 태스크가 생성되고, 그 프로그램의 코드가 실행된다. 리눅스에서는 하나의 프로세스와 스레드가 각각의 태스크가 된다. 대부분 운영체제는 여러 태스크를 생성해두고, 각 태스크에 실행 시간을 배분하는 방식으로 태스크를 관리한다. 다수의 태스크를 관리하는것을 멀티 태스킹(Multitasking), 실행 시간을 배분하는 것을 스케줄링(Scheduling)이라고 한다. 각 태스크는 커널 메모리에 task_struct구조체로 표현되는데, 이 구조체에는 태스크의 여러 정보가 저장되어 있다. 그 중에는 사용자 신원, 권한에 대한 정보도 포함되어 있어서, 이를 조작하는 것이 커널 익스플로잇의 목표가 되기도 한다. 리눅스 권한 리눅스는..

포너블에서 이용되는 linux exploitation에는 다양한 기법이 존재하겠지만.. 복습 겸 조금 생소한? 것들만 가볍게 정리하고 넘어가겠다. .init_array & .fini_array 위와 같이 gdb에서 elfheader명령어를 수행하면 바이너리에 존재하는 여러 섹션들을 볼 수 있다. 이러한 섹션들은 소스코드가 빌드될 때 컴파일러에 의해 만들어지는데, .init_array와 .fini_array는 바이너리가 실행되고 종료될 때 참조하는 함수 포인터들이 저장되어 있는 섹션이다. void usercall noreturn start(__int64 a1@, void (*a2)(void)@) { ... __libc_start_main(main, v2, &_0, _libc_csu_init, _libc_c..

프로그램의 취약점에는 크게 두 가지가 있다. 1) 메모리 커럽션, 2) 로지컬 버그. 메모리 커럽션이 프로그램 자체의 메모리 관리 실수로 인해 발생하는 취약점인 반면, 로지컬 버그는 프로그램상의 논리적 오류로 인해 발생한다. 로지컬 버그의 경우 프로그램의 부정확한 동작을 초래하지만 크래쉬를 일으키지는 않는다. 프로그램을 구현할 때 음수나 범위를 넘은 인덱스 등에 대해 예외처리를 해 주지 않아 발생하는 오류 등이 대표적인 로지컬 버그이다. Command Injection 인젝션은 사용자의 입력을 검증하지 않고 쉘 커멘드나 쿼리의 일부로 처리하여 공격자로 하여금 실행 흐름을 조작할 수 있도록 하는 취약점이다. 쉘에서 존재하는 다양한 메타문자들을 이용해 커맨드 인젝션을 트리거할 수 있다. $ : 쉘 환경변수 ..