목록Wargame/pwn (10)
EYEN

첫번째 공격기법 셸코드는 익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫는다. 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해서 특별히 셸이 접두사로 붙었다. 셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요한데, 그 이유는 execve셸코드에서 알 수 있다. 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있다. 어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내릴 수 있게 된다. 쉘코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍처와 운영체제에 따라 셸코드의 목적에 따라 다르게 작성된다. 공유되는 셸코드는 범용적으로 작성된 것이기 떄문에, 실행될 떄의 메모리 상태 같은 시스템 환경을 완..

컴퓨터는 크게 cpu와 메모리로 구성되어 있습니다. cpu는 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고, instruction ser architecture에 따라 이를 처리합니다. 공격자가 메모리를 조작할 수 있다면 조작된 메모리 값에 의해 cpu도 잘못된 동작을 할 수 있다. 이를 메모리가 오염됐다고 표현하며 이를 메모리 오염 취약점이라고 부른다. 리눅스 메모리 구조- 프로세스 가상메모리의 각 구역이 어떤 정보를 담고 있는지 이해해보자 세그먼트 프로세스의 메모리를 용도별로 5가지의 세그먼트로 구분한다. 프로그램이 실행되면서 세그먼트를 자세히 이해하려면 운영체제의 메모리 관리 기법 중 하나인 세그멘테이션 기법과 인텔x64에서 관련된 하드웨어의 설계를 알아야한다. 코드세그먼트실행..