게임 서버나 몇몇 리눅스 매니아?분 들을 위하여 글을 작성 합니다?


리눅스에서 unity3d는 experimental로 유니티를 지원 해줌니다.


http://blogs.unity3d.com/kr/2015/08/26/unity-comes-to-linux-experimental-build-now-available/


에서 deb 파일이나 sh파일로 설치가 가능합니다.


유니티는 따로 개발 코드를 작성하기위한 ide를 지원하지 않고 유니티를 지원하는 ide를 이용하여 개발을 해야 합니다.


허나 아직 리눅스에서 c#을 지원하는 ide는 딱히 이거다 하는 도구는 없습니다.


vscode가 유니티를 지원 해줌으로써 자동완성기능이나 디버깅을 할 수 있습니다.


따라서 vscode + unity3d + mono-complete로 작성이 가능합니다.


유니티에서 간단히 테스트를 할 프로젝트를 생성 합니다.


그리고 Assets 폴더에 git clone https://github.com/dotBunny/VSCode.git 으로 다운로드 받은 파일중 plugin 폴더를 넣습니다.


이 스크립트는 vscode하고 unity를 서로 연동을 해줍니다.


https://www.visualstudio.com/en-us/products/code-vs.aspx 에서 vscode를 다운로드 하고 설치가 가능합니다.


/opt 폴더에 바이너리 파일을 널고 /usr/share/application 폴더에 다음과 같이 작성 하여 .desktop 파일을 생성합니다.


[Desktop Entry]

Version=1.0

Type=Application

Name=VSCode

Icon=/opt/VSCode-linux-x64/resources/app/resources/linux/code.png

Exec=/opt/VSCode-linux-x64/Code %U

Comment=VSCode IDE

Categories=Development;IDE;

Terminal=false


그리고 유니티에서 vscode를 사용 하기 위해서는 /usr/bin 폴더에 심볼릭 링크로 등록을 해놔야 합니다.


심볼릭 링크를 등록 할때 Edit -> preferences에서 External Script Editor가 그냥 code 인지 Code인지 알아야 합니다.



VSCode 바이너리 실행 파일이 Code로 대문자로 되어 있어서 저 처럼 code로 되어 있는 경우 대소문자를 인식해 실행되지 않습니다.


이제 preferences에서 vscode 설정이 가능합니다. 



이제 Assets -> sync MonoDevelop Project를 클릭 하여 vscode에서 프로젝트를 연동하여 사용 할수 있도록 합니다.


Asset -> open C# project in code를 클릭하여 vscode를 실행 합니다. 


vscode 오른쪽 밑이나 왼쪽 밑에 




불 모양의 버튼을 클릭 합니다. 



sln 파일을 선택하여 프로젝트를 불러옴니다.


이제 vscode에서 개발이 가능 합니다. 허나 자동 완성 기능이 제공 되지 않아 개발하는데에 많은 불편함이 있습니다.


mono-complete와 mono-devel를 설치하여 자동완성 기능을 사용이 가능 합니다.


허나 apt-get 이나 yum으로 설치해서 사용 하게되면 vscode에서 버전이 낮아서 자동완성을 사용하실 수가 업습니다. vscode에서는 4.0.1 이상을 요구 하고 apt-get으로 설치를 하면 3.2버전이 설치가 됨니다.


http://download.mono-project.com/sources/mono/ 에서 소스코드를 받아와서 컴파일을 하여서 최신 버전을 설치를 하셔야 합니다.


컴파일해서 설치하는 방법은 간단하게 앞축을 풀고


./confingure


make 


sudo make install


으로 설치가 가능합니다. 이제 vscode를 재실행 하면 자동완성 기능을 사용하면서 개발이 가능 합니다.


Posted by 준P

서버를 세팅 했으니 이제 서버를 컨트롤할 플러그인이 필요합니다.


이 플러그인을 제작할 작업 환경을 구축하는 방법을 다루어 보겠습니다.


우선 플러그인을 제작 가능한 환경은 eclipse, IntelliJ IDEA, NetBeans가 있습니다.


