old 60

Suninatas / System 27 (바이너리 속 어셈블리어)

# System 27 - Can you speak x86거의 답을 보고 푼 문제이다. 어떻게 이걸 유추해 내었는지 아직 잘 모르겠다.문제는 의미가 없고 Can you speak x86이 힌트란다. 아무래도 어셈블리어를 할 줄 아는지 물어보는 듯 하다. 제공되는 파일은 다음과 같은 텍스트 파일이다. 긴 영문이 있지만 굳이 해석할 필요가 없다. 문자열에는 의미가 없기 때문이 메시지를 Hex Editor를 이용하여 열어 hex값을 복사하고 그 값을 ollydbg에 올려 어셈블리코드 그대로 실행을 하면 된다 위처럼 올리디버거에 아무 프로그램이나 올려 놓고 시작지점부터 Binary Edit를 이용하여 붙여넣으면 된다.대부분의 어셈블리 코드는 점프문으로 분기를 하고 신경써야할 부분은 INC, DEC ESP와 INC..

old 2016.07.21

Pwnable.kr / uaf

# 1. UAF란? UAF는 Use After Free의 약자로 malloc등으로 동적할당한 데이터 영역(Heap)을 free를 이용, 해제한 뒤에 사용을 할 경우 생기는 에러이다. 그림에서 처럼 Allocated, 할당되어 있는 데이터를 Use, 사용하면 문제가 없지만, 해당 영역을 Free를 한 후에 Use를 하면 Terminal이 된다는 의미이다. # 2. Pwnable.kr uaf ● UAF 확인 문제의 소스는 아래와 같다. #include #include #include #include #include using namespace std; class Human{ private: virtual void give_shell(){ system("/bin/sh"); } protected: int age..

old 2016.07.21

포포포포렌식 #3

#1. 메모리 분석 #1-1. 운영체제 버전?보통 침해사고가 터졌을 때 따로 해당 pc의 ip주소와 운영체제 버전 정보 등을 따로 가져오는 것이 일반적이다.하지만 이 정보를 얻지 못한 경우, 메모리 덤프에서도 운영체제의 버전 획득이 가능하다.inp : volatility -f 메모리덤프 imageinfoinp : volatility -f 메모리덤프 kdbgscanvolatility의 imageinfo, kdbgscan 옵션을 이용하여 운영체제 정보를 획득할 수 있다.Win7SP0x86, Win7SP1x86을 확인할 수 있다. #1-2. 메모리 사본 확보 시간(한국 시간)은?지금까지는 파일의 변경 시간을 가지고 판단하였다. 보면 마지막 수정 시간을 확인할 수 있다. 이는 volatility의 프로세스 정보..

old 2016.07.12

System #1

#1. GOT, PLT? PLT(Procedure Linkage Talbe)Procedure의 실제 호출 코드가 저장되어 있는 테이블. GOT를 참조하여 실제 함수의 주소 값을 호출한다. GOT(Global Offset Table)실제 함수의 주소를 가지고 있는 테이블. 처음부터 테이블에 실제 함수주소를 가지고 있지 않고 내부 동작을 통해 테이블에 실제 함수 주소가 삽입되는 동작을 수행한다. http://training.nshc.net:8080/KOR/Document/[KOR-121205]_Linux_Format_String.pdf #2. Study_2 풀이 ● 왜 -1을 넣으면 뚫리는가? 취약점이 존재하는 vuln 함수 소스이다.보면 get_n 함수로 (&nptr, 4u)를 매개변수로 받는다. 소스는 ..

old 2016.07.08

포포포포렌식 #3

#1. 메모리 분석 #1-1. 운영체제 버전?보통 침해사고가 터졌을 때 따로 해당 pc의 ip주소와 운영체제 버전 정보 등을 따로 가져오는 것이 일반적이다.하지만 이 정보를 얻지 못한 경우, 메모리 덤프에서도 운영체제의 버전 획득이 가능하다.inp : volatility -f 메모리덤프 imageinfoinp : volatility -f 메모리덤프 kdbgscanvolatility의 imageinfo, kdbgscan 옵션을 이용하여 운영체제 정보를 획득할 수 있다.Win7SP0x86, Win7SP1x86을 확인할 수 있다. #1-2. 메모리 사본 확보 시간(한국 시간)은?지금까지는 파일의 변경 시간을 가지고 판단하였다. 보면 마지막 수정 시간을 확인할 수 있다. 하지만 마지막 수정 시간 즉, 덤프가 끝..

old 2016.07.05

Suninatas / Forensic 39 (BR 복구)

