분류 전체보기
LOB giant ~ zombie_assassin → succubus : ROP
LOB giant ~ zombie_assassin → succubus : ROP
2017.01.18giant - one step closerargv[1][47] == '\xbf' || argv[1][47] == '\x40' 이면 exitstack, library로 return이 불가능하다. 마지막에 memset(buffer, 0, 44); 한다. buffer랑 sfp까지 초기화. 그래도 ret 이후는 남아있다. 당장 생각나는 방법은 shared library의 header를 수정해 library mapping address를 0x40이 아닌 다른 곳으로 바꾸는 것인데... windows의 image base에 대응되는 LOAD 값이 shared library의 경우 0x00000000으로 나온다는게 문제. (readelf -l )linux는 windows와 달리 library에 정해진 mapping ..
LOB darkknight ~ bugbear → giant : ldd와 nm으로 함수 mapping 주소 찾기
LOB darkknight ~ bugbear → giant : ldd와 nm으로 함수 mapping 주소 찾기
2017.01.16darkknight - new attackerargv[1][47] == '\xbf' 이면 exit 한다. 즉 stack으로 return 못한다.RTL 사용하면 된다./bin/my-pass 문자열 삽입은 환경변수를 사용했다. bugbear - new divideret에 들어가는 주소가 execve의 주소여야만 한다. execve인지 검사하기 위해 execve의 주소를 얻는데 ldd와 nm을 사용한다.보통 함수의 주소를 구하기 위해 gdb로 실행한 다음 print 명령을 이용하지만 다음과 같은 방법으로도 가능하다. ldd로 shared library가 mapping되는 주소를 구한다.nm [-D]으로 함수의 offset을 구한 다음 이를 mapping 주소와 더한다. shared library는 fPIC 옵..
생성자, 소멸자 low-level
생성자, 소멸자 low-level
2017.01.13소멸자.dtors```080495f4 d __DTOR_END__```소멸자로 프로그램이 종료되기 전에 여기에 명시되어 있는 주소(함수)가 호출된다.`` __DTOR_END__``의 위치는 nm을 사용해도 좋고 readelf나 objdump로 확인해도 좋다. .fini_arraygcc 4.7 이상 버전은 .ctors .dtors를 사용하지 않는 대신 다음을 사용한다.``` [18] .init_array INIT_ARRAY 0000000000600e10 00000e10 0000000000000008 0000000000000000 WA 0 0 8 [19] .fini_array FINI_ARRAY 0000000000600e18 00000e18 0000000000000008 0000000000000000 WA 0..
LOB golem → darkknight : strncpy size overflow
LOB golem → darkknight : strncpy size overflow
2017.01.12golem - cup of coffee void problem_child(char *src){ char buffer[40]; strncpy(buffer, src, 41); printf("%s\n", buffer); } main(int argc, char *argv[]){ check argc
secure-execution mode
secure-execution mode
2017.01.11secure-execution mode어떤 바이너리를 실행하면, dynamic linker(ld.so)는 getauxval()를 이용해 auxiliary vector인 `` AT_SECURE`` 값을 가져와 ``c 0``인지 확인하고 ``c 0``이 아니면 secure-execution mode로 실행한다.2017/09/02 - [System/Exploit] - Return to VDSO using ELF Auxiliary Vectors leck 다음과 같은 경우, ``c AT_SECURE != 0``이 된다.``c eUID != rUID`` 또는 ``c eGID != rGID`` 인 경우 ( => setUID나 setGID가 걸려있는 경우 )non-root UID process가 capability를 ..
ltrace & strace
ltrace & strace
2017.01.07ltracelibrary trace. userspace API call의 흐름을 볼 수 있다.```bash-S -- Display system calls as well as library calls``` strace ( man )system call trace. system call의 흐름을 볼 수 있다.출력되는 binary값이 16진수가 아니라 8진수 이므로 주의!```bash-i -- print instruction pointer at time of syscall-f -- follow forks, -ff -- with output into separate files-e func -c | -C -- count time, calls, and errors for each syscall and report ..
/proc/<pid>/maps
/proc/<pid>/maps
2017.01.04proc filesystemman procprocfs ( proc filesystem )은 유닉스 기반 OS에서 프로세스에 대한 정보나, 시스템 정보를 파일 형식으로 제공하는 것을 말한다. `` /proc/``의 파일들을 확인해보면 크기가 0인데, 이는 procfs 파일은 내부 자료구조에 접근하기 위한 인터페이스에 가깝기 때문이다.procfs 파일을 출력하려는 순간, procfs driver가 system call을 수행하여 procfs 파일에 대한 결과값으로 출력할 내용을 생성하게 되고, 이를 procfs 파일을 통해 출력하는 것이다.때문에 출력되는 procfs의 내용은 디스크에 존재하지도 않고, 메모리에 적재되어 있는 것도 아니며 크기가 얼마가 될지는 런타임에 결정되기 때문에 알 수 없어 0으로 잡힌..
[Ubuntu] 초기 설정 / 업데이트
[Ubuntu] 초기 설정 / 업데이트
2016.12.25https://subicura.com/2017/11/22/mac-os-development-environment-setup.html[OS/LINUX & UNIX] - [*-nix] apt* family 및 OS update & upgrade[OS/LINUX & UNIX] - Java 관련 (JDK, 설치, ...)[OS/LINUX & UNIX] - SSH Server 설정 한글 설정 18.04 LTS메뉴-검색 - Language support 들어가서 `` Install/Remove Language`` 클릭하고 Korean 설치.재부팅메뉴-검색 - input sources 들어가서 Korean (Hangul) 추가. ( 꼭 이거여야 함. 그냥 Korean이나 Korean 101이런거 말고.) 원래 우분투..
ptrace
ptrace
2016.12.25ptrace ( process trace )```c#include long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);```ptrace를 호출하는 tracer 프로세스가 타겟 프로세스인 tracee 프로세스를 컨트롤할 수 있도록 하는 함수.gdb에서도 내부적으로는 ptrace를 사용한다.windows에서는 ATTACH에 ``c DebugActiveProcess()``를 사용하고, 아직 실행되지 않은 프로그램을 디버거로 실행할 때는 ``c CreateProcess()``에서 `` dwCreationFlags`` 속성에 `` DEBUG_PROCESS``를 지정해서 실행한다.그러나 Unix-based 에서는 둘 다 ``c ..
John the ripper
John the ripper
2016.12.25이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
로컬 접근으로 SAM & SYSTEM 획득 및 Windows password crack
로컬 접근으로 SAM & SYSTEM 획득 및 Windows password crack
2016.12.25Windows 설치 시 SYSTEM권한으로 실행되기 때문에 파일 시스템에 접근만 가능하다면 모든 파일을 얻어낼 수 있다.따라서 대상 시스템에 로컬 접근이 가능하다면 부팅디스크와 외부저장매체를 이용해 windows의 SAM, SYSTEM 파일을 얻어내서 크랙할 수 있다.사실 로컬 접근이 가능하면 하드를 아예 가져가서 분석해도 되는거겠지만, windows 패스워드를 잊었거나 특정 파일만 얻어내고 싶을 때 유용하게 사용할 수 있다.ophcrack이라고 windows password crack이 아예 LiveCD로 나온 것도 있기는 한데, 이도 rainbow table 기반이라 결국 table에서 매치되는게 없으면 brute force로 넘어가게 돼서 처음에 매치 안되면 굉장히 느리다.반면 직접 SAM을 얻어내..
[excp] 읽기 권한 없는 파일 복사하기
[excp] 읽기 권한 없는 파일 복사하기
2016.12.21쓰기 권한으로 파일 복사하기원래 읽기 권한이 있어야 파일 복사가 가능하도록 되어있지만, 실행 권한이 있는 경우 읽기 권한이 없어도 ptrace를 이용해 파일을 복사하여 내 소유 파일로 얻어낼 수 있다.파일을 실행하게 되면 해당 파일이 메모리에 적재된다는 점을 이용하여, ptrace로 프로세스의 가상메모리 공간 중 실행한 파일이 매핑된 공간에 접근해서 데이터를 추출해 파일에 쓴다.이렇게 얻어낸 파일은 원본 파일과 동일하게 동작하며, 얻어낸 파일에 gdb, strings 등을 사용할 수 있기 때문에 유용하게 활용할 수 있다.* 얻어낸 파일이 원본 파일과 완전히 동일하지는 않다.file 명령어 등을 이용해 속성을 확인해보면 손상된 것으로(stripped) 나온다. readelf : 섹션 안나옴, objdump..