저는 이 작업 환경에서 IDEA를 사용하는데요 이 IDEA는 다른 작업 환경보다 훨씬 편한 작업 환경을 제공해 줍니다.


Pro 버전과 community 버전이 따로 있는데요 community버전은 무료 이므로 사용해보시는것을 추천 드림니다.



우선 project를 만들어여 하므로 Create New Project를 선택합니다.



왼쪽 팝업에서 Gradle을 선택해준신뒤 Next.



Group ID는 조직, 회사와 같은 내용을 적어줍니다. (팀명이나 그런것들?)


Artifact ID는 플러그인 이름을 적어줌니다.(Project 이름으로 사용됨니다.)


Version은 알맞게 설정하시면 됨니다.



아무 설정 하지 안고 넘어가도 되지만 추가적인 기능을 사용하실 분 이라면 알맞게 설정하시면 됨니다.



그냥 넘어가시면 됨니다.



프로젝트를 만들면 다음과 같은 화면이 나타남니다.


프로젝트 탐색기에서 build.gradle 파일을 선택해줍니다.



이파일을 다음과 같이 수정해줍니다.



입력 해주신뒤 Gradle에서 새로고침 해줍니다.



gradle 이 보이지 않는다면 View -> ToolWindows에서 Gradle을 선택해주시면 gradle이 나타남니다.



새로고침을 해주시면 프로젝트 탐색기에 다음과 같이 생성이 되는데요 이렇게 보이시면 성공입니다.


Src-> java에서 java파일을 생성해줍니다.  파일을 생성 하신뒤 다음과 같이 입력을 해줍니다.



class위에 


@Plugin(id = "", name = "", version = "1.0")


을 입력 해줍니다. id는 로그나 여러 출력이 될때 사용됨니다. name은 개발자? 입력해주시면됩니다. version은 알맞게?


이제 서버를 컨트롤 하기 위한 코드를 작성 해봅시다!!



개발자가 데이터 값이나 출력값을 보기 위해서는 로그를 남기는 Logger가 필요합니다.


이 Logger는 플러그인에 인젝션 되기 떄문에 @Inject 옵션을 붙여줍니다.


플러그인은 Event에 따른 코드를 추가할수 있습니다.


Event는 서버가 실행되는 이벤트나 혹은 Player가 접속하는 이벤트나 여러 이벤트가 있습니다.


이 이벤트를 받아보기 위해서는 @Listener를 메소드위에 붇여주셔야 합니다.


또 이벤트 메소드는 인자값에 따른 이벤트가 들어오므로 메소드 이름은 자유롭게 작성하시면 됨니다. 중요한것은 인자값으로 어떤 이벤트가 들어오는가 입니다.


이렇다보니 메소드는 외부에서 받아오기 때문에 매번 회색으로 변해 있습니다. 줄도 쳐져 있고 ㅠㅠ 그래서 메소드 이름에서 ALT + Enter를 하시면 



다음과 같은 옵션이 생김니다. Supress for methods annotated by ~ 어쩌고 하는 옵션을 클릭해줍니다.


그러면 메소드가 다음 처럼 변경이 됨니다.



logger로 서버가 실행되었다는 메세지를 출력할 수 있습니다.


이제 간단한 플러그인을 제작 하였으므로 jar파일을 추출 해봅시다.!!



File -> Project Structure에서 Artifacts 에서 + 버튼을 눌룬뒤 Jar -> from modules with dependencies...를 선택해줍니다.


create JAR frome Modules에서 main Class를 만든 java파일을 선택해줍니다.




여기서 오류가 나시는분들은 그냥 나오시면 MainClass에 입력이 되어 있으면 무시 하시면 됨니다.



ok를 눌러서 넘어감니다.



Output directory를 마인크래프트 서버 mods 폴더로 설정을 해줍니다.


플러그인은 mods폴더에 있어야 해서 빌드하면 자동으로 생성되게 해줍니다.



빌드를 할때 다른 종속성 파일은 넣을 필요가 없기 때문에 제거 해줍니다.



이제 빌드 설정은 완료 되었습니다.


