반응형

binary 8

SMP2010 binary hacking6 풀이

/* * http://sosal.tistory.com/ * made by so_Sal */ smp2010 중, 6번 바이너리 해킹문제 입니다. 문제파일입니다. 리눅스 서버에서 wget 툴을 사용하여 바이너리를 일단 받죠. (위 파일의 url임) wget http://sosal.tistory.com/attachment/cfile23.uf@167E83114CEC1DCD1F4271 받은 파일의 이름을 간단하게 바꾸고, file 명령어로 실행이 가능한 파일인지 확인 후 실행해봤습니다. Segmentation fault! 작렬하네요. argv를 넣어보니, 뭔가 인자를 발견했다 하고 바로 꺼지네요..? (일단 설치하고 문제 프로그램의 이름을 myfile로 수정하여 공격하겠습니다.) 매개변수를 여러개 넣어도 같은 결..

Strcmp 부분 gdb로 암호 문자열 크랙하기

/* * http://sosal.tistory.com/ * made by so_Sal */ 가끔 프로그램이, 변수에 어떤 값이 들어가있는지 궁금할 때가 있다. 그때는 심볼이나 디버깅 정보를 삽입하여, gdb에서 watch 명령어나 직접적으로 메모리에 접근하여 정보를 가져오는방법, 레지스터를 확인하는 방법 등이 있는데, 이 포스팅에서 레지스터가 가리키는 문자열 변수에 어떤 값이 들어가있는지 GDB 디버깅 툴을 이용하여 확인하는 방법을 알아보려고 한다. (답) ANUG9LMRKOB^IS_SOSAL #include #include int main(){ char password[] = "MY_PASSWORD_IS_SOSAL"; char input[100] = ""; int length = strlen(passw..

Linux/Linux_technic 2010.08.29

이진 탐색트리 삭제 포함 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 애혀.. 삭제 추가 되게 어렵네요.. 뇌를자극하는 알고리즘 참고해서 만들었습니다. #include #include using namespace std; class node{ private: int value; public: node(int val){ value=val; } int getValue(){ return value; } void setValue(int val){ value = val; } node* left; node* right; ~node(){ delete this; } }; node* CreateNode(int value); // 노드생성함수 void InsertNode(node* tree,node*..

이진탐색트리 자동 생성 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 루트 노드를 50으로 넣은 후, rand()%100 으로 노드를 계속해서 생성해나갑니다. 생성된 노드보다 큰값이면 우, 작으면 좌측 노드로 향하며 우측, 또는 좌측노드가 NULL이라면 새로 생성된 노드는 자식노드가 되며, NULL이 아닐 경우에는, 다시 크기 비교를 반복합니다. #include #include using namespace std; class node{ private: int value; public: node(int val){ value=val; } int getValue(){ return value; } node* left; node* right; ~node(){ delete this; } }; ..

탐색 : 이진탐색

/* * http://sosal.tistory.com/ * made by so_Sal */ 이진탐색은 정렬이 되어있는 데이터 배열에 사용할 수 있습니다. 찾기를 원하는 value를 받고, 배열의 정 가운데 값과 비교하여 크면, 가운데와 맨 끝의 중간을 비교, 작으면 가운데와 처음을 비교합니다. 이렇게 반씩 줄여나가면서 데이터를 찾는 과정이 binary search 입니다. 그럼 간단한 함수 예제를 볼까요? #include #include #include using namespace std; int BinarySearch( int *arr, int size , int object){ //arr은 정렬된 데이터의 array, object는 찾고자 하는 수의 값을 뜻합니다. int left = 0; int r..

트리 : level에 따른 이진트리 자동 생성 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 이진트리를 짜봤습니당. 워낙 유명한 자료구조라 인터넷에서 쉽게 구조체나 생성함수, 삭제함수 등을 구할 수 있었지만 레벨에 따른 트리를 생성할 수 있도록 만들어놓은 함수는 안보이더라구요, 그래서 간단하게 만들어봤습니다 ㅎㅎ 각 노드의 value는 char형태로 이루어져있는데, default parameter를 통해 자동으로 B부터 CDE~~~쭉쭉 만들어지게 해놨습니다. 숫자를 원하신다면 class의 value 자료형을 바꾸고, default parameter값만 바꿔주시면 되겠죠? #include using namespace std; class node{ private: char value; public: node(..

od - 바이너리 파일 덤프

/* * http://sosal.tistory.com/ * made by so_Sal */ od = octal dump (octal = 8진법)라는 의미로, 바이너리 파일을 8진수로 덤프해서 줄력하는 명령어입니다. od /bin/bash | head -5 head -5 는 출력되는 줄의 윗부분 5줄만 거른다는 뜻입니다. 맨 왼쪽 00000*0은 시작점으로부터의 offset을 8진수를 표시한 것입니다. (offset은 좌측 메모리 시작점을 0으로 하여 숫자를 통해 위치를 알려주는 좌표계 역할을 함) 2바이트씩 8개, 16바이트씩 출력하기 때문에 00,20,40... 으로 늘어나게 됩니다. 출력 형식 지정 (-t 명령어) 형 의미 a 문자의 이름(7비트 ASCII) c ASCII 문자 또는 escape 문..

Linux/Linux_technic 2009.10.23
반응형