rev-basic-4~6 write up 더보기 https://dreamhack.io/wargame/challenges/18/ https://dreamhack.io/wargame/challenges/19/ https://dreamhack.io/wargame/challenges/20/ rev-basic-4 write up 사용한 프로그램 : radare2, ida7.2, python3 저번과 마찬가지로 메인은 똑같네요 "section.. text"를 분석해봅시다. 전 문제와 동일하게 역산하는 문제인 것 같습니다. 이번에는 바로 아이다로 분석하여 파이썬으로 짜 보겠습니다. 사용자가 입력하는 값은 a1이라고 했을때 저 코드를 분석하자면, 1) a1[i] >> 4 : 입력을 a라고 했을 때 61 -> 6 2) ..
rev-basic-0~3 write up 더보기 https://dreamhack.io/wargame/challenges/14/ https://dreamhack.io/wargame/challenges/15/ https://dreamhack.io/wargame/challenges/16/ https://dreamhack.io/wargame/challenges/17/ rev-basic-0 write up 사용한 프로그램 : radare2, ida7.2 main를 어셈으로 보았을 때, 'Correct'라고 적혀있는 구문 바로 위에 'test eax, eax'가 있습니다. x86 어셈블리어에서 TEST 명령어는 두 피연산자들에 대한 비트 연산인 AND를 수행한다. 그렇다면 eax값을 반환해주는 바로 위 "call ..
레지스터 : CPU의 변수 범용 레지스터 8 bit Register : AH, AL 16bit Register : AX 32bit Register : EAX 64bit Register : RAX - 범위 레지스터: CPU에서 사용하는 변수의 일종 - EAX 산술 계산을 하며 리턴값을 전달합니다. 가장 많이 사용하는 변수 입니다. - EDX 큰 수의 곱셈 또는 나눗셈 연산 - ECX C : Counter 이다. 반복문에서의 카운터 for문의 i++의 역할이지만 반복문을 돌만큼 값을 저장한 후 감소하는 형태로만 작동합니다. - EBX EAX, EDX, ECX와 같은 일정의 변수 - ESI 문자열이나 각종 반복 데이터를 처리 또는 메모리 옮기는 데 사용합니다. - EDI 일종의 변수 ESI는 시작지 인덱스, ..
CTF에서의 리버싱 프로그램 구조 분석 분석을 바탕으로한 코드 재구현 역연산을 통한 플래그 획득 -> 플래그 획득을 위해서는 프로그램의 구조를 분석하고 이해하는 과정이 필수적입니다. 결국 리버스엔지니어링은 많이 분석할수록 실력이 늡니다. 다른 분야와는 달리 기법을 배운다기 보다는 새로운 유형을 접한다는 방식으로 공부합니다. 해킹 기반 지식 Linux - 해킹을 하기 위해선 linux를 다룰 수 있어야 합니다. Programming - 적어도 1개의 언어는 배우는 것이 많은 도움이 될 겁니다. 특히 c언어는 시스템 해킹을 하기 위해선 필수로 알아야 합니다. 소스코드 컴파일 #include int main() { printf("Hello World!!"); return 0; } 위와 같은 "Hello Wor..
해킹이란..? 해킹은 타인의 컴퓨터 시스템에 무단 침입하여 데이터에 접속할 수 있는 권한을 얻는 것입니다. 해킹은 크래킹과 개념이 다릅니다. 쉽게 해킹은 "해킹을 하여 소스 코드를 보다"이고 크래킹은 "해킹을 하여 그 소스 코드를 파괴한다"인 것입니다. 그렇기 때문에 해킹을 배우는 우리는 법의 선을 잘 지켜야 합니다. 해킹의 종류 기술적 해킹 타겟 시스템과 기술에 대해 깊게 이해 높은 비용이 들지만 은밀한 공격을 수행 가능. 사회공학적 해킹 사람과 사람 사이의 취약점을 공략하여 원하는 정보를 얻는 공격 쉽게 가능하면서 사람들이 많이 당함. 하지만 눈에 잘 띄는 공격 사회공학적 해킹은 사실 모두가 이미 해봤을 거라고 생각합니다. 해킹의 범주 War 국가 간의 전쟁 돈과 명예 버그 바운티 CTF 취약점 거래..
CSS란? css란 Cascading Style Sheets의 약자로 문서의 스타일을 꾸밀 때 사용하는 스타일 시트 언어입니다. 글꼴, 배경색, 너비와 높이, 위치등을 지정할 수 있습니다. HTML에 CSS를 적용시키는 방법 인라인 스타일 시트 : HTML태그 직접 CSS코드 작성 내부 스타일 시트 : 태그 안에 CSS코드 작성 외부 스타일 시트 : 별도의 CSS파일 안에 CSS코드 작성 우선순위 하나의 요소에 같은 속성, 다른 값의 CSS값이 적용되었나면 우선순위는 인라인 > 내부 > 외부의 순서로 적용됩니다. 선택자 선택자를 사용하여 특정 요소에 스타일을 적용할 수 있습니다. 전체 선택자 태그 선택자 아이디 선택자 클래스 선택자 자식, 자손 선택자 가상클래스 선택자 전체 선택자 : 모든 요소를 선택하..
https://www.acmicpc.net/problem/11047> N >> K; int values[10]; for(int i = 0; i > values[i]; } for(int i = N - 1; i >= 0; i--) { while(K >= values[i]) { K -= values[i]; cnt++; } } cout
https://www.acmicpc.net/problem/7569 > m >> n >> h; bool all_one; for (int z = 0; z > d[i][j][z]; // 0이 입력됐는지 확인 if (d[i][j][z] == 0) all_one = true; if (d[i][j][z] == 1) { q.push(make_tuple(i, j, z)); visited[i][j][z] = true; } } } } // 0의 입력이 없으면 if (!all_one) { printf("0"); return 0; } while (!q.empty()) { int x, y, ..