이제 적용하신뒤 나오시고 Build -> BuildArtifacts를 클릭하시면 중앙에 다음과 같은 작은 창이 뜸니다.



빌드를 해주면 됨니다.



플러그인이 생성되었습니다.



서버 로그에 작성했던 코드가 나타나는것을 확인 할 수 있습니다.



프로젝트 탐색기에서 빨간 폴더가 보여서 싫으신 분은 projectsturcture 에서 Modules에서 빤간 폴더를 선택 하신뒤 Excluded를 클릭하신뒤 Apply하시면 됨니다.


Posted by 준P

마인크래프트는 자신이 블록을 쌓거나 집이나 혹은 사냥을 하던가 하는 여러 자유로운 짓을? 할 수 있는 게임 입니다.


이번에는 이 게임의 서버를 열어보는 게시글을 작성 해보겠습니다.


SpongePowered라는 버킷을 이용해서 서버를 열어보도록 하겠습니다.


일단 마인크래프트는 기본적인 마인크래프트 서버가 있지만 이 서버에 추가적인 플러그인이나 모드를 넣을려면 포지를 사용하여 확장을 해줘야만 합니다.


http://files.minecraftforge.net/


에서 자신이 원하는 마인크래프트 버전의 서버를 열수 있는 포지를 다운로드 받을수 있습니다.


기본적으로 JAVA로 작성되어서 모든 플랫폼에서 작동을 합니다. 


Install server를 선택해주시고 마인크래프트 서버가 설치될 경로를 지정해줍니다.



기본적으로 JAVA가 설치되어 있어야하고 설치방법에 대해서는 언급하지 않겠습니다.



간단하게 다운로드가 진행이 되면서 서버가 설치가 됨니다.



확인을 눌러서 설치를 완료합니다.



이제 forge-<version>-universal.jar 파일을 실행시킴니다.



이러한 창이 뜨면서 로그 창에 많은 오류가 나타 남니다.


이제 에러가 뜨는게 없어지면서 로그에 라이센스를 동의해달라는 메세지가 나타남니다. 그러면 서버를 종료하고 

이 파일을 열어서 라이센스에 동의 해줍니다.



false -> true로 변경!!!



서버가 실행되면서 마저 서버에 필요한 데이터들을 설치합니다.


Done이라는 메세지가 보이면 기본적인 마인크래프트 서버가 오픈 되었다. 다시 종료하고


이제 마지막으로 SpongeForge을 집어 넣게되면 SpongeForge를 이용한 마인크래프트가 완성된다.


http://files.minecraftforge.net/spongepowered


에서 SpongeForge를 위한 모드를 다운로드 한다.


그리고

폴더에가서 (없을 경우 생성한다 Forge-<version>-universal.jar파일이 위치한 디렉토리에 생성한다)


모드 파일을 넣어준다. 넣어주고 서버를 재 실행 하게 되면 SpongeForge가 적용된 마인크래프드가 완성이 되었다...


이제 플러그인을 제작하거나 모드를 제작하여서 추가적인 기능을 넣어보자!!

Posted by 준P

오늘은 명절 전 토요일 이라서 스터디를 참가하는 사람이 많지 않았습니다. ㅠㅠ


그래도 Node_Angular 스터디의 2팀(+1팀) 은 무려 5분이나 오셧다 시골 가시는 2분 제외하고 전원 참석!!!!!


이 외에도 유니티 스터디의 4분이 참석을 하셧고 꾀나 여러 많은 분들이 참석을 해주셧습니다.


이번주에는 홍대의 님의 행아웃을 통한 웨비나를 프로젝터를 통해 시청을 할려고 했으나 밝기나 높이등 문제로 시청하기에 문제가 생겨서 장소 뒤쪽에 있는 작은 공간에서 시청을 하게 되었습니다.



이건 티비뒤에 d-sub케이블을 연결하고 옆의 스피커를 통해 네트워크 스트리밍 속도와 끈킴이 있는지 테스트를 하기위한 영국남자 시청!!


처음에 로딩 속도가 느려서 많은 걱정을 했지만 문제 없이 자연스럽게 영상이 재생되네여 이정도면 행아웃으로 홍대의님의 웨비나를 듣는데에는 문제가 없다능!!!



