전체 글

전체 글

    [LoB] Level3 : cobolt >> goblin

    [LoB] Level3 : cobolt >> goblin

    ID : cobolt PW : hacking exposed 이번에도 전체적인 흐름은 다음과 같다. 취약점 찾기 페이로드 작성 취약점 트리거 및 비밀번호 획득 이 과정을 잊지말고 leve3을 진행해보자. 1. 취약점 찾기 디렉토리 내에 어떤 파일이 존재하는지 먼저 확인해본다. 이번에도 다음 레벨(goblin)로 setreuid가 설정되어 있는 실행파일 하나와 그 바이너리의 소스코드파일(goblin.c)이 있다. 역시나 다음 할 일은 goblin.c를 보고 취약점을 찾는 일이다. [cobolt@localhost cobolt]$ nl goblin.c 1/* 2 The Lord of the BOF : The Fellowship of the BOF 3 - goblin 4 - small buffer + stdin ..

    [LoB] Level2 : gremlin >> cobolt

    [LoB] Level2 : gremlin >> cobolt

    ID : gremlin PW : hello bof world 이번에도 할 일은 level1처럼 level2에서도 아래의 순서로 문제 풀이를 진행한다. 1. 취약점 찾기 2. 페이로드 작성 3. 취약점 트리거 및 비밀번호 획득 1. 취약점 찾기 어떤 파일이 있는지 먼저 확인한다. level1과 마찬가지로 setreuid가 cobolt으로 설정되어있는 바이너리가 있다. 이번에도 cobolt.c에서 취약점을 찾고 페이로드를 만들어 cobolt에서 취약점을 트리거시켜 cobolt의 권한을 얻는 방식으로 진행한다. -1. 문제 파악 cobolt.c를 확인한다. 여기서도 level1처럼 strcpy로 입력값을 받고 있다! 이번엔 buffer의 크기가 16정도 밖에 되지않아, buffer에 쉘코드를 전부 넣을 수 없..

    [LoB] Level1 : gate >> gremlin

    [LoB] Level1 : gate >> gremlin

    id : gate pw : gate LoB의 문제들은 해당 level의 권한에서 다음 level 권한을 획득하여 다음 level의 비밀번호를 알아내는 방식이다. 그래서 level1의 gate로 접속해 취약점을 찾아 level2의 gremlin의 권한을 획득한 후, gremlin의 비밀번호를 알아내야한다. 따라서 앞으로 할 일은 (1) 취약점 찾기, (2) payload 작성, (3) gremlin 권한 획득, (4) my-pass로 gremlin 비밀번호 획득 이다. 1. 취약점 찾기 -1. 문제 파악 gate로 접속해 들어가보면 아래의 파일들을 볼 수 있다. gremlin.c로 취약점을 찾고, gremlin 권한의 gremlin을 실행해 권한을 획득하면 될 것 같다. gremlin.c 파일을 확인해보자..

    [LoB] The Load of BoF - 해커스쿨 BoF 환경 구축

    [LoB] The Load of BoF - 해커스쿨 BoF 환경 구축

    LoB는 해커스쿨에서 만든 wargame으로, 총 20개의 level을 거쳐가며 BoF 시스템 해킹 실습을 할 수 있다. LoB 시작을 위해서는 해커스쿨에서 배포중인 가상 머신 이미지가 필요하고, 이를 실행해 level1부터 하나씩 해결해나간다. 가상 머신 이미지는 아래의 해커스쿨 공지에서 받을 수 있다. https://www.hackerschool.org/HS_Boards/zboard.php?id=HS_Notice&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1170881885 다운받은 이미지를 실행하면 위의 화면이 뜬다. 환경 구축 가상 머신 이미지를 부팅한 후, 아래의 id, pw로 로그인한다. ID : ro..

    [System][Dreamhack] Exploit tech : Return to Shellcode

    [System][Dreamhack] Exploit tech : Return to Shellcode

    드림핵 내용을 기반으로 작성되었다. 문제 파악 // Name: r2s.c // Compile: gcc -o r2s r2s.c -zexecstack #include #include int main() { char buf[0x50]; printf("Address of the buf: %p\n", buf); printf("Distance between buf and $rbp: %ld\n", (char*)__builtin_frame_address(0) - buf); printf("[1] Leak the canary\n"); printf("Input: "); fflush(stdout); read(0, buf, 0x100); printf("Your input is '%s'\n", buf); puts("[2] Ove..

    [Dreamhack] ssp_001 - Write Up

    보호되어 있는 글입니다.

    [System][Dreamhack] wargame - ssp_001 스택 순서

    [System][Dreamhack] wargame - ssp_001 스택 순서

    드림핵 ssp_001문제를 푸는 중 내 생각과는 다르게 스택이 구성되어 있는 것 같아 어셈을 확인해 정리하였다. 코드만 보고 생각한 스택 순서 int main(int argc, char *argv[]) { unsigned char box[0x40] = {}; char name[0x40] = {}; char select[2] = {}; int idx = 0, name_len = 0; ... } 문제의 코드 중 일부 내용이다. 변수가 box, name, select, .. 순서로 선언되어 있어, 스택은 주소값이 높은 곳에서 낮은 곳으로 자라니까 당연히 아래와 같은 순서로 선언되어있을 것이라 생각했다. 이를 이용해 카나리 릭을 해보려 했으나 제대로 되지 않았다. 이 구조가 아닌 것 같아 IDA로 확인해봤다. ..

    [System][Dreamhack] bypass canary

    [System][Dreamhack] bypass canary

    카나리 우회 방법 1. 무차별 대입 (Brute Force) x64 아키텍처에서는 8바이트의 카나리가 생성되고, x86 아키텍처에서는 4바이트의 카나리가 생성된다. 카나리의 첫 바이트는 NULL 바이트이므로, 실제 7바이트(x64), 3바이트(x86)의 랜덤한 값이 포함된다. ⇒ 카나리를 알아내려면 256^7(x64), 256^3(x86) 번의 연산이 필요하다. (1바이트 = 8비트 = 2^8 = 256) ⇒ 연산량이 많아 무차별 대입은 비현실적, 불가능 2. TLS 접근 카나리는 TLS에 전역변수로 저장(fs:0x28)되고, 매 함수마다 이를 참조해 사용한다. TLS 주소는 매 실행마다 바뀌지만, 실행 중 TLS의 주소를 알 수 있고, 임의 주소에 대한 읽기 또는 쓰기가 가능하다면 TLS에 설정된 카나..

    [System][Dreamhack] 메모리 보호 기법 memory mitigation - Stack Canary

    [System][Dreamhack] 메모리 보호 기법 memory mitigation - Stack Canary

    다음은 드림핵 기반으로 제가 이해한대로 정리한 내용입니다. (잘못된 내용이 있다면 댓글로 알려주세요..!) 스택 카나리(Stack Canary)란? stack buffer overflow로부터 retrun address를 보호하는 기법 = 스택 카나리 (stack canary) 방법 함수의 프롤로그에서 스택 버퍼와 return address 사이에 임의의 값 삽입 함수의 에필로그에서 삽입된 값이 변조되었는지 확인 → 카나리 값 변조가 확인되면 프로세스 강제 종료 stack buffer overflow로 return address를 덮으려면 반드시 스택 카나리를 먼저 덮어야 함 카나리 값을 모르면 return address를 덮을 때 카나리 값이 바뀌게 됨 카나리 값이 바뀌면 프로세스가 강제 종료됨 → 실..

    [Dreamhack] basic_exploitation_001 Write Up

    보호되어 있는 글입니다.