목록Activity (19)
HW_chick hacker
본 리버싱 문제는 x64dbg를 이용하여 풀었습니다.ollydbg를 사용해 봤을 때 ASCII 코드를 확인 하는 것이 너무 어려워 보기 쉽게 나오는 x64dbg를 이용하였습니다. 리버싱은 거의 처음이라 어떻게 접근해야할지 몰라서 많이 해맸지만 일단 exe파일이 어떻게 실행이 되는지 파악을 먼저 해보겠습니다.먼저 툴에 대한 사용법을 익혀야 합니다.툴 사용법은 구글링을 통해 확인을 하였고 디버거 사용법에 대한 것은 개인적으로 아래 URL이 정리가 잘되어 있고 사용하기 편리했습니다.https://dhhd-goldmilk777.tistory.com/198 x64dbg사용법2-2 디버거사용법(X64dbg) (1) 프로그램 코드 어셈블리어 와 명령어를 나타내고 있는 코드 부분 (2) 레지스터 CPU의 레지스터의 값..
이번 문제는 포렌식 문제입니다."recovery.vhd"파일을 하나 주며 파일 형식을 알아보기 위해 FTK Imager를 통해 확인해 보겠습니다. 위 파일은 NTFS파일이며 "recovery.vhd"파일에 파티션 1이 한개 나눠줘 있는 것을 확인하였습니다. 해당 NTFS파일만 볼수 있게 파티션 1 부분파일만 이미지로 추출해 보겠습니다. Hxd 툴을 이용하여 열었을 때 섹터 0번이 내용이 없는 것을 확인 할 수 있습니다.여기서 알 수 있는 것 NTFS파일 구조를 알고 있으면 풀 수 있습니다. NTFS의 0번 섹터를 지칭 하는 것은 VBR입니다 - VBR VBR은 NTFS 구조에서 가장 앞부분에 위치하는 영역입니다.VBR의 첫 번째 섹터는 부트 코드를 포함하여 있고 클러스터 크기가 512인 경우 VBR 자체..
- Babyforms본 문제는 설문을 하여 제출하여도 웹페이지에서 벗어 날수 가 없다. 구글 폼 설문조사 창에서 탈출하지 못하므로 javascript문 작은 forms구조를 확인 해 볼 수 있다. - 위 그림처럼 Elements에서 babyforms문제의 flag 값을 찾을 수 있었다. - BabySheet 위 문제는 구글 시트에서 flag값을 찾는 문제 이다. A1부분에 'hawkis{????????????????}' 가 출력되어 있다.A1부분에 REPLACE 함수를 사용하고 있어 먼저 함수에 대해 알아보자!! REPLACE 함수 사용 목적 - 문자열의 특정 위치부터 주어진 길이 만큼을 다른문자로 데체함- 보통 주민번호, 이메일 등을 마스킹 할 때 사용 REPLACE 함수 형식 = REPLACE( 텍..
스택 버퍼오버플로우를 이용한 CTF문제를 풀려면 스택 프레임 구조를 파악하고 알고 있어야 한다. 스택이란?Stack : Last in First out (LIFO)를 기반으로 작동하는 자료구조. push(), pop() 등의 함수를 사용하여 조작스택 영역은 함수의 호출과 함께 할당됩니다. 함수가 끝나면 자연스럽게 사라지죠.지역 변수, 매개 변수, 반환값(Return)들이 이 곳에 저장됩니다.특징이 있다면 스택은 높은 주소에서 낮은 주소로 커지는데, 그 이유는 운영 체제의 핵심인 Kernel을 절대로 침범할 수 없게 하기 위해서입니다.스택에서 꼭 알아야 할 두 가지 레지스터가 있는데, ebp와 esp라는 녀석입니다.ebp는 베이스 포인터입니다. 스택에서 제일 낮은 위치(메모리 상에선 가장 높은 주소)를 가..
- 드림핵 CTF 문제 풀이A. ex-reg-exD. baby-linux - 문제풀이 전 개념두 문제를 공통적으로 정규 표현식을 이용하여 문제를 풀이하였음. - 정규 표현식특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다.패턴으로 부르는 정규 표현식은 특정 목적을 위해 필요한 집합을 지정하기 위해 쓰인다. 1. ex-reg-ex문제 파일을 확인 해 볼때 "dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+" 정규화로 표현하여 입력하면 flag값을 준다는 내용이다. dr = 문자 dr\w{5,7} = 문자, 숫자, 밑줄을 5~7글자 표현e = 문자 e\d+ = 숫자 ( 0~9)가 1개 이상am@ = 문자 am@[a--z]{3,7} = a~z까지 의 알파벳 3글자에서 7글자 표현..
- Node.js를 이용해 웹 페이지 제작 후 SQL Injection을 이용한 테이블 삭제1. Node.JS + MySQL을 이용하여 간단한 웹 페이지 제작(시큐어코딩 x)2. form, input, button 태그 활용3. 웹서버 오픈을 위한 Express 모듈 활용 및 Mysql DB 연동4. 다중쿼리 설정5. SQL Injection을 활용한 DROP TABLE 사용 1. SQL Injection이란? (기초)사용자의 입력값이 서버측에서 코드로 실행되는 '코드 인젝션' 공격 기법 중 하나이며, 서버의 데이터베이스를 대상으로 하는 공격이다. 공격의 핵심은 클라이언트 측에서 SQL 쿼리에 신뢰할 수 없는 데이터가 입력되었을 때, 데이터가 쿼리 로직의 일부로 해석되어 DB에서 실행될 때 발생한다. ..
- Node.js를 이용해 웹 페이지 제작 후 SQL Injection을 이용한 테이블 삭제1. Node.JS + MySQL을 이용하여 간단한 웹 페이지 제작(시큐어코딩 x)2. form, input, button 태그 활용3. 웹서버 오픈을 위한 Express 모듈 활용 및 Mysql DB 연동4. 다중쿼리 설정5. SQL Injection을 활용한 DROP TABLE 사용 1. 웹 서버 구축 - 프론트엔드기능 구현: 이름, 주소 입력란을 만들어 데이터를 제출하는 형식으로 만들기 - login.html My To-Do App 이름 주소 로그인 -> 힌트에서 , , 기능을 활용 태그-> 웹 페이지에서의 입력 양식을 의미 하며 실제로 백엔드 코..
어셈블리어란?기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 다라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 재각각이며, 레지스터의 크기와 개수, 저장된 데이터 형의 표현도 각기 다르다. CPU 레지스터 종류: 범용 레지스터, 상태 레지스터, 플래그 레지스터- 레지스터: CPU내부의 기억장소로 PC가 정보를 처리하기 위해서는 정보가 특정한 셀에 저장되어야 한다. 레지스터들은 8 또는 16비트 플립-플롭 회로들의 집합이다. 플립-플롭 회로란 두 단계의 전압으로 정보를 저장할 수 있는 장치이다.1. 데이터 레지스터- 데이터 레지스터는 각종 데이터 처리를 대상으로 하는 32비..
HTTP request smuggling이란?HTTP 1.1을 사용하는 Front-end 서버와 Back-end 서버로 이루어진 웹 어플리케이션을 대상으로하여, 변조된 패킷을 일반 사용자가 접근할 수 없는 Back-end 서버로 직접 보내 중요 정보 획득, XSS 공격 유도, 서버 웹 캐시 포이즈닝 등의 공격을 수행할 수 있습니다.패킷은 Content-Length, Transfer-Encoding: chunked 헤더 등을 변조하여 Front-end 서버와 Back-end 서버가 패킷의 길이를 다르게 해석케 할 수 있으며, 다른 패킷을 포함할 수 있습니다.Bacj-end 서버에서 악의적으로 포함된 패킷을 해석할 경우에 공격이 가능합니다. Content-LengthContent-length는 아래 패킷과 ..