홍대의 님의 아주 친절한 설명으로 기초부터 자주 헛갈리는 부분까지 캐치해주시면서 웨비나를 진행해주셧습니다.



Angular generation을 하는 방법을 천천히 보여주시면서 각 모듈이나 플러그인의 설명을 해주시면서 이것이 왜 쓰면서 기존 것과 다른점이 무었인지 알려주셧습니다.



안드로이드나 IOS의 앱처럼 만들수 있는 방법을 알려주시고!!!!!



웨비나가 끝난뒤 우리 2팀(+1팀) 은 남아서 열심히 코딩을 하는 시간을 가졌습니다.


프로젝트를 진행하면서 우려되는 부분과 몰랐던 부분이 해결되어서 아주 좋은 시간을 가질 수 있었습니다,

Posted by 준P

npm 은 기본적으로 package.json 이라는 파일에 의존하여서 프로젝트를 관리 합니다.


따라서 모듈을 설치할려면 package.json이란 파일을 편집해야 하고 귀찬게 여러 설정을 해야하는데 


이번에는 간단하게 그 설정을 하는 방법을 소개 하면서 Angular JS를 설치해 봅니다.


먼저 프로젝트 폴더에 가서 


npm init


으로 package.json 파일 및 간단한 설정을 해줍니다.


기본적으로 그냥 엔터를 치면 ( ) 으로 감싸저 있는 값으로 설정이 됨니다.


( ) 으로 감싸진 값이 없으면 설정이 되지 않거나 아예 설정 자체를 하지 않습니다.



간단하게 package.json을 만들었습니다.


자세히 보시면 npm으로 설치 할때 --save  옵션을 붙여주면 자동으로 package.json에 추가를 해준 답니다!!!!



간단하게 


npm install exress --save


명령어로 모듈을 추가하면서 package.json파일이 수정 되었습니다. 그리고 node_modules라는 디렉토리가 생성되었습니다.



저는 미리 Angular를 추가해서 미리 Angular가 있습니다. 참고 하시길..


node_modules 폴더에는 express가 추가 되었습니다.!!!


Posted by 준P

npm 은 기본적으로 package.json 이라는 파일에 의존하여서 프로젝트를 관리 합니다.


따라서 모듈을 설치할려면 package.json이란 파일을 편집해야 하고 귀찬게 여러 설정을 해야하는데 


이번에는 간단하게 그 설정을 하는 방법을 소개 하면서 Angular JS를 설치해 봅니다.


먼저 프로젝트 폴더에 가서 


npm init


으로 package.json 파일 및 간단한 설정을 해줍니다.


기본적으로 그냥 엔터를 치면 ( ) 으로 감싸저 있는 값으로 설정이 됨니다.


( ) 으로 감싸진 값이 없으면 설정이 되지 않거나 아예 설정 자체를 하지 않습니다.



간단하게 package.json 파일을 만들었습니다.


여기서 자세히 보면 npm 으로 설치를 할떄 마지막에 --save 를 붙여주면 자동으로 package.json에 추가 해준다고 나와있네여



npm install angular --save


명령어로 angular를 프로젝트에 모듈로 설치를 했습니다.


package.json파일을 보면 angular js 가 추가적으로 있는것을 알수 있습니다.



또한 폴더 하나가 추가되는데 node_modules 라고 모듈을 모아 두는곳이 있습니다.


이곳 안에 Angular JS  모듈이 있습니다.

Posted by 준P

c++에서는 클래스에 소멸자 개념이 있다. 


헌데 c언어는 절차 지향 언어라서 OPP개념인 소멸자는 없다...


헌데 c언어에서도 메인 함수가 종료되기 전에 함수 하나를 실행 할수 있다.


프로그램 종료 하기전에 꼭 처리해야 하는 것이 있으면 좋을거 같다.





코드만 보면 printf 함수를 마지막으로 어떤한 함수는 호출되지 않았습니다.


허나 컴파일 해서 보면 


beforeexit함수가 실행되었습니다.


