생활코딩 WEB2 - JavaScript
·
Hacking/Web Hacking
WEB2 JavaScript - 1.수업소개 JavaScript : 사용자와 동적으로 상호작용 할 수 있도록 기능 추가 html로 홈페이지 제작 → JavaScript로 사용자와 상호작용 ​ WEB2 JavaScript - 2.수업의 목적 웹은 한번 출력하면 바꿀 수 X → JavaScript를 이용해서 동적 기능 추가 ​ 야간-주간모드를 버튼을 통해 변경하기 ​ input type = "button" → 버튼 추가 value = "night" → 버튼 이름 night onclick = → 속성값으로 JavaScript가 와야 함. 버튼을 클릭하면 작성된 JavaScript 코드를 실행함 " document.queryselector('body').stylebackgroundColo..
섹션 1. 디지털 포렌식 기초, Warm-up 💪
·
Hacking/Forensics
1. 앞으로 하게 될 일들 - 디지털 포렌식 수사관에 몰입하여 수사 기법과 타임라인을 체화함 - 컴퓨터 디스크 : C드라이브, D드라이브 등 데이터가 담겨 있는 공간(창고) - 메모리 : 프로그램 등을 실행하기 위해 필요한 공간 - 디스크 이미징 : 디스크를 파일의 형태로 가져오는 것 - 디스크 마운트 : 이미징 된 파일을 컴퓨터에 등록하는 것 - 메모리 덤프 : 실행되고 있는 프로그램을 하나의 파일로 저장하는 것 2. 디스크 이미징 강의 진행을 위해 추가 드라이브가 존재하거나 USB를 준비해야 한다. FTK-imager : 이미지를 이미징, 마운팅, 메모리 덤프, 검색 기능이 있는 도구 FTK 다운로드 홈페이지에 접속해서 FTK-imager 파일을 다운로드 받아야 하는데 다운되어 있어서 파일은 구글 드..
섹션 0. 디지털 포렌식 소개, 시작이 반이다 👍
·
Hacking/Forensics
1. 디지털 포렌식이란 무엇인가? - 디지털 포렌식 : 컴퓨터 범죄와 관련하여 디지털 장치에서 발견되는 자료를 복구하고 조사하는 법과학의 한 분야 - 컴퓨터 장치가 들어가는 디바이스를 대상으로 증명된 과학적 기법을 이용해 정보를 수집하고 추출해 증거 수집 등에 이용하는 영역 2. 디지털 포렌식의 필요성 - 해킹 등 컴퓨터 관련 범죄 뿐만 아니라 일반 범죄에서도 디지털 포렌식으로 획득할 수 있는 증거가 주요 단서가 되는 경우가 많아짐 (카톡 기록 복구나 사진 복구 등....) - 범죄 수사 외에도 민사사건이나 일반 기업(내부 정보 유출, 회계 감사 등)의 분야에서도 활용도가 증가했음 = 취업의 길이 넓어졌다 3. 디지털 포렌식의 유형과 대상 1. 디지털 포렌식의 유형 1. 침해 사고 대응 - 실시간으로 사..
[Pwnable.kr] input
·
Hacking/System
포트에 접속해 보았다. 파일을 검색해 input.c 파일을 읽어보았다. 내용은 길어서 캡처 사진이 아니라 코드로 첨부한다. #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know how to give input to program\n"); printf("Just give me correct inputs then you will get the flag :)\n"); // argv if(argc != 100) return 0; if(strcmp(argv['A'],"\x00")) ret..
[Pwnable.kr] random
·
Hacking/System
ssh로 서버에 접속해보았다. 서버에 접속해 ls로 파일을 살펴보니 flag, random, random.c 파일이 있었다. random 파일을 실행시키고 11111111을 입력해 보니까 번호가 틀렸고, 2^32개의 경우를 시도해 보라고 얘기한다. cat을 통해서 random.c 파일을 확인해 보았다. rand() 함수를 이용해서 random 값을 구하는데, time을 이용해서 값을 구하지 않기 때문에 항상 고정된 값이 처음으로 나올 것으로 예상된다. 따라서 해당 값과 xdeadbeef 값을 같게 하면 flag를 읽을 수 있다. gdb를 통해서 random을 분석했다. main+18에서 rbp-0x4에 rand()의 값을 저장하는 것을 확인할 수 있다. main+18에 breakpoint를 설정하고 실행..
생활코딩 WEB1- HTML & Internet
·
Hacking/Web Hacking
WEB1 - 1. 수업 소개 공부를 대하는 태도 이야기 ​ WEB1 - 2. 프로젝트의 동기 본인이 생활 코딩 프로젝트를 시작하게 된 동기 원래 강의 대상은 개발에 대한 지식이 없는 직장 동료들을 대상으로 함 ​ WEB1 - 3. 기획 기획 : 만들기 전에 무엇을 만들지 정리하는 것 코딩 사이트 기획 목차 1. HTML 2. CSS 3. Javascript ​ WEB1 - 4.코딩과 HTML 컴퓨터-인간 상호 간의 약속 : 코드, 소스, 언어 컴퓨터의 결과물 : 애플리케이션, 앱, 프로그램, 웹페이지, 웹사이드 HTML 장점 1. 쉬움 2. 중요함 (사용 ↑) 저작권 X → 독점 X → 수명 ↑ ​ WEB1 - 5. HTML코딩과 실습환경 준비 강의에서는 AT..
[Pwnable.kr] cmd1
·
Hacking/System
ls -l로 파일을 확인한 뒤에 flag 파일을 읽어보려 했으나 거절당했다. 그래서 cmd1.c 파일을 읽어보았다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } filter() 함수에서 flag, sh, tmp를 사용하는 것을 막고 있었다. ..
[Pwnable.kr] blackjack
·
Hacking/System
전체 코드는 여기에서 볼 수 있다. https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html //Main Function int main(void) { int choice1; printf("\n"); printf("\n"); printf("\n"); printf("\n 222 111 "); printf("\n 222 222 11111 "); printf("\n 222 222 11 111 "); printf("\n 222 111 "); printf("\n 222 111 "); printf("\n"); printf("\n%c%c%c%c%c %c%c %c%c %c%c%c%c%c %c %c ", club, club, cl..
[Dreamhack] Reverse Engineering Stage 6 - Exercise: rev-basic-1
·
Hacking/Reversing
정적 분석 IDA로 파일 열기 문제 파일을 정적분석하기 위해 앞서 배운 IDA를 사용했다. IDA를 실행하고, chall0.exe를 끌어넣는다. 파일이 정상적으로 열리면 다음과 같은 창이 나타난다. 위의 창에서는 문제 파일의 간략한 정보를 띄워준다. 바이너리의 아키텍처는 AMD64 (x86-64), 파일 포맷은 PE (Portable Executable) 구조라는 것을 알 수 있다. 이 정보들을 통해 본격적으로 분석하기 전, 분석에 도움이 되는 정보를 획득할 수 있다. 지금까지 과정을 성공적으로 마치면 위와 같은 창이 나타난다. 이는 바이너리에 디버깅 정보를 담고있는 심볼 경로가 존재하는데, 이를 찾아서 로드하겠냐는 질문창이다. 문제 출제자는 별도의 심볼(.pdb)을 제공하지 않았기 때문에 No를 클릭한..
[Dreamhack] Reverse Engineering Stage 6 - Exercise: rev-basic-0
·
Hacking/Reversing
서론 드림핵 워게임 중 rev-basic-0 문제를 푸는 코스이다. 실행 먼저 다운로드 받은 파일을 실행하여 프로그램이 어떤 식으로 동작하는지 확인해보았다. 워게임 문제와 같이 신뢰할 수 없는 프로그램을 실행할 때는 가상환경(VM)에서 실행하는 것이 바람직하다. 만약 문제 정보를 통해 프로그램의 동작방식이 예상이 간다면 굳이 실행하지 않고 정적분석을 먼저 시도해보는 것도 좋은 방법이다. 윈도우 운영체제에서 기본적으로 제공되는 Windows PowerShell에서 문제 파일을 실행해보았다. 문제 파일의 압축을 해제한 후, 실행해보면 Input : 이라는 문자열이 출력된다. 출력된 문자열 뒤에 AAAA를 입력한 후, 엔터를 치면 Wrong이 출력된다. 문제가 사용자에게 문자를 입력받고 프로그램 내부의 어떤 ..
[CodeEngn] Basic RCE L04
·
Hacking/Reversing
exe 파일을 디버깅하지 않고 실행해 보았다. 이번엔 IDA에서 디버깅을 했다. 함수의 기능을 확인할 수 있었다. 이제 IDA에서 디버깅해보자. basic RCE 3처럼 Function name에서 확인하려 했으나 함수의 이름이 나타나 있지 않았다. 그래서 함수의 import 화면을 실행했다. 실행해보니 의심되는 함수 IsDebuggerPresent 함수가 있어 더블클릭한 뒤 x를 눌러 실행했다. jz에 중단점을 두고 실행해 보았다. EAX(return)값이 1이고, 분기점이 왼쪽으로 가 call이 실행되어 "디버깅 당함"이 출력되는 것을 확인할 수 있었다. jz 중단점 전에 EAX 값을 0으로 바꿔서 확인해 보았다. 오른쪽 분기점으로 실행되어 예상했던 대로 "정상"이 출력되는 것을 확인할 수 있었다. ..
[CodeEngn] Basic RCE L03
·
Hacking/Reversing
문제 파일을 실행해 보았다. 원래는 실행 파일이 있는 폴더에 MSVBVM50.dll 파일을 설치한 뒤에 실행하면 된다고 하는데, 나는 실행이 되지 않았다. https://boksbooks.tistory.com/67 Msvbvm50.dll 다운로드 및 오류 해결법 Msvbvm50.dll Msvbvm50.dll 에러가 발생하면 문제가 생긴 파일이 있는 위치에 파일을 복사하여 넣거나 파일을 새로 생성해야 합니다. 여기에서는 파일을 다운로드 받아서 시스템 폴더에 넣거나 다이 boksbooks.tistory.com 해당 글을 참고해도 실행이 되지 않아서 코드를 훑어보아 해결하기로 했다. 스트링 비교 함수는 두 글자를 비교(cmp)를 하고 Error 혹은 Success 문자를 출력하는 분기점(jz)을 포함하고 있을..