전체 글

전체 글

    [Dreamhack] rev-basic-6 - Write Up

    보호되어 있는 글입니다.

    [Dreamhack] rev-basic-4 - Write Up

    보호되어 있는 글입니다.

    [Dreamhack] simple-operation - Write Up

    보호되어 있는 글입니다.

    [Dreamhack] rev-basic-1 - Write Up

    보호되어 있는 글입니다.

    [Dreamhack] Return to Library - Write Up

    이번 문제는 아래 글과 동일한 문제이다. 다만 차이가 있다면 pwntools을 이용해 가젯과 문자열을 찾았다. [system][hacking] Exploit Tech : Return to Library(RTL) NX를 우회하는 공격기법인 RTL에 대해 공부한 내용이다. RTL을 공부하기 전 NX가 무엇인지, PLT가 무엇인지 알아야 한다. 이에 대한 내용은 아래의 글에 정리되어 있다. [system][hacking] 메모리 보호기 3omh4.tistory.com 간단히 사용한 API만 정리하였다. 밑의 API를 이용해 위 글의 페이로드를 적절히 수정해 해결하였다. pwntools ELF, ROP e = ELF('./rtl') r = ROP(e) system_plt = e.plt["system"] # bi..

    [System][Dreamhack] Exploit Tech : Return to Library(RTL)

    [System][Dreamhack] Exploit Tech : Return to Library(RTL)

    NX를 우회하는 공격기법인 RTL에 대해 공부한 내용이다. RTL을 공부하기 전 NX가 무엇인지, PLT가 무엇인지 알아야 한다. 이에 대한 내용은 아래의 글에 정리되어 있다. [system][hacking] 메모리 보호기법 Mitigation: NX & ASLR 지난 글(Return to shellcode)를 보면 쉘을 딸 수 있었던 이유는 다음과 같다. return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 버퍼의 주소 알아내기 가능 버퍼안의 쉘코드 실 3omh4.tistory.com [system] PLT & GOT PLT(Procedure Linkage Table)과 GOT(Global Offset Table)는 동적 링크된 심볼의 주소를 라이브러..

    [pwnable.kr] fd - Write Up

    [pwnable.kr] fd - Write Up

    문제 확인 file descriptor와 관련한 문제인 것 같다. ssh fd@pwnable.kr -p2222로 접속해 fd문제를 풀 수 있다. 비밀번호는 아래 문제에서 알 수 있듯 guest이다. pwnable.kr에 접속하여 ls 명령어로 어떤 파일이 있는지 확인한다. 현재 id는 fd인데 fd 실행파일의 경우 setuid가 걸려있어 fd_pwn계정 소유의 fd 실행파일을 fd계정이 실행할 수 있다. 따라서 fd 실행파일을 이용해 쉘을 따면 fd_pwn권한의 쉘로 인해 flag실행이 가능해 진다. 이제 fd의 소스코드인 fd.c를 분석해 쉘을 획득하면 될 것이다. 소스코드 분석 fd@pwnable:~$ nl fd.c 1 #include 2 #include 3 #include 4 char buf[32]..

    [System] PLT & GOT

    [System] PLT & GOT

    PLT(Procedure Linkage Table)과 GOT(Global Offset Table)는 동적 링크된 심볼의 주소를 라이브러리에서 찾을 때 사용하는 테이블이다. [system] library - Static Link vs Dynamic Link 코딩을 하면 #include 를 항상 넣어준다. printf 함수를 사용할 때, printf 함수를 직접 정의하지 않고 libc에 정의된 함수를 가져다가 사용한다. 이를 라이브러리라고 한다. 여러 프로그램이 printf를 사 3omh4.tistory.com PLT & GOT ASLR이 적용된 환경에서, 동적 링킹 바이너리는 바이너리가 실행될 때마다 라이브러리가 매핑된다. 바이너리가 실행되기 전까지 라이브러리 함수의 주소를 알 수 없기 때문에, 라이브러리..

    [System] library - Static Link vs Dynamic Link

    [System] library - Static Link vs Dynamic Link

    코딩을 하면 #include 를 항상 넣어준다. printf 함수를 사용할 때, printf 함수를 직접 정의하지 않고 libc에 정의된 함수를 가져다가 사용한다. 이를 라이브러리라고 한다. 여러 프로그램이 printf를 사용하는데 그때마다 라이브러리에서 어떻게 가져올지에 따라 static linking과 dynamic linking으로 나뉜다. 라이브러리부터 하나씩 정리해보겠다. 라이브러리 printf, scanf, strlen, memcpy, malloc 등 많은 함수들을 쓸 때, 직접 정의를 할 필요가 없다. 이는 이미 libc(표준 c 라이브러리)에 정의되어 있고 API는 헤더파일(stdio.h, stdint.h, ...)에 선언되어 있다. 그래서 #incldue 를 통해 직접 정의하지 않고 사용..

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    지난 글(Return to shellcode)를 보면 쉘을 딸 수 있었던 이유는 다음과 같다. return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 버퍼의 주소 알아내기 가능 버퍼안의 쉘코드 실행 가능 공격을 막기 위해 시스템 개발자들은 여려 겹의 보호 기법을 적용해 공격당할 수 있는 표면(Attack Surface) 를 줄여나가려 한다. Attack surface를 줄이기 위한 메모리 보호기법에 대해 드림핵을 기반으로 작성하였다. 요약 return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 가능 버퍼의 주소 알아내기 가능 → ASLR 도입 버퍼안의 쉘코드 실행 가능 → NX-bit 도입 ASLR ( A..