분류 전체보기

SystemSecurity/System_실습

[SYSTEM-_-실습] CrackMe2 문제

# 1초 풀이법 먼저 파일을 실행해 준다. 여기서 전체 실행을 하면 텍스트를 입력할 수 있는 창이 나타난다. ctrl+F2로 창 전체를 초기화 한 후 Hax dump와 ASCII를 확인해보자. 그 후에 ASCII 코드를 확인한다. HackFun이라는 이름의 Exit파일을 확인했다. 이 HackFun이라는 값을 처음에 실행했을 때 나온 입력창에 넣어준다. 그러면 다음과 같은 결과를 얻을 수 있다. 최종적으로 SEP라는 값이 나왔다. # dll 파일 확인하는 방법 올리디버거에서 dll 파일을 여는 방법을 알아보자. 1. 올리디버거 화면에서 단축키 [ Alt ] + [ o ]를 누른다. 2. Events에서 Break on new module (DLL)을 클릭 후, OK 버튼을 누른다. 3. dll 파일 확인..

SystemSecurity/System_실습

[SYSTEM-_-실습] CrackMe1 문제

CrackMe1 파일을 실행했다. 파일 실행 시 CD-Rom을 만들으라는 메시지와 CD-ROM Drive가 아니라는 두 개의 메시지 창이 뜻 것을 확인할 수 있었다. Ollydbg를 이용해 프로그램을 띄운 화면이다. 위 프로그램을 이용해서 OK 메시지를 띄워야 한다. 나는 push 값을 수정해 Drive를 인식시켰다. F8을 누르면 한 칸씩 실행되고, F7 단축키를 누르면 함수 내부까지 확인해볼 수 있다. F8 단축키를 이용해 실행하다가 아래 Title과 Text의 성공 메시지 주소를 띄울 수 있겠다고 생각해 두 가지 메시지의 주소를 아래 주소로 변경했다. 이제 이 수정된 파일을 저장해주겠다. 저장 방법은 ollydbg를 실행한 후 메모리 주소가 있는 공간에서 마우스 우클릭 -> Copy to execu..

WebSecurity/Web Security Concepts

[001] OS Command Injection에 대해 알아보자!

OS Command Injection(OS 명령 인젝션) 또는 Sheel Injection은 웹 애플리케이션이 구동중인 서버의 운영체제상에서 임의의 명령을 실행하도록 하는 웹 취약점입니다. 웹 어플리케이션은 HTML Form, HTTP Header, Coodie, Get parameter 등에서 사용자로부부터 데이터를 입력받아 시스템 셸(Shell)에 제공할 수 있습니다. Command Injection 공격은 주로 응용 프로그램에 의해 실행되며, 불충분한 입력 검증으로 가능합니다. Command Injection의 예 invicti formerly Netsparker 작동 방법 1단계 악의적인 운영 체제 명령을 실행할 수 있는 애플리케이션 취약점 찾기 2단계 응용 프로그램이 호스트 운영 체제에서 원하는..

SystemSecurity/System Security Concepts

[009] x86과 x64 아키텍처의 레지스터를 표로 알아보자!

X86 Architecture x64 아키텍처는 인텔 64비트 CPU 아키텍처입니다. 흔히 컴퓨터를 16bit 컴퓨터, 32bit 컴퓨터, 64bit 컴퓨터라고 부릅니다. 이것 전체를 다시말해 N비트 아키텍처로 부르겠습니다. 여기서 64, 32 같은 것들은 CPU가 한 번에 처리할 수 있는 데이터의 크기를 말합니다. 이를 컴퓨터가 이해할 수 있는 데이터의 단위라는 의미에서 WORD(워드)라고 부릅니다. WORD가 크면 어떤 점이 유리할까요? WORD가 크면 사용할 수 있는 가상메모리의 크기가 커지기 때문에 최근에는 64bit 컴퓨터를 주로 사용합니다. 32비트 아키텍처에서는 4기가 바이트가 최대로 가능한 가상메로리의 크기로 많은 메모리 자원을 소모하는 전문 소프트웨어나 고사양 게임 등을 할 때 부족할 수..

WebSecurity/seKUCTF_실습

[KUCTF-_-실습] NewAPI 문제

보호되어 있는 글입니다.

SystemSecurity/System Security Concepts

[008] GCC 컴파일러란 무엇일까? GCC 컴파일러와 파일 확장자

자유 소프트웨어 재단 리처드 스톨만이 자유 소프트웨어의 생산과 보급을 장려하기 위해 창립한 재단 자유 소프트웨어 목적에 상관없이 프로그램을 실행시킬 수 있는 자유 필요에 따라서 프로그램을 개작할 수 있는 자유(이러한 자유가 실제로 보장되기 위해서는 소스 코드를 이용할 수 있어야만 한다. 왜냐하면 소스 코드 없이 프로그램을 개작한다는 것은 매우 어려운 일이기 때문이다.) 무료 또는 유료로 프로그램을 재배포할 수 있는 자유 개작된 프로그램의 이익을 공동체 전체가 얻을 수 있도록 이를 배포할 수 있는 자유 // free의 뜻은 무료가 아닌 자유를 뜻함 GNU(GNU is Not Unix) Project GNU는 운영 체제의 하나이자 컴퓨터 소프트웨어의 모음집 GNU는 온전히 자유 소프트웨어로 이루어졌으며, 그..

