-
vsyscall을 이용한 Exploit공부정리 2019. 6. 16. 01:55
리눅스 ELF 바이너리에는 고정적인 주소를 가진 vsyscall영역이 있다. [ vsyscall ]해당 영역은 ASLR, PIE와 같은 주소랜덤화 기법이 적용되어 있어도 항상 고정적인 주소를 갖는다. 또한, 실행권한(x)이 부여되어 있어 필요한 가젯을 가져와서 사용할 수 있다.[ vsyscall ]vsyscall영역은 syscall의 Overhead를 줄이기 위해 User Space에 할당된 커널 영역이다. syscall을 사용하면 User mode에서 Kernel mode로 Context Switching이 발생하게 된다.User의 Context는 따로 저장해두고 Kernel의 Context를 불러오고,Kernel에서 모든 작업이 종료되면, 저장해뒀던 User Context를 불러오는 작업을 하게된다...
-
Notepad++_v7.6.3 Command InjectionSystem/Windows 2019. 6. 13. 23:37
얼마전에 Windows 기본 프로그램 메모장에서 RCE가 발견됐다는 기사를 본 적이 있었다. 보자마자 드는 생각이 '가능해?'라는 생각이 들었는데, Notepad++ 에서도 취약점이 발견됐다고 한다. 이것도 마찬가지로 처음에 드는 생각이 '가능한가?' 였다.나는 Notepad++를 써본 적이 없어서 기본 메모장처럼 글만 쓰는 아주 베이직한 프로그램일 줄 알았다. 근데 공격벡터가 아예 없는건 아니였다.Search Engine을 설정해서 구글이나 야후등의 검색 서비스 기능도 있었고,각종 플러그인으로 추가적인 기능들을 프로그램에서 사용할 수 있었다. 이번에 발견된 취약점 재현 절차는 다음과 같으며, v7.6.3이하의 버전에서만 유효하다.1. [설정] - [환경 설정] - [Search Engine]에서 사용자..
-
GDB 소스코드 보면서 디버깅 하기System/Reversing 2019. 6. 8. 17:12
오픈소스인 프로그램을 직접 컴파일하고 GDB로 분석할 때 소스코드를 보면서 디버깅할 수 있다.우선 gef라는 GDB 플러그인을 설치해야 한다. [ gef Document ]https://gef.readthedocs.io/en/master/# via the install script wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh # manually wget -O ~/.gdbinit-gef.py -q https://github.com/hugsy/gef/raw/master/gef.py echo source ~/.gdbinit-gef.py >> ~/.gdbinit위 명령어를 차례대로 입력하고, gdb를 실행하면 아래와 같이 기본 ..
-
Android Hacker's Handbook_1장 [정리 및 번역]Mobile/Android 2019. 4. 6. 18:06
해당 번역글은 개인 공부를 위해 번역한 글로써, 다소 틀린 표현들이 있을 수 있으니 참고할 때 유의해주시길 바랍니다. 원문은 https://www.pdfdrive.com/android-hackers-handbookpdf-e39599871.html 여기에서 받으실 수 있습니다. - Google Nexus Nexus는 안드로이드 개발자를 위한 오픈 플랫폼 역할을 한다. 사용자 정의 빌드를 허용하기 때문에 사용자에 맞게 원하는 OS를 로드해서 자유롭게 사용할 수 있다. - CPU 안드로이드는 다수의 아키텍처를 지원하는 리눅스 커널을 기반으로 한다. 여러 아키텍처들 중 저전력이 장점인 'ARM'이 가장 널리 사용되는 아키텍처가 되었다. 'ARM'은 ARM11, Cortex-A8, Cortex-A9, 및 Cort..
-
Android Hacker's Handbook [번역]Mobile/Android 2019. 4. 6. 16:45
해당 번역글은 개인 공부를 위해 번역한 글로써, 다소 틀린 표현들이 있을 수 있으니 참고할 때 유의해주시길 바랍니다. 원문은 https://www.pdfdrive.com/android-hackers-handbookpdf-e39599871.html 여기에서 받으실 수 있습니다. - 1장. Android 모바일 장치 주변의 시스템(ECO System)들을 알아본다. [1장 정리] Android에 대한 소프트웨어의 구성, Public Circulation, 주요 업체 등의 역사적인 사실에 대해 알아본 후, 고차원의 보안기법들과 Android보안 연구에 대해 토론하고 결론을 짓도록 한다. - 2장. Android 운영 체제 기본 사항을 검토한다. [2장 정리] Android 기기를 유지하는데 사용되는 핵심 보안..
-
gdb로 fork된 자식프로세스 디버깅하기공부정리 2019. 4. 6. 13:02
CTF를 풀다보면 Server바이너리에서 fork( )를 사용하는 경우가 많다. 이때 gdb로 바이너리를 잡으면 자식프로세스가 아닌 부모프로세스를 따라가게 된다. 우리가 분석해야 하는건 자식프로세스 이기 때문에, ' set follow-fork-mode child '를 사용하면 디버거가 자식프로세스를 따라가면서 디버깅할 수 있게 된다. [ set follow-fork-mode child ] Angrydoraemon은 Server바이너리로 fork( )로 자식프로세스를 생성하여 Client접속을 받는다. gdb에서 ' set follow-fork-mode child '를 입력한 뒤, run으로 바이너리를 실행시키면 접속 대기 상태가 된다. [ fork( ) 생성 ] nc로 서버에 접속하면 디버거에서 접속을..
-
[ Rookiss ] Ascii_easySystem/Pwnable.kr 2019. 4. 5. 18:45
'Printable-ascii-only' Exploit payload 출력가능한 ASCII문자범위(0x21~0x7F)내에서 Payload를 작성해야 한다. [ Ascii_easy@pwnable.kr ] ascii_easy : 문제 바이너리 ascii_easy.c : 바이너리 소스파일 libc-2.15.so : 바이너리에 로드되는 라이브러리 intended_solution.txt : 문제를 풀면 확인할 수 있는 출제자가 의도한 풀이방법 [ Ascii_easy.c ] #include #include #include #include #include #include #define BASE ((void*)0x5555e000) int is_ascii(int c){ if(c>=0x20 && c
-
[ Rookiss ] AllocaSystem/Pwnable.kr 2019. 3. 24. 17:58
" Buffer Overflow를 예방하는 법에 대해서 알려주겠다. "고 한다. [ Alloca.c ]12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include #include #include void callme(){ system("/bin/sh");} void clear_newlines(){ int c; do{ c = getchar(); }while (c != '\n' && c != EOF);} int g_canary;int check_canary(int canary){ int result = cana..