전체 보기
Level 21 → Level 22
이번에는 cron이라는 시간 기반 스케쥴러에 대해 다뤄보는 문제입니다. 문제에서 설명한 대로 /etc/cron.d/에 들어가서 확인해봅시다. 그리고 어떤 명령어가 실행되고 있는지까지 확인해보도록 하겠습니다. cd /etc/cron.d/; ls -l cat (3개의 파일들) 일단 형식을 살펴보도록 합시다. 별(*)이 5개인 것을 보니 이런 시간을 가지고 있습니다. 그리고 그다음에 오는 게 실행할 명령어인 것이죠. 매분마다 실행하고 있으니 잘 이용해봅시다. 저희는 현재 bandit22를 집중적으로 봐야 합니다. 그래서 위에서 가리킨 파일이 어떤지 먼저 확인해봤습니다. ls -l /usr/bin/cronjob_bandit22.sh bandit21의 권한이 있는 저희도 보고 실행할 수가 있군요. 내용은 이렇고요..
Level 20 → Level 21
ls -l 으로 먼저 확인해보니 다음과 같이 나타납니다. SetUID가 설정된 파일이 하나 나오는군요. 일단 그냥 써서 어떤 식으로 동작하는지 알아보도록 합시다. ./suconnect 인자로 port를 주면 localhost를 통해서 접속하여 현재의 비밀번호와 비교해 같으면 다음 level의 비밀번호를 전달해주는 것 같았습니다. 그럼 일단 nc 명령어로 localhost에서 9999 port를 열어줍시다. 그리고 해당 port로 접속하면 비교를 위한 현재의 비밀번호를 전달하도록 설정합시다. echo "GbKksEFF4yrVs6il55v6gwY5aVje5f0j" | nc -l localhost -p 9999 & (&: 리눅스 작업을 background에서 동작할 수 있게 합니다.) 그러고 나서 jobs 명..
cobolt
이번에도 GET으로 값을 전달해주는군요. 이전 문제와 다른 점이라고 한다면 역시 pw 부분에 들어가 있는 md5() 함수일 것입니다. md5는 hash 함수의 일종으로 매우 취약한 것으로 알려져 있습니다. md5() 라는 함수는 php에서 제공하는 함수지만 취약점이 알려진 경우는 md5('어떤 문자열', True) 경우뿐입니다. 그래서 저는 아예 pw 부분을 검사하지 않게 만들고 싶었죠. 그래서 주석문을 사용해 아예 무시해주도록 했습니다. 물론 밑에 id 조건에 의해 id는 admin 으로 전달해주고요. 더보기 * 다음에 주의하며 주석문을 써봅시다. (둘 다 가능합니다.) 통과!!
gremlin
처음 들어가서 본 문제는 다음과 같이 php 코드가 주어졌습니다. 일단 정답을 전달하는 방법은 GET이군요. ?id=(answer)&pw=(answer) 이런 식으로 전달해주면 되겠습니다. 이번 문제는 간단하게 '연산자 우선순위를 이용해서 풀어주면 됩니다. and 가 or 보다 우선순위가 높으니 and를 검사하고 or을 연산하게 될 것입니다. 그래서 ?id=wow&pw=wow' or '1'='1 을 해주게 되면 select id from prob_gremlin where id='wow' and pw='wow' or '1'=1' 이렇게 전달됨으로써 id와 pw 부분이 틀려서 0이 되더라도 뒤쪽 or이 참이기 때문에 최종적으로 조건문은 참이 되게 됩니다. PASS!
Intermediate Level 2
이전 문제와는 반대로 POST method를 사용해서 보내라고 하는군요. POST method는 GET method와는 달리 url로 데이터를 전달하지 않습니다. 그러므로 어쩔 수 없이 코딩을 해야겠군요. Python으로 작성한 코드입니다. 이렇게 하고 python post.py (파이썬 파일 이름을 post.py로 했습니다.)로 실행하면 성공!
Intermediate Level 1
GET method로 패스워드를 보내라고 하는군요. GET method란 url의 파라미터로 ?key1=value1&key2=value2&...&... 이렇게 사용합니다. 한번 바로 보내보도록 하죠. PASS!
Basic+ Level 3
이번 문제는 Adobe Flash의 동작 방식의 취약점을 알아볼 수 있는 문제이다. 이 문제의 문제점은... Flash의 지원이 끊김과 동시에 여러 방면으로 온라인 상에서의 지원도 많이 끊겨서 도움을 받을 수 있는 사이트들이 많이 없어졌다는 것입니다. 그래서 어쩔 수 없이 이전 포스팅된 글에서 소스에 대한 정보들만 얻고 나왔습니다ㅠ 이렇게 생긴 간단한 코드더군요. POST 방식으로 해당 URL에 score를 보내는 모양입니다. 그래서 간단하게 HTML 스크립트를 짜서 해결해보았습니다. 그리고 열어서 보이는 버튼을 클릭하면 해결! 다음으로 가보죠. [여담] 보안 강화로 인해 Proxy를 이용한 풀이는 어려워졌습니다. 금방 감지하여 페이지 전송을 중단하게 되어 http 같은 보안성이 약한 프로토콜을 사용할 ..
Basic+ Level 2
시작하자마자 User agent가 권한이 있지 않다면서 거부당했습니다. 그러면서 secure_user_agent 만이 허가된다고 하네요. 이 문제는 쉽습니다. Header에 전달될 때 User agent를 저희가 원하는 걸로 보내면 됩니다. User agent를 변경하기 위한 여러 좋은 방법들 가운데 저는 Chrome 확장 프로그램을 사용해서 해결해보도록 하겠습니다. 사용방법은 이 링크에서 보시면 됩니다. 먼저 Chrome 그룹에다가 추가합니다. 그리고 User agent를 'secure_user_agent'로 설정해줍니다. 나머지는 맘대로 설정해주셔도 상관없습니다. 두 번째로 우리가 풀고 있는 Domain에 대해서는 저희가 만든 User agent를 쓸 수 있도록 설정해주면 됩니다. 여전히 옵션 창 안..
Basic+ Level 1
b1.txt 파일을 다운받아서 숨겨진 메시지를 찾아보라고 합니다. 일단 열어봤습니다. 스크롤 보이시나요? 엄청 긴 문자열이 존재하고 알 수 없는 표시밖에 존재하지 않습니다. 그래서 이걸 Hex editor로 열어봤습니다. 처음 부분에 BM6~~ 뭐라뭐라 하고 존재합니다. 그래서 혹시 이미지 파일의 Header가 아닐까 싶어 구글링을 해봤습니다. 역시나. 이건 "Bitmap" 파일이었습니다. 바로 확장자를 .bmp로 바꿔주고 열어봤습니다. GOTCHA! 다음으로 넘어갑시다.