Hacking(14)
-
layer 25 리눅스 시스템 프로그래밍 - 컴파일 &라이브러리 생성
시스템 콜 및 라이브러리 함수를 사용하여 소스 프로그램을 작성하면 컴파일 과정을 통해 실행 파일을 만들어야 합니다. 또한, 이 실행 코드를 재사용하기 위해서 라이브러리를 생성하여 사용하기도 합니다. 살펴볼 것 1. 리눅스에서 컴파일 하는 방법과 과정 2. 정적 or 공유 라이브러리를 작성하는 방법 3. 해당 라이브러리를 사용하기 위해서 설정해야 할 사항 컴파일 : 컴퓨터는 모든 명령을 cpu가 처리하고 cpu는 모든 명령을 0과 1로 이해하고 실행합니다. "cpu는 0과 1, 오직 2가지 경우 밖에 모르는 바보다"라는 말을 들은 적 있나요? 우리의 언어(c, python, ruby ..etc)는 컴퓨터가 이해하지 못 하므로 컴퓨터가 이해할 수 있는 통역사(compiler)가 필요하다. 여기서 말하는 통역..
2019.11.17 -
abex'crack 1 분석
스택의 역할 1. 함수의 로컬 변수 저장 2. 함수의 return address 저장 3. 함수 매개변수 전달 스택의 특징 1. 높은 주소 -> 낮은 주소 ... pop -> ESP 증가 ... push -> ESP 감소 ESP의 초기 값: 스택 메모리의 아래쪽에 있다. abex' crackme 1 분석 확인을 한 번 눌러봅시다. 이 글만 보고는 뭘 어떻게 크랙하라는건지 잘 모르겠습니다. ollydbg로 한 번 뜯어봅시다. 오홍 ※ crackme 샘플은 보통 serial key를 맞추는 것이 대부분인데 abex #1이 조금 특이하다고 합니다. ollydbg로 실행시켜 본 파일의 디스 어셈블리(기계어-> 어셈블리어 코드) 코드입니다. EP 코드가 매우 짧은데 그 이유는 abex' crackme 파일이 어셈..
2019.10.03 -
IA-32 Register 설명
CPU 레지스터란? - 레지스터(register)란 CPU 내부에 존재하는 다목적 저장 공간입니다. - CPU 내부의 RAM 보다 속도가 훨씬 빠르고 작은 다목적 저장 공간 레지스터를 알아야하는 이유 - 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하는 것들인데 정작 레지스터를 모르면 명령어 자체도 이해하기 힘들어지기 떄문입니다. 리버싱에 초 단계에서는 기본 프로그램 실행 레지스터에 대해 알아두어야 합니다. 디버깅을 할 때 가장 많이 보게 될 레지스터 입니다. 기본 프로그램 실행 레지스터(Basic program execution register) - 기본 프로그램 실행 레지스터는 다시 4개의 그룹으로 나눌 수 있습니다. 1. General-Purpose Register(범용 목적 레지스..
2019.09.10 -
lob 8번 풀이 orge -> troll
이제 인자를 더도말고 덜도말고 꼭 2개를 넣어주어야 하네요. 그리고 이젠 argv[1]까지 맨 밑에 부분에서 초기화를 시켜줍니다. 그런데 이 부분이 오버플로우 결함이 있는 함수인 일단 ret의 주소를 넣어줄 수는 있을거 같네요. argv[0] 공간을 쓸 수 있지 않을까요? 저번처럼 심볼릭 링크로 쉘코드를 넣어주면 되지 않을까요? 오오 쉘코드로 진짜 이름이 만들어지네요. (코어파일은 블로그 쓰기 전 노가다 테스트 때문에 있습니다.) 이제 ret의 넣을 값을 argv[0]의 주소로 만들어주면 될거 같아요. segment fault가 일어나서 core 파일이 있으니까 한 번 분석해봅시다. 0xbffffb50라는 쉘코드가 있는 주소를 찾았습니다. 아까 잘 안 돼서 찾아보니까 /x2f가 아스키코드로 /여서 잘 안..
2019.07.28 -
lob 7번 풀이 darkelf -> orge
darkelf로 로그인을 해준다. cat 명령어를 사용하여 orge.c를 보면 다음과 같은 부분이 나오는데 친절하게 "here is changed"라고 써져 있다. argv[0]은 파일명이 들어가는 부분이다. 따라서 다음말은 파일명이 77자(77byte)가 되어야한다는 말이 된다. 링크 파일 - 리눅스에 파일 형식에는 링크 파일이란 것이 있다. 이는 윈도우의 바로가기 아이콘과 비슷하고 링크 파일의 종류로는 크게 심볼릭 링크와 하드 링크가 있다. 심볼릭 링크 : 컴퓨터에서 심볼릭 링크(symbolic link) 또는 기호화 된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다. 쉽게 말해 파일을 가리키는 파일이라고 보면 될거 같다. 다..
2019.07.28 -
팀프로젝트 보고앉아
기본적인 정보 프로그램명: End-to-End 주제: 끝말잇기 팀원: 이수혁, 권민석, 김나현, 김건욱 제작 기간: 7/10~7/15 깃허브 링크: https://github.com/cg10036/Layer7_TeamProject cg10036/Layer7_TeamProject Contribute to cg10036/Layer7_TeamProject development by creating an account on GitHub. github.com 저희 조는 End-to-End라는 "끝말잇기 프로그램" 을 만들었습니다 . 팀원은 이수혁, 권민석, 김나현, 김건욱이며 제작 기간은 7월 10일부터 7월 15일까지 입니다. 위 사진이 제가 만든 부분입니다. 그 외 게임 설명 부분, 끝내기 부분, 잡일 등을 ..
2019.07.15