SystemSecurity/System Security Concepts

[007] DLL 파일은 무엇일까?

DLL이란? DLL은 Dynamic Link Libray의 약자로 동적 링크 라이브러리라고 불립니다. 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리입니다. DLL을 사용하면 프로그램을 여러 개별 구성 요소로 모듈화할 수 있습니다. 또한 프로그램의 다른 부분에 영향을 주지 않고 각 모듈의 업데이트를 손쉽게 할 수 있습니다. DLL의 이점 더 적은 리소스 사용 여러 프로그램이 같은 함수 라이브러리를 사용하는 경우에 DLL을 사용하면 실제 메모리에서 로드되는 중복 코드를 줄일 수 있어 Windows 운영체제의 다른 프로그램의 성능이 크게 향상될 수 있습니다. 모듈식 아키텍처 활용 DLL을 사용하면 모듈식 프로그램을 효율적으로 개발할 수 있습니다. 여러 언어 버전이 필요한 큰 프로..

SystemSecurity/System Security Concepts

[006] 어셈블리 핸드레이(Assembly Handray)는 무엇일까?

어셈플리 헨드레이란? 어셈블리 핸드레이는 어셈블리어를 C언어로 복원하는 작업을 의미합니다. 때문에 어셈블리어와 함수의 프롤로그, 에필로그를 미리 알고 있어야 합니다. 어셈블리어 2023.03.13 - [Security/System] - [003] x86 아키텍처의 어셈블리어 명령어 [003] x86 아키텍처의 어셈블리어 명령어 어셈블리어란 무엇일까요? 먼저 고급 언어와 저급 언어부터 짚고 넘어가겠습니다. 고급 언어는 간단히 말해 인간이 이해하기 쉬운 언어입니다. Python, C, C++, JAVA, Javascript 등이 있습니다. 일반적 movefun-tech.tistory.com 함수의 플롤로그와 에필로그 2023.03.13 - [Security/System] - [005] 함수의 프롤로그(pro..

SystemSecurity/System Security Concepts

[005] 함수의 프롤로그(prologue)와 에필로그(epilogue)는 무엇일까?

개념 프롤로그(Prologue)와 에필로그(Epilogue)는 무엇일까요. 프롤로그는 보통 문학 작품에서 본편을 시작하기 전에 먼저 읽도록 하는 파트입니다. 에필로그는 작품의 줄거리가 끝난 후 보충된 부분을 말합니다. 함수의 프롤로그(function prologue)와 에필로그(function epilogue)도 마찬가지입니다. 함수의 프롤로그는 함수 시작 부분의 몇 줄의 코드입니다. 스택과 레지스터를 함수 내에서 사용할 수 있습니다. 함수의 에필로그는 함수의 끝에 나타나며, 스택과 레지스터를 함수가 호출되기 전의 상태로 복원합니다.이는 어셈블리 언어 자체의 일부가 아닌 사용하는 규칙을 나타냅니다. 컴파일 결과 확인 아래 C언어 예제를 바탕으로 x86-64 gcc 4.5.3 컴파일러로 컴파일해보겠습니다...

SystemSecurity/System Security Concepts

[004] 컴퓨터의 메모리는 어떻게 동작할까? 컴퓨터 저장장치의 종류와 동작원리, 그리고 메모리

컴퓨터 저장장치의 종류 컴퓨터 저장장치는 어떤 것이 있을까요? 우선 저장장치의 계층을 살펴보겠습니다. 보조기억장치는 프로그램이나 데이터 등을 비교적 장기간 저장하기 위한 저장장치입니다. 용량이 크고 가격이 저렴하지만, 속도가 느리다는 단점이 있습니다. 하드디스크(HDD)와 솔리드 스테이트 디스크(SSD)가 있습니다. 주기억장치는 CPU가 연산을 수행하기 위해 필요한 명령어나 데이터를 임시로 저장하기 위한 기억장치입니다. 보조기억장치보다 속도가 빠르지만, 가격 대비 용량이 적습니다. 캐시메모리는 전원이 켜져있으면 데이터가 계속 유지됩니다. CPU와 직접 통신하는 메모리의 한 종류로 속도가 매우 빠르다는 장점이 있습니다. 레지스터는 CPU가 연산에 필요한 자료를 임시로 저장하는 역할을 합니다. 컴퓨터 동작 ..

movefun-tech
'분류 전체보기' 카테고리의 글 목록 (4 Page)