본문 바로가기

WARGAME

(51)
ftz level 4 [level4] 우선 무슨 말인지 모르겠지만 저 경로에 백도어를 심어두었다고 하니 한번 이동해서 확인해보자. backdoor 라는 파일을 볼 수 있다. 한번 cat 으로 까보자. 까보면 finger 라는 서비스가 선언되어 있고, user 의 권한으로 server 의 파일을 동작시키는 걸로 유추할 수 있다. 즉, /home/level4/tmp 아래에 backdoor 를 level5 의 권한으로 실행시키는 것이기 때문에, 이 위치의 backdoor 파일에 my-pass 를 출력하도록 하는 명령어를 넣을 수 있다면 문제 해결일 것이다. 그럼 일단 /home/level4/tmp 로 이동하여 backdoor 를 확인해보자. ? 이 위치에 backdoor 가 없기 때문에 만들어야 한다. level5 password 를 알아내야하기..
ftz level 3 [level3] level3으로 접속한 후 힌트 확인. 우선 argc!=2 이면 exit 한다는 것은, 실행파일 실행 시 인자가 1개가 아니라면 바로 종료를 의미한다. 즉, 인자 1개만 함께 입력해주어야 한다는 것. 인자 1개를 입력하고 나면 cmd 라는 버퍼에 "dig @" 라는 문자열을 넣고, 입력한 인자를 덧붙이고, 마지막으로 " version.bind chaos txt" 를 덧붙여서 system 함수로 실행시킨다. 여기서 힌트가 '동시에 여러 명령어를 사용해라' 이므로 아마 dig @ 입력 후에 명령어를 자르고, 다음 명령어로 내가 입력한 문자열이 실행되게 한 후 명령어를 또 자르고, 마지막 version.bind chaos txt 가 명령어로 들어가도록 하라는 것일 것이다. 여기엔 ; 를 사용하면 될 것 같고,..
ftz level 2 [level2] 텍스트 파일 편집은 vi 일 것이고, vi 상에서 쉘의 명령을 실행시킬 수 있다고 하니 우선 level1 에서 level2 의 권한을 가진 setuid 파일을 찾았듯이 똑같이 level3 권한을 가진 파일을 찾아보자. permission denied 사이에 있는 /usr/bin/editor 발견. 디렉토리 이동을 한 후 editor 를 확인한다. 실행시켜보자. vi 편집기가 실행된다. vi 편집기에서 외부 쉘 명령어를 입력할 수 있도록 ! 를 사용하여 배시쉘로 접근한다. 쉘을 딴 후, level3 권한으로 my-pass 를 입력하면, level3 password 획득! "can you fly?"
ftz level 1 [level1] 우선 ls -al 로 파일들을 확인해보았다. 별다른 설정된 파일들을 찾을 수 없다. 따라서 명령어를 사용해서 파일을 찾아본다. 이므로 find 명령어 사용. level2 권한이므로 -user level2 를 옵션으로 사용, setuid 가 걸린 파일을 찾는 것이기 때문에 퍼미션 -4000 옵션 사용. 퍼미션 디나이 사이에 /bin/ExecuteMe 파일이 보인다. 한번 실행시켜 보자. my-pass 가 입력이 안되므로 cat my-pass 등은 먹히지 않을 것 같지만 그래도 system 함수를 한번 사용해봤다. 나오지 않는다. 따라서 level2 권한으로 실행 시킬수 있다는 점에 다시 집중해서 쉘을 띄워봤다. 배시 쉘에 들어간 후 my-pass 를 띄우니 level2 pw 획득 성공 ! "hacker o..
webhacking.kr / Old-1. php [write-up] 오랜만에 웹 워게임을 풀어보는 것 같다. 그럼 시작 ㅎㅎ 소스보기를 눌러보자. 디폴트 user_lv 쿠키 값은 1로 설정해둔 것으로 보인다. 아래 부분 php 를 보면 user_lv 쿠키가 6이상이면 다시 1로 설정, 5 초과면 solve 인 것도 볼 수 있다. 5 초과 6 미만인 수를 쿠키의 user_lv 값으로 설정하면 풀릴 것 같다. 쿠키 값을 변경하기 위해서 editcookie 를 사용한다. 1로 설정되어 있던 값을 5.5로 변경해주었다. 새로고침하면, 엄청 간단하게 해결!
webhacking.kr / Old-25. php [write-up] 개발자 도구로 열어봐도 별거 없어보이고 해서 url 에 file = flag 를 입력해봤다. flag 가 코드안에 있다고 한다. 아무리 살펴봐도 모르겠어서 구글링을 해보았다. php wrapper 라는 것을 이용해 filter 기능을 사용하면 된다고 하는데.. 잘 모르겠어서 형태를 먼저 살펴보았다. php://filter/convert.base64-encode/resource= 이런 식으로 사용하고, 알고 싶은 php 파일의 이름을 맨 끝에 적어서 url 에 전송하면 되는 것 같다. 우리는 flag.php 를 봐야하니까 php://filter/convert.base64-encode/resource=flag 를 입력하면, flag 가 base64로 인코딩된 값이 필드에 출력되게 된다. 이렇게! 이제 여기 ..
webhacking.kr / Old-58. javascript [write-up] 우선 맨 밑에 send 가 궁금하니까 a를 입력해본다. command not found ! 콘솔창인가보다. ls 를 쳐보자. js 파일과 html 파일이 보인다. 이 둘은 역시 먹히지 않는다. cat flag 도 먹히지 않고, flag 를 입력하니 권한이 없다고 나온다. 이럴땐.. 개발자 도구!!!! 음 username 이 현재 guest 인데 한번 admin 으로 바꿔보자. 이렇게 오른쪽에서 admin 으로 변환해주고 flag 를 입력해도 아무런 변화가 없었다. 그래서 구글링을 해보니 소켓을 콘솔에서 전송해보면 되는 것 같다. 문법을 자세히 모르는채로 마구잡이로 입력하다보니 계속 실패.. 계속 도전하다가 성공!! auth 에 제출하면 58번 해결.
webhacking.kr / Old-34. javascript [write-up] 확인 버튼을 누르면 그냥 검정색 화면이 뜬다. 개발자 도구로 확인해보자. 아찔2.... 구글링 해보니 이 엄청난 문자열을 보기 편하게 바꿔주는 javascript beautifier 를 사용해서 보기 편하게 변경할 수 있을 것 같다. 예쁘게 변환된 코드로 다시 보자. 예쁘게 정리되어도 뭐 꽤나 길게 변환된 이 소스에서 alert 를 먼저 찾아보자. if 문에 적힌 조건대로 입력했을 때와, else 에 적힌 조건대로 입력했을 때의 차이를 보면, 먼저 콘솔 창에 alert(b('0x1e', '14cN')); 를 입력했을 때에는 그냥 처음에 문제 페이지에 들어올 때의 alert 가 나오는 걸 볼 수 있다. 그래서 if 문의 alert(b('0x1b', 'RLUb')); 를 입력해보았다. password 라는 ..