분류 전체보기

    [Protection Tech.] Canaries(카나리), SSP

    Canaries (Canary word) 버퍼 오버플로우를 모니터하기 위해 버퍼와 제어 데이터(SFP) 사이에 설정된 값; 버퍼 오버플로우가 발생하면 canary의 값이 손상되고 canaries 데이터의 검증에 실패해 오버플로우에 대한 경고가 출력되고 손상된 데이터를 무효화 처리한다. 버퍼 Canary SFP △ 카나리가 적용된 경우 스택 구조 Canaries의 종류 ➰ Terminator Canaries canary 값을 문자열의 끝을 나타내는 문자들-NULL(0x00), CR(0x0d), LF(0x0a) EOF(0xff)-을 이용해 생성한다. 공격자가 이 canaries를 우회하기 위해서는 return address를 쓰기 전에 null 문자를 써야한다. null 문자는 overflow를 방지하게 한..

    [HackCTF] bof_basic

    checksec - 32bit - Partial RELRO - NX Analyze Pseudo Code (IDA) 실행 - 사용자로부터 문자열(buf) s의 값을 fgets함수를 통해 입력받도록 되어있다. - s와 v5 사이의 거리는 0x34 - 0xC = 52-12 = 40byte - 바꿔야 될 값이 v5이고 s와 v5 사이의 거리가 40byte이기 때문에 fgets함수에서 45byte로 제한했음에도 bof 공격이 가능해진다. - v5가 0xdeadbeef일 때 system("/bin/sh") 이 실행되니까 "A"*40 + 0xdeadbeef 의 꼴로 payload를 작성하면 될 것이다. "A"*40 + "BBBB"를 입력했더니 v5의 주소가 "BBBB"로 덮인 것을 확인할 수 있다. Exploit f..

    리눅스 디렉터리(Directory)

    디렉터리(Directory) 윈도우에서의 폴더로 생각하면 이해가 쉽다. 리눅스는 최상위 디렉터리인 루트(/)를 기준으로 그 하위 디렉터리에 또다른 다수의 디렉터리가 존재하는 트리 구조의 계층적인 파일구조를 가지고 있다. 리눅스에서 디스크 파티션을 나눌 때 루트 파티션을 할당해주면 루트 디렉터리의 하위 디렉터리들이 종속된다. / 최상위 디렉터리로, 루트 디렉터리라고 한다. /root 시스템 관리자 root의 홈 디렉터리이다. /bin binary의 약자로, 주로 실행 파일들이 들어있는 디렉터리이다. 터미널에서 사용하는 명령어들이 들어있는 디렉터리로 PATH가 설정되어 있다. /sbin system binary의 약자로, 주로 시스템 관리에 대한 명령어들이 들어있는 디렉터리이다. /boot 부팅 이미지 파일..

    부트 매니저 - LILO, GRUB

    부트 매니저(Boot Manager) = 부트 로더(Boot Loader) 부팅을 도와주는 역할을 하는 프로그램; 컴퓨터를 처음 시작했을 때 가장 먼저 실행되는 소프트웨어 프로그램이다. 한 컴퓨터에 다양한 운영체제가 설치되어 있을 경우에 선택하여 부팅할 수 있도록 한다. 하드 디스크의 맨 앞쪽 영역인 MBR(Master Boot Record)에 설치된다. **MBR: 부트 섹터(Boot Sector)/파티션 섹터(Partition Secotr); 디스크의 첫 번째(0번) 섹터이고, 크기는 512byte이다. 이 영역에 부트 로더 프로그램과 파티션 정보를 기록한다. 이 정보들을 통해 운영체제가 어디에 위치해 있는지 파악하고 선택한 운영체제를 주메모리 또는 RAM에 부팅한다. 리눅스에서 사용하느 가장 대표적..

    LVM

    LVM = Logical Volume Manager - 여러 개의 하드 디스크를 하나의 디스크처럼 만들거나, 2개의 하드 디스크를 3개의 디스크인 것처럼 만들 수 있다. - 사용 중인 파티션의 크기를 줄이거나 늘릴 수 있다. → 리눅스를 설치하거나 하드 디스크를 추가할 때 설정한 공간의 크기는 고정이 되어 변경이나 용량 증설이 어려운데, LVM이 이 문제점을 해결한다. 물리적 볼륨(PV; Physical Volume) 실제 디스크에 물리적으로 분할한 파티션이다. LVM에서는 물리적 볼륨을 하나의 구성원으로 받아들인다. 예) /dev/sdb1, /dev/sdc1 볼륨 그룹(VG; Volume Group) PV들이 보여 생성하는 덩어리 = PE가 모여 생성되는 하나의 큰 덩어리이다. 논리적 볼륨(LV; Lo..

    RAID

    RAID = Redundant Array of Independent/Inexpensive = 여러 개의 하드디스크를 하나의 디스크처럼 사용해 동일한 데이터를 다른 위치에 중복해서 저장하는 방법 = 디스크 어레이(Disk Array) - 운영체제는 하나의 RAID (데이터가 저장된 디스크의 묶음이라고 생각)는 논리적으로 하나의 디스크로 인식해 처리한다. - 초기 목적: 저용량 하드 디스크를 하나의 디스크로 확장해 사용 - 현재 목적: 백업 + 안정적인 데이터의 보존 및 유지, 속도 향상 등 - 하드웨어 RAID: 하드웨어 제조업체에서 여러 개의 하드디스크를 연결한 장비를 만들어 공급하는 RAID로, 안정적이고 성능이 좋은 편이다. ▶▶ "핫 스왑(Hot Swap) 베이(Bay)" 기능; 전원이 켜져있는 상..

    티스토리 스킨을 바꿔보았ㄷ다...

    webruden.tistory.com/630 티스토리 블로그 반응형 무료 스킨 배포 :: 베이스캠프 (나눔, 추천) 😎 스킨 소개 베이스캠프 스킨은 티스토리 블로그에서 사용되는 스킨입니다. 누구나 무료로 사용 및 커스터마이징을 할 수 있습니다. 미니멀리즘을 추구하는 컨셉에 맞게 굉장히 단순함을 강 webruden.tistory.com 이 분의 무료 스킨으로 바꿨다!! 너무 깔끔하고 이쁜 디자인이다! 추가적으로 나에게 편하게 바꾸고 싶어서 이것저것 더 찾아보았다. 관리/글쓰기 추가 e2xist.tistory.com/647 [티스토리][#1 스킨] Admin, Write 링크 달기 (수정 2019-03-11) 개요 티스토리의 '#1 스킨' 을 이용 중에 있었습니다. 모바일에서 접속했을 때, '글쓰기' 와 '..

    [POXX 2020] tips

    checksec - 64bit - NX - not stripped - statically linked >> plt와 got가 따로 구분되지 않는다. Analyze Pseudo Code 함수리스트를 살펴보면 가젯을 심어둔 함수가 있음을 확인할 수 있다. 실행 "/bin/sh"문자열이 포함되어 있지 않아 따로 writableArea에 넣어줘야한다. bss 영역: 0x6cbb60 gadgets syscall ; ret ; = 0x43ef25 pop rax ; pop rdx ; pop rdi ; pop rsi ; ret ; = 0x4009bc pop rdx ; pop rdi ; pop rsi ; ret ; = 0x4009bd pop rax ; ret ; = 0x41f854 SROP 방식으로 exploit 코드를..

    [POXX 2020] investigator

    checksec - 64bit - Partial RELRO - No Canary - NX Analyze Pseudo Code int __cdecl main(int argc, const char **argv, const char **envp) { __uid_t v3; // eax const char *v4; // rdi int v6; // [rsp+18h] [rbp-8h] int v7; // [rsp+1Ch] [rbp-4h] setvbuf(stdout, 0LL, 2, 0LL); v3 = getuid(); seteuid(v3); v7 = 0; puts("---------------------------------------------------"); puts("####FIND####THE####VACCINE..

    [LOB] gremlin → cobolt

    gate에서 gremlin으로 사용자 변경을 해주고 gate에서 얻은 gremlin의 비밀번호를 입력한다. 그리고 gate 단계에서 사용자만 변경했기 때문에 gate 권한의 디렉터리에서 gremlin 권한의 디렉터리로 옮겨준다. Analyze - small buffer로 buffer의 크기가 16byte밖에 안된다. - strcpy 함수에서 스택 버퍼 오버플로우 취약점이 발생한다. - buf[16] + SFP[4] + RET[4] = 24byte - 32bit - dynamically linked - not stripped debugging Payload 버퍼의 크기가 쉘 코드를 모두 입력받기에 너무 작기 때문에 쉘코드를 환경변수로 저장하여 환경변수를 호출하도록 한다. BUF+SFP (20) || RET..