DoR@Hee의 끄적끄적
1-1 함수- 반복되는 부분을 쉽고 효과적으로 함수를 이용해서 관리 할 수 있다(코드의 유지보수)- 프로그램의 흐름을 일목연하게 볼 수 있다. 함수는 위와 같이 사용 할 수 있으며 위 함수를 해석하자면 이렇게 해석 할 수 있다."이 함수의 이름은 sum 입력 인수로 2개의 값을 받으며 결과값은 2개의 입력값을 더한 값 이다" 1-2 함수의 형태 1. 일반적인 함수 결과값을 받을 변수 = 함수명(입력인수1, 입력인수2) 2. 입력값이 없는 함수결과값을 받을 변수 = 함수명() 3. 결과값이 없는 함수힘수명(입력인수1, 입력인수2) 4. 입력값도 결과값도 없는 함수함수명() 5. 입력값(입력인수)가 몇 개 일지 모를 때입력변수 앞에 *을 붙이면 입력값들을 전부 모아서 튜플로 만들어 준다.ex) sum(1,2..
hint1. /usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다 tmp 폴더관련 문제인거 봐서는 스티키비트(1) 관련 문제인거 같다 ※스티키 비트(sticky bit) 는 해당 폴더를 공유폴더로 이용함으로써 자유롭게 이용할려고 만드는 권한이며디렉터리 생성은 가능하나 슈퍼유저, 파일 소유자를 제외하고는 파일 삭제를 못하는 권한이다. tmp는 역시 스티키비트가 설정되어있다. 일단 /usr/bin 폴더에 level5를 실행한 다음 임시디렉터리인 tmp폴더를 봤는대 아무것도 없다 삽질을 해본 결과 해당 tmp파일을 만들긴 하지만 바로 삭제하는 거같다. 그래서 level5.tmp라는 파일을 일단 만들고 다시 level5 를 실행해서 level5.tmp를 보..
1-1 while문-반복해서 문장을 수행해야 할 경우 사용하는 구문 기본 로직은 while 조건문:수행할 문장1수행할 문장2수행할 문장3 이렇게 구성되며while문과 비교연산자 등을 사용해서도 가능하다 조건문을 이용해서 while반복문을 강제로 빠져나가는것도 가능하며(break) 조건을 이용해서 맨 처음으로 돌아가게 할 수 도있다,(continue) 1-2 결론- 조건을 이용해서 사용가능한 반복문- break, continue를 이용 조건문을 중지하거나 다시 시작할 수 도 있다.
hint를 보면"누군구 /etc/xinetd.d에 백도어를 심어 놓았다." 여기서 xinetd는 오픈 소스 슈퍼 서버 데몬으로 인터넷 기반 연결을 관리한다.여기서 .d가 붙었으니 그걸 관리하는 디렉터리이다. 해당 디렉터리로 이동해보면 backdoor이라는 파일이 보인다.확인해보면 finger서비를 사용하고있다. 여기서 finger서비스란로그인 정보, 이메일, 예약 작업 정보 등을 볼 수 있는 명령어이다. finger 명령어에 대한 자세한 설명은http://www.linuxlab.co.kr/docs/01-06-5.htm여기에 설명이 잘 돼있다. 이런식으로 사용자의 정보를 볼 수 있다. server가 가르키는곳 /home/level4/tmp/backdoor를 찾아본 결과 아무것도 존재 하지 않는다.아마 로컬..
1-1 IF문 -조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 쓰이는 구문 if문은 조건을 판단하여 상황에 따라 수행하는데 로직을 구현하는데 쓰이는 구문이며, 위와 같이 로직이 구현된다.조건문이 참일 경우 if문 아래에 있는 1,2가 수행되고조건문이 거짓일 경우 A, B가 수행된다. ※주의점- if조건문: 바로 아래 문장부터 if문에 속하는 모든 문장에 들여쓰기를 해주어야한다.- 들여쓰기에는 2가지 방식이 존재하는대 (tab, space) 쓰는것은 괜찮으나 한가지만 사용해야한다. 여기서 들여쓰기를 안한다면 위와 같은 에러가 발생한다. 비교 연산자인 > < 를 이용해서도 조건문 사용이 가능한대"만약 돈이 3000원 이상 있거나 카드가 있다면 택시타고 가라!" 라는 구문이다.돈이 3000이상 없지만 o..
hint파일을 보도록 하자cat hint "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..."라고 되어있는걸봐선텍스트 파일 편집 기능이 있는vi, vim을 이용해서 푸는 문제인거 같다. 1번 문제와 마찬가지로 setuid 나 setgid가 설정돼있는 파일을 확인하기위해find / -perm +6000 -user level3 입력/usr/bin/editor 파일이 나왔다. 위와 같이 4750으로 권한이 설정돼있고 파일을 실행해보자 vim에디터가 나왔다.리눅스에는 많은 기능이 존재하는 에디터들이 존재하는데그 중에 vi에디터가 문제해답을 가져다 줄 거 같다. vi에디터에는 3가지 모드가 있다1. 입력 모드 - i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태 2. 명령 모드 -..
접속 후 파일목록을 확인하기 위해서ls -al 를 입력했더니 hint라는 파일이 보인다. 확인해보도록 한다. cat명령을 이용해서 hint 파일에 내용을 보니"level2 권한에 setuid가 걸린 파일을 찾는다." 여기서 setuid는 일반적으로 리눅스에는 파일에 권한이 생기는대(rwx)리눅스 파일을 실행할 때는 파일 실행자의 권한으로 실행된다. 하지만setuid(4) 가 걸린 파일은 파일 실행자의 권한이 아니라파일 생성자의 권한으로 실행된다.setuid 를 제외하고도 setgid(2)라고 파일 생성그룹에 권한으로 실행하는 법도 있다. 일단 파일권한을 찾기위해서 find 명령을 이용했다 입력한 명령어 : find / -perm +4000 -user level2find명령어는 특정 파일을 찾을 때 사용하..
1-1 변수- 자료형의 값을 저장하는 공간위와 같이 선언을 한다면 3이라는 값을 가지는 정수 자료형(a)이 자동으로 메모리에 생성된다.a는 변수 이름, 3이라는 정수형 객체가 저장된 메모리 위치를 가르키게 된다. a라는 변수가 3이라는 정수형 객체를 가르키고있다. 만약 두 변수가 같은 정수형 객체를 담고 있다면 메모리상 변수 구조는 위와 같은 것이다.여기서 객체를 가르키는 변수들의 개수를 레퍼런스 카운트 라고 한다. 자료형에 참조 개수를 알려주는 sys.getrefcount 함수를 사용해보면참조변수 개수를 알 수 있다.튜플로 a,b에 값에 각 각 대입할 수 있으며튜플부분은 ( )를 생략해도 된다.또한 여러 개의 변수에 같은 값을 대입할 수 있다. 1-2 메모리에 생성된 변수 없애기 변수는 레퍼런스 카운트..