본문 바로가기

전체 글

(63)
해커스쿨 FTZ-1 문제풀이 일단 처음에 들어가서 ls를 쳐보면 이렇게 hint 파일이 있는 것을 확인 할수있다.cat명령어를 통해 한번 확인해 보면,이렇게 문제를 알려준다. 그래서 level2권한의 파일을 찾기위해find명령어로 찾아봤다.find 대표적인 명령어 정리(-name : 파일이름과 일치-perm : 권한과 일치-user : 유저와 일치-group : 그룹과 일치-empty : 비어있는 파일 이나 디렉토리 검색)사실 perm -4000을 써도 된다.(여기서 4000은 setuid를 의미더하거나 뺄수 있다.)그랬더니 파일을 하나 찾을수 있었다.그래서 이것을 실행 시켜보려고, 처음에는 cat명령어를 써봤지만,이상한 문자들도 같이 나와서ExecuteMe자체를 그냥 실행 시켜봤더니이렇게 level..
링크드 리스트 설명 및 구현 링크드 리스트란? 연결 리스트, 링크드 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다.링크드 리스트는 크게 단방향 리스트(단일 연결 리스트)와 이중 연결 리스트가 존재하는데, 먼저 단일 연결 리스트는 각 노드에 자료 공간과 한 개의 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킨다. 그 다음 이중 연결 리스트의 구조는 단일 연결 리스트와 비슷하지만, 포인터 공간이 두 개가 있고 각각의 포인터는 앞의 노드와 뒤의 노드를 가리킨다. 구현 단일 연결 리스트12345678910111213..
큐 구조 설명 및 구현 큐 란? 큐(Queue)란 자료구조는 앞서 배웠던 스택(Stack) 자료구조와는 달리 선입선출(First In, First Out: FIFO)의 구조를 지니고 있습니다. 한마디로 먼저 들어온 데이터는 먼저 나간다는 소리입니다. 예를 들면, 점심시간에 학생들이 점심을 먹으러 일렬로 줄을 서있다고 가정합시다. 줄을 선 순서대로 차례차례 급식을 받고 빠져나가죠? 이러한 구조를 지닌 자료구조가 바로 큐(Queue)라고 말할 수 있습니다.큐는 크게 순환 큐와 링크드 큐로 나뉠수 있는데, 먼저 순환큐(Circular Queue)는 원소들을 옮기지 않고 반대로 전단과 후단의 유연하게 위치를 옮기는 방식인데, 한 마디로 만약 후단이 배열 끝에 있을때 숫자가 삽입이되면,숫자가 맨앞으로 옵니다.그래서 순환큐를 표현할때는 ..
스택 구조 설명 및 구현 스택이란 ? 스택(Stack)이란 자료구조는 선입후출(First In, Last Out: FILO), 후입선출(Last In, First Out: LIFO)의 구조를 가지고 있습니다. 예를 들어어느 개발자의 책상에 빼곡히 쌓여있는 책을 정리하기 위해 가장 위에있는 책부터 꺼내들어 차례대로 정리합니다. 여기서, 먼저 쌓인 책들보다 나중에 쌓인 책들이 먼저 밖으로 나간다고 해서 후입선출의 구조라 말하고, 반대로 나중에 쌓인 책들보다 먼저 쌓인 책들이 늦게 밖으로 나간다고 해서 선입후출의 구조라고 말하는 것입니다. 스택(Stack)도 마치 개발자의 책상에 빼곡히 쌓여있는 책들과 비슷합니다.순서가 있다 - 삽입(insert)과 삭제(delete)를 리스트의 한쪽(top이라고 부름)에서 행함**삽입과 삭제가 모두..
Easy keygen 설명 Reversing.kr >> 2번째 문제 Easy keygen 풀이과정 설명 먼저 문제는 시리얼 >> 5B134977135E7D13 > serial로 주어진 값 5B134977135E7D13를 10,20,30과 각각 XOR시켜주면결국 name이 나온다. 16진수니까 2개씩 끊어서 계산해주면5B 13 49 77 13 5E 7D 13 10 20 30 10 20 30 10 20 (XOR)4B 33 79 67 33 6E 6D 33 K 3 y g 3 n m 3 (ASCII)
어셈블리어 용어 정리 & 리눅스 용어 정리 LAYER 7 과제 - 어셈블리어 용어 정리 & 리눅스 용어 정리 어셈블리어 용어 정리 LEA >> destination register에 주소를 넣는다mov >> destination register에 값을 넣는 역할DWORD PTR DS:[?] >> DWORD PTR은 해당주소에서 32bit를 읽겠단 얘기고, DS는 데이터 세그먼트로, SS 스택 세그먼트도 있다.(피 연산자의 크기를 재설정 한다.)CALL >> 함수를 호출한다.PUSH >> 스택에 데이터를 저장한다.POP >> 스택에서 데이터를 꺼낸다 리눅스 명령어 ls >> 현재 디렉토리 내의 파일을 보여준다. 대표적인 옵션으로는(ls -l)이 있다.cd >> 원하는 디렉토리로 이동한다.(ex) cd .. > 파일을 생성하며 내용을 넣거나,추가하거..
c언어 메모리 구조(코드) 123456789101112131415161718192021222324252627282930313233343536#include#include int num = 0; // num은 전역변수, num1은 스태틱 변수로int abc(int a, int b) { // 프로그램이 종료되기 전까지 static num1; // 소멸되지 않고, 데이터 영역에 포함되어 있다. int temp; // 5줄과 7줄은 각각 매개변수, 지역변수로 if (b > a) { // 함수가 호출되었을때 같이 호출되었다가 temp = a; // 함수가 종료되면 소멸하며, 스택영역에 포함되어있다. a = b; b = temp; } if (num == 1) { //전역변수 num이 1이면 a를 더한다. num1 += a; return nu..
x86 CPU 레지스터 조사 x86 CPU 레지스터 조사 1. 레지스터의 종류와 그 역할먼저 종류가 그 목적에 따라 범용 레지스터, 세그먼트 레지스터, 플래그 레지스터,인스트럭션 레지스터로 구성된다범용 레지스터 : 논리 연산이나 수리 연산에 사용되는 피연산자 또는 주소를 계산하는데 사용되는 피연산자,그리고 메모리 주소가 저장되는 레지스터 이다.세그먼트 레지스터 : 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트를 가르키는 주소가 들어있는 레지스터 이다.플래그 레지스터 : 프로그램의 현재 상태나 조건 등을 검사하는 데 사용되는 플래그들이 있는 레지스터 이다.인스트럭션 레지스터 : 다음 수행해야할 명령이 포함된가상 메모리의 주소가 들어있는 레지스터 이다. 1-1 범용 레지스터프로그래머가 임의로 조작할 수 있게 허용되어 있는레지스터로 8..