[Cryptography] Textbook-CBC
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/175 Textbook-CBCDescription 드림이가 AES 플래그 서버를 운영하고 있어요. 무엇이든 암호화하고 복호화 할 수 있다던데... 플래그를 획득해주세요! References https://dreamhack.io/lecture/courses/74dreamhack.io Code Analysisfrom Crypto.Util.Padding import pad, unpadfrom random import choices, randintfrom Crypto.Cipher import AESBLOCK_SIZE = 16flag = open("flag", "rb").read()key = bytes(randint(0, 255) f..
[Reversing] Reversing Basic Challenge #1
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/15 rev-basic-1Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io #0과 문제 자체는 같은데, 약간 다른 방식으로 풀어봤다처음 봤을 때 잘못건들여서 main을 못 찾아서, 아예 Correct를 중심으로 찾아봄 Reversing* Correct와 같은 문자열들은 어셈블리로 변환된다고 해서 바뀌지 않기 때문에 Sequence of Byte(Alt+B)로 검색해서 찾음Correct를 볼 수 있다crtl + x로 이를 ..
[Reversing] Reversing Basic Challenge #0
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/14 rev-basic-0Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io Code Analysis입력해서 correct가 뜨는 문자열을 찾으면 된다ReversingIDA로 메인 함수를 보면int __fastcall main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, si..
[Pwnable] bof
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/1111 bofDescription Buffer overflow is one of the basics of pwnable 🐱 The path of the flag file is /home/bof/flag.dreamhack.io  문제 파일을 받으면이렇게 파일이 존재한다.딱히 소스코드가 없기 때문에 디버거로 분석해야할 것으로 보임 실행파일이 bof일 것으로 추정되기 때문에, 리눅스에서 실행 권한 변경해서 bof를 실행해줬다.실행 파일 찾기도커 파일을 열어보면 해당 빌드 정보가 들어가 있다.FROM ubuntu:22.04@sha256:2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6..
gdb를 pwntools와 디버깅하기
·
Hacking/Pwnable
pwntools의 입력 값을 해당 프로세스 (혹은 서버)에 준 채로 디버깅을 하고 싶을 때 사용한다작성한 payload가 이상해서 사용해보려고 한다 gdb (process 이름) -p (pwntools로 작성한 코드의 pid) 이런식으로 작성해도 됨 나는 안됨 gdb attach   payload를 보내기 전에 gdb.attech(process 변수 이름)코드를 추가해준다  현재 오류를 살펴보면zombie 프로세스를 연결했다는 점이 가장 중요하다 즉, 해당 프로세스가 gdb랑 연결된 후에 그냥 종료되었기 때문이라는 것그래서 pause() 명령어를 추가해주었다 gdb.attach(p)pause() 이렇게 하면이렇게 하면 디버거가 정상적으로 붙어 payload를 확인할 수 있다. 디버거 무한로딩이상하게 c를..
[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..
클라이언트, 서버 간 데이터 통신
·
Web
Definition | 정의 - 클라이언트단, 서버단클라이언트단서버단브라우저 크롬,사파리,파이어폭스html/js/cssdom엔진/js엔진view react 등의 프레임워크 존재웹서버 / 웹애플리케이션 서버웹서버 : 아파치 ngniz웹애플리케이션 서버 : tomcat, jeus, web logic데이터베이스 : mysql, oracle, mssql더보기[ 해킹 관점에서 ]모든 입력값과 행위에 대해서 취약점이 발생할 수 있음 즉, 브라우저, 웹서버, 데이터베이스에서 정보를 주고받고, 처리하는 과정 모두 취약점으로 볼 수 있음 웹 요청 & 응답[ Request ] 클라이언트 → 서버[Request]POST /info HTTP/1.1Host: x.comContent-Type: application/x-www-f..
Hardware Architecture - Single Processor
·
CS/Computer Architecture
Von Neumann Architecture 폰 노이만 구조거의 모든 컴퓨터의 기본이 되는 구조Idea연산제어저장세 가지의 핵심 기능이 필요함 연산 & 제어 → CPU저장 → memory장치 간 데이터 및 신호 교환 → bus CPU 중앙 처리 장치ALU (산술 논리 장치) : 산술 및 논리 연산을 실행함Control Unit : CPU를 제어하는 제어장치Register (레지스터) : CPU에 필요한 데이터를 저장함 - Program counter 등이 포함되어 있음등으로 이루어짐 Memory 기억장치주기억장치 (Ram) : 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용보조기억장치 (HDD, SSD) : 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용 Bus ..