[IDA Pro] 사용법 정리
·
Hacking/Window
IDA란?디스어셈블러의 일종으로 바이너리 파일(exe)를 어셈블리 파일로 바꾸어주는 툴ida 사용하면서 자주 쓰는 기능 & 유용한 기능들에 대해서 설명해보려고 함!현재 버전은 IDA 8.3Pseudo Code & AssemblyGraph view둘 다 어셈블리어를 보여주는 viewspace로 view 버전을 바꿔줄 수 있음 Pseudo Codeassembly view에서 pseudo code로 보고싶다면 tap으로 볼 수 있음 SynchronizeAssembly와 Pseudo Code가 각각 어떤 부분을 가리키는지 눈으로 스페이스와 탭을 번갈아가며 확인하기는 쉽지 않아서 synchronize를 해서 보면 Pseudo code가 해당 부분에 어떤 어셈블리와 대응되는지 볼 수 있다우클릭 → Synchroni..
MuseScore DoS Vulnerability Write Up
·
Hacking/Window
ZDI에서 거부당해서 그냥 깃허브 이슈에 올렸다Code Analysisvoid Capella::read(QFile* fp){ f = fp; curPos = 0; char signature[9]; read(signature, 8); signature[8] = 0; if (memcmp(signature, "cap3-v:", 7) != 0) { throw Capella::Error::BAD_SIG; } // LOGD("read Capella file signature ", signature); // TODO: test for signature[7] = a-z author = readString(); //issue keyword..
패킷 변조
·
Hacking/Web Hacking
서버에서 클라이언트로 전송되는 패킷 변조* 웹 사이트가 어떤 언어로 개발이 되었던지 웹 프록시를 통해서 전송되는 문서의 형태는 HTML프록시란?서버와 클라이언트 단에서 주고받는 Request, Response를 볼 수 있는 도구다양한 프록시 도구들이 존재함 그 중 Fiddler는 여러가지 버전이 존재하는데 그 중에서도 Fiddler Classic을 사용할 것 (Fiddler Classic은 윈도우에서만 사용 가능) Fiddler Classic의 구성패킷컴퓨터에서 서버로 나가는 모든 요청을 캡처해 놓은 것 # 번호 : 컴퓨터에서 서버로 나간 요청의 순서Result : HTTP status - 200이 정상 처리된 것Body : Response의 Content Length를 파싱해서 읽어온 패킷 정보 (In..
[ Domato ] 사용법
·
Hacking/Window
https://github.com/googleprojectzero/domato GitHub - googleprojectzero/domato: DOM fuzzerDOM fuzzer. Contribute to googleprojectzero/domato development by creating an account on GitHub.github.com 문법 퍼징문맥 자유 문법(Context-Free Grammar, CFG)을 사용하여 테스트 데이터를 자동으로 생성하고, 이를 통해 소프트웨어의 결함을 찾아내는 기법 대상으로 하는 것domainprograminputwhat needs to be tested문법 퍼징의 과정Grammer Definitionspecify a languageExpansion rule ..
PE(Portable Executable) file format
·
Hacking/Window
Definition | 정의윈도우 운영체제에서 사용되는 실행 파일 형식을 의미함 ex) exe 파일PE format : 윈도우 로더가 실행 가능한 코더를 관리하는데 필요한 정보를 캡슐화한 데이터 구조체Portable Executable File Format : 옮겨지더라도 파일이 실행가능하도록 만들어진 포맷→ 프로그램을 빌드할 때 파일 실행시 필요한 정보들을 PE헤더에 명시해주곤 함 종류실행계열 : exe, scr라이브러리 계열 : DLL, OCX, CPL, DRV드라이버 계열 : SYS, VSD오브젝트 계열 : OBJ PE파일의 구조 Dos Headere_magic값 : 해당 파일이 PE 파일인지 아닌지 확인해주는 영역 →시작 부분이 4D 5A여야함--> Dos Signature 값이 존재함[IMAGE..
[Fuzzing] WinAFL을 이용한 개념정리
·
Hacking/Window
Definition | 정의Fuzz testing or fuzzing is an automated software testing method that injects invalid, malformed, or unexpected inputs into a system to reveal software defects and vulnerabilities. A fuzzing tool injects these inputs into the system and then monitors for exceptions such as crashes or information leakage. Put more simply, fuzzing introduces unexpected inputs into a system and watche..
[Pwnable] basic_exploitation_001
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/3 basic_exploitation_001Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요. "flag" 파일의 내용dreamhack.io Environment32비트 바이너리 파일리틀 엔디안stack canary 없음 - buffer overflow 공격 가능NX bit 사용no pie - 주소값 고정Code Analysis#include #include #include #include void alarm_handler() { puts("TIME OUT"); ..
[Cryptography] Textbook-RSA
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/131 Textbook-RSADescription 드림이가 비밀 플래그를 가지고 있는 RSA 서버를 운영하고 있습니다. 서버를 공격해 플래그를 탈취해주세요! 플래그 형식은 DH{...} 입니다. References https://dreamhack.io/lecture/courses/76dreamhack.ioCode AnalysisRSA : RSA 암호화 및 복호화 처리class RSA(object): def __init__(self): self.p = getStrongPrime(512) self.q = getStrongPrime(512) self.N = self.p * self.q ..
[Cryptography] Textbook-DH
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/120 Textbook-DHDescription Alice와 Bob의 통신을 중간자 드림이가 엿보고 있습니다. 둘의 키교환 과정을 공격해 플래그를 획득해주세요 ! 플래그 형식은 DH{...} 입니다. References https://dreamhack.io/lecture/courses/75dreamhack.ioCode Analysis라이브러리from Crypto.Util.number import getPrime #소수 반환from Crypto.Util.Padding import pad, unpad #패딩from Crypto.Cipher import AES # AESimport hashlib #해시 함수 제공import ran..
[블록 암호] 운영모드
·
Hacking/Cryptography
다양한 크기의 데이터를 처리할 수 있도록 고안된 블록 암호의 사용 방법Padding (패딩)평문에 데이터를 붙여서 평문의 크기가 블록 크기의 배수가 되도록 만드는 과정 Bit Padding (비트 패딩)마지막 블록에서 평문이 채우지 못하는 비트 중 최상위 비트를 1로 설정하고 나머지는 모두 0으로 채우는 패딩 기법수신자 : 평문의 마지막 비트부터 처음으로 값이 1인 비트가 나올때까지를 패딩으로 인식할 수 있음 > 제거하여 평문 복구 * 평문의 크기가블록 크기의 배수인 경우 : 수신자의 메세지 일부를 패딩으로 오인하게 되는 문제 발생→ 패딩으로 한 블록을 추가함 ex) 0101 1010 1000 0000Byte Padding (바이트 패딩) : ANSI X.923블록의 남는 바이트를 일반적으로 0으로 채우..