Suninatas 39문제는 위와 같다. 문제를 읽었을 때 먼저 생각한 것은 다음 부분이다. .... 신입 직원에게 맡겼으나 Hex Editor로 여기 저기 둘러보다 실수로 특정 부분이 손상되고 이미지가 인식되지 않는다.-> HexEditor로 직접 바이너리값을 건드려 오류가 났다면 다음 방법으로 복구할 수 있다.1. WinHex와 같은 툴을 이용하여 데이터를 직접 카빙한다. -> 1기가에 다르는 USB이미지이므로 너무 오래 걸린다.2. FTK등과 같은 툴로 이미지 인식이 가능한지 확인해 본다. -> 문제에서 제시된 이미지는 인식이 불가능 하였다.3. 직접 HexEditor를 이용하여 USB이미지의 훼손된 부분을 복구한다. 이 문제의 경우 3번 방법을 이용하였다. FTK에도 인식이 되지 않는다는 것은 B..

old 2016.06.27

포포포포렌식 #2

# IOC?IOC는 Indicator Of Compromis의 약자로 침해지표는 침해 상황을 식별할 수 있는 포렌식 아티팩트라고 한다. 일종의 IDS와 같다고 생각된다.특정 침해 상황을 미리 지정해 놓고 그에 상응하는 침해 결과가 나오게 되면 미리 작성된 침해지표를 통해 탐지가 가능한 것이다.보면 다양한 지표가 있다. 문제에서 예시로 나온 hosts 파일 변조의 경우 파일 변조를 위해 접근한 경로를 파악하는 부분에서 '침해 유입 지표', 이후 변조된 hosts파일의 경로로 링크되는 '침해 실행 지표' 등을 생각 해 볼 수 있을 것이다. # IOCe 침해지표 구성IOCe를 이용하여 침해지표를 구성하는 방법이다. 만들려는 침해지표는 Hosts 파일의 변조 유무를 파악하는 것이다.구성 하고자 하는 가정은 다음..

old 2016.06.23

[고전암호] PlayFair 암호

평문 2자리씩 끊기-> 단, 연속된 문자열이 동일한 경우에는 중간에 임의의 값을 삽입한다.ex) message -> me sx sa ge 암호화 3가지 규칙1. 같은 Column에 존재할 경우-> 하나씩 아래로 내려 암호화2. 같은 Row에 존재할 경우-> 하나씩 오른쪽으로 밀어서 암호화3. 위 두가지에 해당하지 않는 경우-> 각 꼭지점을 기준으로 왼쪽, 오른쪽 끝의 문자열로 암호화 ex) key : crypt c r y p t a b d e f g h i k l m n o q s u v w x z plain text : hello split 2 words : he lx lo b d e h i k h -> ke -> b l m n q u v w x l -> qx -> u i k l o q s l -> i..

old 2016.06.21

포포포포렌식

#0. 조사1. 오프라인상태의 윈도우에서 Timezone을 확인하는 방법에는 무엇이 있고, NTFS와 FAT32 파일시스템에서 파일의 시간정보를 기록하는 방식에는 어떤 차이가 있는가? 윈도우 오프라인으로 디스크의 로컬 시간을 확인하는 방법은 레지스트리를 열어보는 방법이 있다.경로는 HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 인데직접 레지스트리를 열 순 없으므로 SYSTEM하이브 파일이 존재하는 위치를 찾아가야 한다.C:\Windows\System32\Config 하위에 레지스트리 하이브 파일이 존재하며 여기에 SYSTEM도 존재한다.[ OSForensic으로 SYSTEM Registery파일 확인 ] FAT의 파일 시간정보 기록은 다음과 같다...

old 2016.05.26

TUCTF16 - Crypto

TU CTFCrypto 10 - 1번Crypto 문제는 연속된 문제nc로 146.148.102.236 24069로 연결을 하면 문제가 나온다.암호문에 해당하는 평문을 전송하면 되는데 한 번만 인증하면 되는 것이 아니라 50번을 해야 FLAG를 얻을 수 있다.보면 처음에 Welcome ~ 이 나오고 level 1, the Bookstore 메시지가 뜬다. asdf는 내가 기입한 문자이고 asdf를 입력하는 그에 해당하는 모스부호를 준다.그리고 What is ~ 이후 모스부호를 주는데 이 모스부호에 해당하는 평문값을 넘겨주면 해당 라운드는 클리어이다.예를 들어 -.. --- -. - ..-. --- .-. --. . - .- .. .-. -.-- -. 를 모스부호로 변환하면 DONT FORGET AIRYN ..

old 2016.05.16