분류 전체보기 154

File Vulnarability

File Upload Vulnerability 공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점. 파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생한다. 원하는 시스템 커맨드를 실행하는 원격 코드 실행 취약점을 유발할 수 있다. 이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생. 파일 이름에 이용자가 입력한 문자열을 그대로 사용하거나, 이용자의 이메일, 닉네임 등을 포함시키는 등의 소스 코드 패턴이 이러한 취약점을 발생시킨다. 1. Path Traversal 일반적인 서비스 -> 보안을 위해 특정 디렉토리에만 업로드 허용. 제한 x = 악의적 이용자가 웹 서버의 소스 코드나 서버에 있는 중요 시스템 ..

Dreamhack 2022.08.24

SSTF Hacker's Playground

1. BOF101 bof101.c 코드 확인. printflag 함수를 실행시켜야 플래그를 알아낼 수 있다. 이름이 뭐냐고 물어보고 여기에 140바이트만큼의 이름을 입력해야 한다. bof 공격을 이용해서 140바이트보다 큰 값을 주고 check 값을 0xdeadbeef 그대로 유지해줘야 할 것 같다. 0x90(144) 바이트만큼의 공간을 할당해준다. DWORD PTR [rbp-0x4] = 0xdeadbeef 인걸로 보아 전자가 check 변수인 것 같다. 아래에서 check가 0xdeadbeef인지 검사해서 다르면 경고 문구를 출력한다. 2. BOF102

시스템 해킹 2022.08.23

Command Injection

시스템 함수 이용 = 이미 설치된 소프트웨어들을 쉽게 이용할 수 있다. 함수의 인자를 쉘의 명령어로 전달 - 치명적인 취약점 Command Injection 취약점 = 명령어를 실행해주는 함수를 잘못 사용해서 발생 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생. 시스템 함수를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달할 수 있다. 파이썬 웹 애플리케이션에서 입력한 임의 IP에 ping을 전송하고 싶다면 os.system("ping[user-input]") #임의 IP ping 전송 os.system("cat [user-input]") #임의 파일을 읽고자 할 때 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수도 있다. -> 리눅스 쉘 프로그램이 지원하는 ..

Dreamhack 2022.08.19

gdb 개념 및 사용법

gdb(GNU Debugger) 다른 프로그램을 수행 중에 그 프로그램 내부에서 무슨 일이 일어나고 있는지 보여주거나 프로그램이 잘못 실행되었을 때 무슨 일이 일어나고 있는지 보여주는 것. C, C++, Modula-2로 짠 프로그램을 디버그 할 수 있다. 코어파일 분석 또는 디버깅에 사용된다. quit으로 종료 명령을 주기 전까지는 터미널로부터 명령 라인을 읽어들인다. 디버깅 방법 '-g' 옵션을 주고 컴파일/링크 gdb 시작하기 gdb - gdb를 실행 후 file이라는 명령으로 program을 부른다. gdb gdb , - 코어 파일을 사용할 때 동시에 인자로 준다. gdb , - 실행 중인 프로세스를 디버그 하려면. gdb -g test.c -o test gdb test 명령어 정리..

시스템 해킹 2022.08.19

basic exploitaion 001 문제 풀이

Stack Canary : 스택 버퍼 오버플로우로부터 반환 주소를 보호한다. 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법. 카나리 값의 변조가 확인되면 프로세스 강제 종료. 스택 버퍼 오버플로우로 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 한다. gcc -o no_canary canary.c -fno-stack-protector -fno-stack-protector 옵션을 추가해야 카나리 없이 컴파일 할 수 있다. 근데 이 문제에는 카나리는 없다. 대신 NX가 있다. NX(DEP) NX와 DEP는 같은 개념의 보호기법이다. Non executable, Data Execution Protection의 약자. 'he..

시스템 해킹 2022.08.19

pwnable.kr bof 문제 풀이

버퍼 오버플로우와 관련있는 문제인 것 같다. 코드를 다운받아서 확인해봤다. func 함수에 0xdeadbeef라는 값이 입력된다. 이 입력된 key가 0xcafebabe와 같아야 쉘 코드를 얻을 수 있는 것으로 보인다. overflow me라고 출력하는 걸 봐서는 gets 함수로 overflowme 배열에 입력을 받는 것 같은데 이 배열의 크기 32보다 크게 입력받아 int key의 값을 0xcafebabe로 변조해야 한다. gets 함수를 통해서 입력받을 때 입력 길이에 대한 제한이 없으므로 버퍼 오버플로우 공격이 가능하다. overflowme에서 key까지의 거리를 구하여 gets() 함수로 32바이트 길이를 초과하도록 입력하여 key 값을 덮어쓰는 방법을 생각해본다. 일단 pwndbg를 사용해서 g..

시스템 해킹 2022.08.19

Stack Overflow

함수 호출 규약 함수의 호출 및 반환에 대한 약속. 한 함수에서 다른 함수 호출 시, 프로그램 실행 흐름이 이동한다. 호출한 함수가 반환하면, 다시 원래의 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack Frame)및 반환 주소( Return Address)를 저장해야 한다. 호출자는 피호출자(Callee)가 요구하는 인자를 전달해줘야 하며, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다. 함수 호출 규약의 종류 x86(32bit) 아키텍처 = 레지스터의 수가 적음. 스택으로 인자를 전달함. x86-64 아키텍처 = 인자가 적으면 레지스터만, 인자가 너무 많을 때는 스택 사용. CPU의 아키텍처가 같아도 컴파일러가 ..

시스템 해킹 2022.08.18

gdb 분석 실습

※ 스택 프레임(stack frame) 메모리의 스택 영역 = 함수 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역. 함수의 호출과 함께 스택 영역이 할당되며, 호출 완료 시 소멸함. 함수가 호출되면 스택에는 - 함수의 매개변수 - 호출 끝난 후 돌아갈 리턴주소 값 - 함수에서 선언된 지역 변수 등이 저장된다. 스택 프레임 : 스택 영역에 차례대로 저장되는 함수의 호출 정보 -> 함수의 호출이 모두 끝난 뒤에, 호출되기 이전 상태로 되돌아갈 수 있다. 더이상의 여유 공간이 없을 때 또 다시 스택 프레임을 저장하면 데이터는 스택 영역을 넘어가서 저장되게 된다. -> 프로그램 오동작 / 보안상 취약점 발생 gcc -g test_gdb.c -o test 로 컴파일하고 gdb test 일단 드림핵에서 배..

시스템 해킹 2022.08.18