atexit함수로 종료할떄 실행한것 인데요


이 함수는 어떠한 리턴 형태를 가질수 없고 어떠한 인자를 가질 수는 없습니다.



Posted by 준P



접속을 해보니 두명의 사용자가 공우 메모리를 통해 은밀한  대화를 한다네여


키 값만 알려주는데 공유메모리는 무한정 할당 되는것이 아니기 떄문에 얼마나 할당 되었는지 알아야  합니다.


ipcs -m 명령어로 얼마나 할당 되었는지 알수 있습니다.



1028 바이트나 할당 되었네여


자 이제 프로그램을 하나 작성해서 공유 메모리의 대화 내용을 봅시다.

참고로 level10의 홈 디렉토리는 쓰기 권한이 없으므로 tmp 폴더로 가서 제작을 하셔야 합니다.



'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level9  (0) 2016.01.03
[FTZ] hackerschool level8  (0) 2016.01.03
[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
Posted by 준P



접속 해보니 처음으로 bof 문제가 나왔다.


배열의 크기가 10 인데 최대로 입력받을수 있는 크기는 40이다.


배열의 특징은 배열 크기 뒤의 배열 끝을 알리는 null 배열이 있다. 또한 이 뒤에 배열을 시작 하기 전으로 돌아가기 위해 몇가지 주소가 담겨져 있다 이크기는 배열 4 칸만 큼 지니고 있어서 


총 기본 배열 10 + null 배열 1 + 기타 배열 4 = 15 


그리고 buf2에 go가 들어가야 하므로 



'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level10  (0) 2016.01.03
[FTZ] hackerschool level8  (0) 2016.01.03
[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
Posted by 준P



접속을 해보니 힌트에 용량이 2700인 shadow파일을 찾으란다......(그만 찾자!!!)


참고로 shadow파일은 /etc/passwd 파일의 계정 비번이 들어 있는 파일이다. (서로 연관성 있는 파일이다.)



찾아보니 총 4개의 파일이 나왔는데 하나는 이미지 2개는 앞축 파일이다. 그래서 나머지 텍스트 파일을 열어보니


level9의 키가 들어 있다.


shadow 파일의 2번째필드에는 비밀번호가 암호화되어서 들어 있다.


john the ripper로 풀수 있다고 한다.


http://www.openwall.com/john/


크랙커를 다운받고 src 폴더에서 ./configure 한뒤 make -s 하면 run 폴더에 john파일이 생성 되면서 크래커를 실행할수 있다.


found.txt 파일의 내용 한줄을 복사한뒤 일반 파일로 저장한뒤


./join <저장한 파일>하면 자동으로 풀린다.




'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level10  (0) 2016.01.03
[FTZ] hackerschool level9  (0) 2016.01.03
[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
Posted by 준P

이번 문제는 새로 ssh로 level6로 로그인 해서 푸는 문제이다.




옛날 인터넷 에서 많이 쓰던 해킹 기법이라는데 여기서 그냥 아무렇게나 엔터를 치면 



접속 메뉴가 나오는데 여기서는 어떠한 해킹은 불가능 하다. 



하지만 이때 ctrl + c를 해주면 쉘로 넘어가진다.



'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level9  (0) 2016.01.03
[FTZ] hackerschool level8  (0) 2016.01.03
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
[FTZ] hackerschool level3  (0) 2016.01.02
Posted by 준P



접속해보면 level5 란프로그램은 /tmp 폴더에 level5.tmp라는 파일을 생성한다고 한다.


그래서 level5 프로그램을 실행하고 파일을 열어봐야한다.

그냥 비번을 알려준다.


'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level8  (0) 2016.01.03
[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
[FTZ] hackerschool level3  (0) 2016.01.02
[FTZ] hackerschool level2  (0) 2016.01.02
Posted by 준P



FTZ에 접속을 해보니 힌트에 누가 백도어를 심어 놓았다는 것이다!!(이런 나쁜놈!!)


/etc/xinetd.d폴더에 가보니


아주 대놓고 백도어라고 써있다.


열어보니


finger서비스이다.


처음에 finger서비스를 찾아보았지만


finger 자체 취약점이 아니라 서비스가 실행되면서 /home/level4/tmp/ 경로에서 backdoor라는 프로그램을 실행시키는 것이다.


따라서 /home/level4/tmp 폴더에 가보니 

아무 파일도 없다..


따라서 새로 파일을 만들어서 finger를 실행 했을때 같이 실행되도록 해야한다.


backdoor.c


#include <stdio.h>

#include <stdlib.h>

int main(){

system("my-pass");

}





'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level3  (0) 2016.01.02
[FTZ] hackerschool level2  (0) 2016.01.02
[FTZ] hackerschool level1  (0) 2015.12.24
Posted by 준P


접속을 해보면 hint에 소스코드가 있다.


간단하게 dig명령어를 실행시켜주는 프로그램 인데 보기만 해도 취약해 보인다.


추가적인 힌트로 동시에 여려명령어를 실행하면 어떻게 될까? 


리눅스에서는 세미콜론(;)으로 동시에 여러 명령어를 실행할수 있다.


또한 작은 따음표(')로 묶어서 하나의 인자로 보넬수도 있다.


이러한 특성을 이용해서


autodig ' ;/bin/bash;'


명령어로 level4의 쉘을 얻을 수 있다.



level4이다.!!!

'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
[FTZ] hackerschool level2  (0) 2016.01.02
[FTZ] hackerschool level1  (0) 2015.12.24
Posted by 준P



ftz에 로그인 해보니 힌드에 파일 편집중에 쉘 명령어를 실행 할수 있다고 한다.


vi 편집기에서 명령 모드에서는 ! <명령어>를 통해 쉘 명령어를 실행이 가능하다.


그러나 level3로 올라가기위해서는 level3의 권한을 가지고 있는 에디터 여야 한다.


따라서 level3의 유저 레벨의 권한을 가지고 있는 에디터를 찾아야 한다.



editor를 실행하면 



:! /bin/bash 명령어로 쉘을 실행 시키자!!


level3이다.



'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
[FTZ] hackerschool level3  (0) 2016.01.02
[FTZ] hackerschool level1  (0) 2015.12.24
Posted by 준P

리눅스에서 터미널로 작업을 하다보면 이 파일이 실행 파일인지 아니면 디렉트리 인지 그냥 일반 파일인지 구분을 해야하는데


이기능을 터미널에서는 문자 색상으로 구분을 해서 보여준다.


하지만 이것을 커스텀으로 자신이 원하는 색상으로 변경하여 사용할수 있다.


여기서 중요한것은 자신의 터미널 프로그램의 설정이다.


몇몇 터미널 프로그램은 쉘 설정 보다 프로그램의 프로파일을 우선시 하는경우가 있기 떄문이다.


이경우에는 아무리 색상을 변경하더라도 변경되지 않는다.


색상은 모든 컬러를 사용할수 있지 않고 ANSI코드를 사용하여 나타내기 때문에 제한적이다.





파일 종류 


디렉토리 di

일반파일 fi

실행파일 ex

링크파일 ln

소켓파일 so

블록장치 bd (하드 디스크나 USB같은 장치) Block Device

캐릭터 장치 cd(플로피 프린터 같은 장치) Character Device 

텍스트 파일 no

named pipe pi


예로 export LS_COLORS="di=01;34":"fi=01;32":"ex=01;37":"ln=01;36":"so=01;31"

Posted by 준P

인터넷을 이용하다보면 인터넷이 느려지거나 트래픽이 제대로 전달 되지 않는 경우가 있다. 또는 해커나 운용비용을 최소화 하기 위해 이용된다.


이러한 경우에 대처하거나 예방하기위해 네트워크를 관리하는데 네트워크 관리 5대 업무를 FCAPS라고 한다.


Fault 장비가 고장나거나 네트워크 전체에 영향이 끼치지 않도록 격리 또는 수리


Configuration 네트워크의 구조나 설정을 파악하고 촤대한의 성능을 발휘하도록 구성을 조정한다.


Accounting 네트워크 이용자의 이용량을 파악 하여 분산 및 비용 계산


Performance 네트워크 성능 저하를 탐지하고 원인을 분석하여 최적화 


Security 정상적인 사용자만 접근허용 하여 통제 한다. 장비의 보안 이슈을 해결하고 해킹 및 침입 대응한다.


이렇게 네트워크 분석을 할려면 몇가지 법적 문제를 알고 있어야 하는데


네트워크를 분석 하면서 오히여 네트워크 소유자에게 패킷 도청이나 개인정보 유출등 악의적인 목적으로 이용될수 있음


분석 도구를 이용하여 허가되지 않은 네트워크를 분석 하는 경우는 법적 처벌을 받을수 있음


네트워크 분석을 할때 분석 내용 작업 일시를 공지하고 허가를 받아야함



Posted by 준P

리눅스에서는 파일 및 폴더에 접근권한 또는 실행 권한 과 같은 권한들 두어서 관리를 한다.


크게 특수권한, 읽기 권한, 쓰기 권한, 실행 권한이 있다.


chmod 명령어로 설정이 가능하며 소유자, 소유그룹, 다른사용자에 대한 설정이 가능하다


읽기 권한은 4


쓰기 권한은 2


실행 권한은 1


로 구성이 되어 있으며 권한의 합계에 의한 권한을 설정 할수 있다.


소유자, 소유 그룹, 다른 사용자 순으로 권한을 나열하여 표시하여서 표기 한다.



프로그램에 대해 권한을 부여 한다면 


소유자는 모든 권한을 가지고 있고 소유그룹은 읽기 실행 권한 다른사용자는 읽기 권한만 있을때 값은


소유 자     : 읽기 4 + 쓰기 2 + 실행 1 = 7

소유 그룹 : 읽기 4 +            +실행 1 = 5

다른사용자: 읽기 4                           = 4


754로 설정한다.,


이것은 보편적인 권한 설정이고 여기에 추가로 앞에 추가 권한이 붙는다.


이 특수 권한은 다른 사용자의 접근을 차단하거나 수정을 금지하고 권한을 빌려올수 있는 특별한 권한이다.


보편적인 권한의 맨앞에 붙으며 보안상 관리가 필요한 권한이다.


sticky bit  1


sticky bit는 다른 사용자가 삭제 하거나 이름 변경을 하지 못하도록 막음


허나 디렉토리 생성이나 파일생성은 자유롭다. 이와같은 특징떄문에 공유폴더와 같은 여러 사용자가 사용하는 폴더에서 사용



setgid 2 


setgid는 다른 그룹보다 소유권을 우선적으로 얻을수 있다.


setgid가 디렉토리에 설정이 되면 그 하위 파일들에 생성된 파일들은 해당 그룹에 우선적으로 소유권을 같는다.



setuid 4 


setuid는 파일 이나 프로그램 실행시 해당 소유자의 권한을 빌려올수 있다.


/etc/password 와 같은 파일은 root 사용자 또는 root 그룹 만 수정이나 읽기가 가능하다 


허나 setuid가 설정 되어 있으면 root 사용자의 권한을 빌려서 읽거나 쓰기가 가능하다. 



 

특수 권한  

소유자

 소유 그룹  

 다른 사용자  

 1

 sticky bit

 x

 x

 x

 2

 setgid

 w

 w

 w

 4

 setuid

 r

 r

 r


ls 명령어로 파일이나 디렉토리를 을 보면 보편적으로 


DWRX - WRX - WRX


로 표기가 된다 만약 특수 권한이 설정이 되면


sticky bit 가 설정이 되면 
DWRX - WRX - WRT

로 설정 된것이 보인다.


sticky bit는 마지막 다른 사용자 권한에서 변경이 된다.


실행권한이 없으면 대문자 T 실행권한이 있으면 소문자 t로 표기가 된다.



setgid 가 설정이되면 


DWRX - WRS - WRX

로 설정이 된것이 보인다. 


setgid는 소유 그룹 권한에서 설정이 된다


실행권한이 없으면 대문자 S 실행권한이 있으면 소문자 s로 변경이 된다.




setuid가 설정되면 


DWRS - WRX - WRX

로 설정이 된것이 보인다.


setuid는 소유자에게서 권한이 변경된것이 보이며


실행권한이 없으면 대문자 S 실행권한이 있으면 소문자 s로 변경이 된다.








Posted by 준P

hackerschool의 FTZ level1 문제이다.


FTZ에 접속을 해보니 두개의 디렉토리와 힌트 파일 하나 있다.



level2 권한의 setuid가 걸린 파일을 찾아서 해킹하라는것 같은데


나머지 디렉토리를 뒤져봐도 실행 파일을 찾을수  없다.


그렇다면 검색을 해봐야 하는데 리눅스에서는 find 명령어로 파일이나 디렉토리를 검색 할수 있다.


그런데 uid는 사용자 식별번호이다. setuid는 사용자의 권한을 사용하는것 인데 파일이나 디렉토리에는 특정 사용자만 사용가능하도록 설정이 가능하다.


보통 rwx로 알고 있는데 (또는 777) 여기서 특수 권한 으로 관리를 할 수 있다.


setuid 는 권한을 빌릴 수 있는 특수 권한이다.


4000번 이상으로 설정이 된다.


find명령어로 level2권한의 4000번 이상의 파일을 찾으면 된다.



주의 할점은 일반 유저 권한으로 찾기 때문에 퍼미션 오류가 뜨는 파일을 찾을수 있고 여러 파일을 찾을수 있다.


따라서 퍼미션 오류와 같은 에러 메세지는 출력 하지 않도록 출력 리다이렉션을 시킨다.


2> 는 오류메세지를 파일로 저장할수 있다.


/dev/null 은 휴지통이나 블랙홀 처럼 모든 파일을 없애 버린다. 즉 사라진다.


/dev/null에 저장한다는 것은 오류 메세지를 버린다는것과 같다.



실행 시켜 보니 단한가지의 명령어를 실행가능하다고 한다.


/bin/bash와 같은 쉘을 실행 시키면 그 유저의 쉘을 실행 시킬수 있다.


쉘의 uid가 level2로 변경됬다.


'System > FTZ' 카테고리의 다른 글

[FTZ] hackerschool level6  (0) 2016.01.02
[FTZ] hackerschool level5  (0) 2016.01.02
[FTZ] hackerschool level4  (0) 2016.01.02
[FTZ] hackerschool level3  (0) 2016.01.02
[FTZ] hackerschool level2  (0) 2016.01.02
Posted by 준P

리눅스에서는 사용자를 식별하는데 유저 아이디로 구분을 하는데 (UID) 양의 정수로 0부터 32767까지 사용한다(16비트)


특이하게 0은 무조건 슈퍼유저(root)이다. 


또한 시스템에 따라서 시스템 용도로 예약되어 있다. 보통은 1부터 100까지 이지만 레드헷은 101부터 499까지 데비안은 999까지 예약 해놓는다.


UID는 /etc/password 파일과 관련이 깊다. password파일은 사용자의 비번과 같은 정보가 담겨있어서 uid가 들어가면서 구분을 하기 떄문에 uid를 통해서 사용자를 찾을수 있다.


리눅스에서는 그룹을 통해서 사용자를 묶을수 있다. GID는 그룹 이이디로 사용자를 목적에 의해 분루 한것이다. 


루트의 그룹은 항상 0이다./etc/password와 /etc/group을 통해서 알수 있다.


id 명령어를 통해서 현제 자신의 그룹 과 id를 알 수 있다.

chmod 나 chgrp과 같은 명령어를 통해서 파일이나 디렉토리의 사용자를 변경 혹은 삭제를 가능하게 만들 수 있다.


수정할떄에는 수정할 파일의 수정 권한을 가지고 있는 유저에게서 실행해야 한다.


예 chmod 755 testfile


chmod user:user testfile


chgrp user testfile


chgrp (gid) testfile



참고로 수정을 하면 해당 파일이나 디렉토리만 적용이 되기 때문에 하위 폴더나 파일에 적용시킬려면-R 옵션을 추가 해야 한다.!

Posted by 준P