Capture the Flag (8) 썸네일형 리스트형 운영체제 명령 실행 취약점 진단 웹 어플리케이션 취약점 1. 운영체제 명령 실행 ( OS Command Injection ) 1-1) 개요 웹 어플리케이션에서는 이전에 pwnable 분야를 공부할때 쉘을 얻기 위하여 주로 이용하였던 system() , exec() 등과 같은 시스템 명령어를 실행시킬 수 있는 함수를 제공하며 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 운영체제 시스템 명령어를 호출하여 백도어 설치나 관리자 권한 탈취 등 시스템 보안에 심각한 영향을 미칠 수 있는 취약점이다. OS command Injection은 웹 서버에 OS 명령을 실행하기 위해 웹 인터페이스를 사용한다. 사용자는 웹 인터페이스를 통해 OS 명령을 실행하기 위하여 운영체제 명령어를 입력한다 , 만일 이 명령어가 제대로 필터링.. 웹 취약점 진단제거 가이드 1. 개요 우리나라를 비롯한 여러 국가에서는 IT 신기술을 활용해 대부분의 서비스를 인터넷을 통하여 제공하고 있으며 정보 시스템 개발 시 필요한 기능들을 미리 구현해 둔 소프트웨어 표준 ( 프레임워크 )이 민간기업으로 빠르게 확산되었으며 앞으로도 인터넷을 활용한 서비스는 더욱더 확대될 것이다. 그러나 이러한 인터넷을 활용한 서비스를 확대하는데 있어서 보안 취약점 또는 해킹 공격은 커다란 걸림돌이며 , 취약점을 잘 알며 악의적 목적을 가지고 접근하는 블랙햇 해커로부터 우리 나라를 비롯한 여러 국가의 정보 시스템이 자유로울 수 없다. 본 블로그 게시글은 KISA( 한국인터넷진흥원 ) 의 가이드를 바탕으로 참고하여 글을 작성하며 목적은 가이드를 공부하며 웹에 존재하는 보안 취약점들에 대한 안정성 및 신뢰성 확.. Return To Libc ( RTL ) RTL ( Return To Libc ) RTL : - RTL 이란 , 공유 라이브러리의 주소로 Return address 를 조작하는 기법이다. - Return Address 영역을 공유 라이브러리 함수의 주소로 조작하여 , 해당 함수를 호출하는 기법이다. - 해당 기법을 이용하여 NX bit ( DEP ) 메모리 보호기법을 우회할 수 있다. - 공격방식은 Buf + SFP + system + dummy(exit) + /bin/sh로 RET를 원하는 함수로 덮어 실행한다. NX bit ( MS : DEP ) : NX (Never eXecute bit, 실행 방지 비트 ) 란 , - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. NX bit를 적용함으로써.. Return to Shellcode Return to Shellcode - Return to Shellcode 란 , 이름 그대로 프레임의 Return address 영역을 Shellcode가 위치한 주소로 변경시켜 프로그램의 흐름을 의도적으로 조작하여 shellcode를 호출하는 방식이다. Return to Shellcode 이해하기 - Return to Shellcode를 이해하기 위해서는 Assembly Instruction 중 CALL 과 RET에 대한 이해가 요구된다. CALL Instruction : Return Address ( CALL 명령어 다음으로 실행할 명령어의 위치 ( 주소 ) ) 를 Stack에 저장후 , 피연산자의 주소로 이동 RET Instruction : POP Instruction을 통하여 ESP 레지스터가 .. Basic of pwnable Shellcode - shellcode란 , 명령 shell을 실행시켜 공격자가 해당 시스템을 제어하는 코드다. - machine code로 작성된 작은 크기의 프로그램으로 일반적으로 어셈블리어로 작성후 기계어로 변경된다. Shellcode를 개발하기 위해서는 다음과 같은 지식을 필요로 한다.- 우리가 주로 사용하는 많은 프로그램들은 대부분 C언어와 같은 High-level의 언어를 컴파일 과정에 의해 Assembly , Machine Language 등과 같은 저수준 언어로 변경된 파일이다. (C code는 해당 시스템에 맞는 Assembly Code로 변환 -> 변환된 Assembly code를 Machine code로 표현 ) - 위와 같은 방식으로 Machine code는 메모리에 로드되어 코드를.. BOF 기초문서 와우해커팀 소속 달고나님이 작성하신 Buffer OverFlow 기초문서 입니다. ( 저작권에 문제될 시 바로 삭제하도록 하겠습니다. ) PLT & GOT PLT ( procedure Linkage Table ) - 외부 프로시저를 연결해주는 테이블- PLT를 통해 다른 라이브러리에 있는 프로시저를 호출하여 사용할 수 있다. GOT ( Global Offset Table )- PLT가 참조하는 테이블- 프로시저들의 주소가 들어있다. 전반적인 PLT와 GOT의 흐름은 다음과 같이 정리된다. 함수 호출 ( PLT 호출 ) -> 함수의 실제 주소가 쓰여져있는 GOT로 점프 -> GOT 참조 -> 해당 함수로 점프 만일 , 첫 호출이라면 GOT는 함수의 주소를 가지고 있지 않고 일련의 과정을 통하여 주소를 알아낸다. 호출이 두번이상 반복되면 첫 호출때 알아낸 주소로 바로 점프한다. 이렇게 참조하는 과정에서 주소를 변조하여 우리는 프로그램의 흐름을 변경시킬수 있다... #1. Reverse Engineering 리버싱 기초 낙서장. 어셈블리어 : CPU가 이해하는 기계어와 1:1 매칭되는 low level 언어. CPU 아키텍처마다 어셈블리어가 다르다. -> 즉 , 많은 어셈블리어가 존재한다.기호로 이루어져 있어서 되게 직관적이다 상용되어지는 문법은 2개이다. ( Intel , AT&T )일반저인 형태 : 명령 operand1 , operand2(operand : 연산의 대상으로 레지스터나 숫자 등이 올 수 있다. ) ex1) AT&T) mov $0x1, %eaxex2) Intel) mov eax, 0x1 이번글에서는 Intel 문법을 이용하겠다. 레지스터 : 값을 담아놓는 공간 ( = 다기능변수 ) , CPU에 존재하며 여러가지 레지스터가 존재한다. 범용 레지스터 ( x86 기준)eax : accumulato.. 이전 1 다음