목록Run to us with Sh4n3e (77)
Sh4n3e
가. 레지스트리 소개 윈도우는 레지스트리에 운영체제 및 응용 프로그램 운영에 필요한 정보를 저장 및 관리한다. 레지스트리에는 부팅 과정에서 사용되는 정보뿐만 아니라 로그인, 서비스 실행, 응용 프로그램 실행, 사용자 실행에 이르기 까지 윈도우 시스템에서 수행되는 많은 활동에 관여한다. 레지스트리는 마치 파일 시스템의 구성요소와 유사하다. 파일 시스템에서 모든 파일(File)은 폴더(Folder)내에 위치하는 것과 유사하게 레지스트리에서 모든 값(Value)은 키 내에 위치하며, 키들은 계층형 구조로 이뤄져 있다. 레지스트리는 실제 디스크 상에서 "하이브(Hive)"로 불리는 분리된 파일로 존재하며 윈도우 부팅과정에서 메모리에 적재되어 관리된다. 하이브(Hive) 파일은 레지스트리 정보를 디스크에 저장한 ..
apt는 다양한 패키지를 설치할 수 있는 유용한 툴이다. 하지만 우리는 정확한 패키지 명을 몰라 종종 고생할 때가 있다. 따라서 패키지 명을 검색할 수 있는 방법에 대해서 알아보려 한다. root@kali:~# apt-cache seacrh [Package_Name] 위의 명령어를 입력하면 우리가 원하는 정확한 패키지 명을 검색할 수 있다. 만약 우리가 커널과 관련된 패키지를 검색하고 싶다면 아래와 같은 명령어를 이용하여 검색하면 된다. root@kali:~# apt-cache search kernel 하지만 너무 많아 우리가 원하는 녀석이 어디있는지 한번 더 걸러낼 필요가 있다. 우리는 커널 헤더를 찾고싶다. 따라서 아래와 같은 명령어를 이용하면 검색이 더 용이하다. root@kali:~# apt-ca..
칼리리눅스 설정시 최초 apt-get upgrade && apt-get update를 해주게 된다. 하지만 버전에 맞는 sources.list가 존재하지 않는다면 정상적으로 동작하지 않는다. 정상적으로 동작하지 않는다는 것은 아래와 같은 에러를 출력하기 때문이다. E : Some index files failed to download. They have been ignored, or old ones used instead. 아래는 각 버전별 필요한 sources.list를 정리해놓은 것이다. 해당 사항을 참고하여 적절한 repository를 넣어줌으로써 해당 문제를 해결할 수 있다. sources.list의 위치는 /etc/apt/sources.list에 존재한다. For Kali Linux 1.x us..
윈도우 시스템의 경우 2000, XP, 2003, VISTA, 2008, 7 등의 버전 별로 휘발성 데이터 수집에 활용할 수 있는 시스템 도구 및 API와 비휘발성 데이터가 저장되는 위치 또는 형태가 다를 수 있다. 따라서 윈도우 시스템을 조사할 경우 이러한 특성을 고려하여 진행해야 한다. 가. 시스템 정보 1) 시스템 시간 정보 시스템 정보를 수집할 때, 가장 먼저 시스템 시간이 조사 시간과 일치하는지를 확인해야 한다. 이는 시스템에 저장되어 있는 시간 정보를 정확히 파악하는데 도움을 주며, 시스템에서 수행한 작업들의 타임라인을 밝히는데 이용된다. 아래는 윈도우에서 날짜와 시간을 함께 확인할 수 있게 해주는 명령어 이다. CMD> date /t & time /t 휴대전화의 시간과 같은 정확한 시간과 시..
해당 문제는 X일에 각각의 붕어빵 기계가 작동된 날로부터의 Score를 계산하는 문제였다. 해당 문제는 파라메트릭 탐색(Parametric Search)라는 생소한 탐색을 사용함으로써 접근이 쉽지 않았다. 해당코드는 아래에 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93..
파라메트릭 탐색(Parametric Search) 파라메트릭 탐색이란, 이분 탐색(Binary Search)과 비슷한 부류의 탐색이다. 이분 탐색의 경우 어떤 정답을 찾기 위해 탐색을 수행한다. 만약 원하는 정답이 나오지 않는 다면 검색 결과는 없음으로 나오게 된다. 해당 이분 탐색의 예제는 아래와 같다. Address 0 1 2 3 4 5 6 7 Value 1 4 7 24 32 33 42 52 정렬(Sort)되어 있는 상태인 배열에서 우리는 7이라는 값을 찾고 싶다 라고 가정하자. 해당 배열에서의 left주소는 0, right주소는 7이 된다. 해당 값의 mid = (left+right)/2 = 7/2 = 3 이 된다. 그럼 최초에 Martrix[mid]의 값과 우리가 찾고자하는 7과 비교한다. 해당 ..
해당 문제는 Greedy+BFS+Zerosum Problem의 조합을 통해 답을 추출해내는 문제이다. 해당 문제는 농도를 계산하는 문제로 어떻게 효율적으로 제로섬을 만들어낼 것인가에서 고민은 출발하였다. 왜냐하면 입력값의 범위가 20만개였기 때문이었다. 하지만, 입력값의 범위를 0~1000, 즉 1001개로 중복제거를 통해 줄일 수 있었고, BFS를 돌리기 위해 필요한 Cut the Branch 작업이 필요했다. 이 부분은 resultMap라는 1차원 배열을 통해 쉽게 해결할 수 있었다. 다음 아래의 소스는 문제를 해결한 소스코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35..
Debugger 단축키 참조 : http://mer-bleu.tistory.com/7
RTL(Return to Library)? RTL은 Return to Library의 약자로 Stack의 RET영역에 라이브러리 함수를 이용하여 쉘코드의 기능을 수행하는 공격기법이다. RTL의 등장 배경은 기존 BOF공격방법인 Stack영역에서의 코드실행을 막는 보호기법으로 인하여 등장하게 되었다. Stack영역에 쉘코드를 넣고 실행할 수 없게 되니, 또다른 방법을 해커들은 연구하게 된 것이고 RTL은 그 연구의 산출물이라고 할 수 있겠다. RTL은 기존의 BOF 공격과 절차는 비슷하나, 마지막 쉘코드 대신 라이브러리를 이용한다는 점이 다르다. 아래의 그림은 Stack을 나타낸 모습이며, Fuction Area의 최상단은 $esp이며, $sfp의 위의 4byte의 주소는 $ebp가 가리키고 있다. 현재 ..
자주 사용하는 명령어 메모리 참조 : x/숫자x 0x주소, x/숫자x $레지스터 레지스터 참조 : info r, info registers 현재 위치 표시 : disp/i $pc *인텔 형식의 어셈블러로 보이게 하는 방법 : set disassembly-flavor intel ======= 참고사이트 http://visualgdb.com/gdbreference/commands/ ======= 1. 우선 컴파일 시에 디버깅 정보를 담아야 한다. gcc -g -o [프로그램명] [소스파일명] 디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다. 2. 실행방법 gdb [프로그램명] gdb [프로그램명] [core파일명] gdb [프로그램명] [실행중인프로세스pid] 3. 종료방법 q..