전체 글 191

[해커스쿨 LOB] level 6_wolfman

id : wolfman pw : love eyuna 1. 파일 목록 확인, 소스코드 분석 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [wolfman@localhost wolfman]$ ls -al //파일 목록 확인 total 48 drwx------ 2 wolfman wolfman 4096 Mar 29 2010 . drwxr-xr-x 25 root root 4096 Mar 30 2010 .. -rw-r--r-- 1 wolfman wolfman 24 Feb 26 20..

해커스쿨 LOB level 5 orc

id : orc pw : cantata 1. 파일 목록 확인, 소스코드 분석 ls -al로 파일 목록을 보니 이번 단계의 문제 파일은 wolfman인 듯 하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [orc@localhost orc]$ cat wolfman.c // 파일 내용 확인 /* The Lord of the BOF : The Fellowship of the BOF - wolfman - egghunter + buffer hunter */ #include #include extern char **environ; main(int ar..

티스토리에 코드 보기 좋게 넣기(코드 하이라이트, 형광펜)

1. color scripter 페이지 접속 https://colorscripter.com/ Color Scripter Simple & Flexible Syntax HighLighter colorscripter.com 2. 원하는 코드 붙여넣기 3. 상단 옵션 취향대로 설정 4. 우측 하단 HTML로 복사 선택 후 뜬 팝업 내용 복사 가운데 HTML로 복사 선택 자동으로 블록 지정되어있음. 바로 ctrl+c 또는 마우스 오른쪽 버튼 눌러 복사 선택 5. 티스토리 글쓰기 화면에서 HTML모드로 전환 6. 코드 삽입을 원하는 위치에 4번에서 복사한 내용 붙여넣기 7. 다시 기본모드로 돌아와 확인하면 아래와 같이 가독성 좋게 코드가 들어간다. 1 2 3 4 5 6 #include int main(){ prin..

카테고리 없음 2022.03.30

8086 CPU 레지스터 구조

CPU가 프로세스 실행 위해선 프로세스를 CPU에 올려야 함 데이터 빠른 읽쓰 필요 -> CPU 내부 메모리(=register) 사용 register 1. General-Purpose register : 연산에 사용되는 피연산자, 주소계산 피연산자, 메모리 포인터 저장 2. Semgment register : code/data/stack segment 가리키는 주소 3. Program status and control register : 상태나 조건 검사 플래그 4. Instruction pointer : instruction(명령) 있는 메모리 상 주소 1. 범용 레지스터(General-Purpose register) 프로그래머 임의 조작 허용 AX 레지스터 상위 부분 : AH 〃 하위 부분 : AL ..

8086 Memory Architecture

메모리 주소 할당 범위 0~2^32-1 64bit 시스템(최근 pc, 서버급) 〃 : 64bit -> 메모리 주소 할당 범위 0~2^64-1 OS는 하나의 프로세스 실행시키면 프로세스를 segment 단위로 묶어 가용 메모리 영역에 저장 ↓ multi-tasking memory에 여러개의 프로세스가 저장되어 병렬적 작업 수행 segment 하나의 프로세스를 묶은 것 실행 시점에 실제 메모리의 어느 위치에 저장될 지 결정됨 시스템에는 최대 16,383개 sement 생성 가능 하나의 segment 최대 크기 : 2^32byte code segment : instructions 들어 있음 segment에서는 logical address 사용 logical address는 physical address 와 매..

해커스쿨 LOB level 4 goblin

id : goblin pw : hackers proof 1. 파일 목록 확인, 소스코드 분석 ls로 파일 목록 확인, orc와 orc.c가 눈에 띈다. 우선 orc가 어떻게 동작할지 미리 파악하기 위해 orc.c의 내용을 살펴봤다. 입력값의 길이가 2보다 작으면 argv error 출력 후 실행 종료 (1) (2) (3) (1) memset은 리눅스에서 메모리를 초기화하는 함수이다. environ 배열이 인자로 들어있는데, 이 부분으로 보아 환경변수를 쭉 초기화 하는 것으로 예상된다. (2) 입력값의 index [1][47] 값이 \xbf이지 않으면 stack is still your friend. 문구 출력 후 프로그램이 종료된다. \xbf는 주소값일테니, 인자를 넣을 때 이것을 신경 써야 프로그램이 ..

해커스쿨 LOB level 3

id : cobolt pw : hacking exposed 1. 파일 목록 확인, 소스코드 분석 파일 목록을 확인하니 goblin 파일이 눈에 띈다. goblin.c 내용을 보면 gets함수로 입력받아 입력값을 buffer에 저장하고, 이 buffer 내용을 출력하는 코드이다. gets 함수는 입력 받은 값의 길이와 이것을 저장할 공간의 길이를 확인하지 않고 그냥 넣어버리기 때문에 버퍼오버플로우 공격에 취약한 대표적인 함수 중 하나이다. 이 취약점을 이용해 BOF를 일으킬 것이다. 일단 goblin을 실행해 봤더니 입력값을 받게 되어있고, 입력한 그대로 출력된다. buffer 크기보다 큰 값을 넣었더니 정상 실행은 되지만 Segmentation fault 경고가 나왔다. gdb로 보니 buffer가 딱 ..