728x90
반응형

해킹 81

OverTheWire [Leviathan Level 0]

Leviathan Level 0 입니다. 레비아탄은 시스템 해킹 워게임이며, Bandit 워게임보다 한 단계 위에 있는 문제들로 총 8단계 구성되어 있습니다. 또한 문제마다 해결 방법에 대한 설명이 있던 Bandit과는 다르게, 아무런 설명이 없는 점이 특징입니다. 공식 홈페이지 : https://overthewire.org/wargames/leviathan/ 주소 : leviathan.labs.overthewire.org 포트 : 2223 계정 : leviathan0 password : leviathan0 저는 putty 프로그램을 이용해 접속할 것이며, 자세한 접속 방법은 https://yskisking.tistory.com/37 이곳을 참고하시기 바랍니다. 주소와 포트만 바꾸어 접속하시면 됩니다. ..

OverTheWire [Natas Level 22]

Natas Level 22 입니다. Level 22 메인 페이지 입니다. 보시다시피 텅 비어있습니다. 소스코드를 살펴봅시다. 소스코드입니다. 위, 아래로 크게 두 부분이 있는데요 첫번째는 GET방식으로 받은 요청에 "revelio" 가 존재하고 현재 세션이 admin이 "아닐 경우" header 함수에 의해 /(메인페이지) 위치로 리다이렉션 되는 함수입니다. 두번째는 GET방식으로 받은 요청에 "revelio" 가 존재할 경우 다음 레벨의 password를 출력합니다. 음.... 그러니까 GET방식으로 revelio 를 입력하면 되는 것 아닌가? 입력해 보겠습니다. URL에 그대로 입력해도 됩니다. (GET방식은 URL상에 그대로 모든 파라미터가 노출되는 방식입니다) revelio=1 입력했습니다. 그러..

Hacking/[Web]Natas 2023.04.05

OverTheWire [Natas Level 21]

Natas Level 21 입니다. 메인 페이지 입니다. 저번 레벨과 같이, natas22의 password를 얻고 싶다면 admin 계정으로 로그인 하라고 합니다. 특이하게도, natas21-experimenter 페이지와 환경을 공유한다고 합니다. experimenter 페이지입니다. 편의상 페이지2라고 하겠습니다. 해당 페이지엔 css관련 설정을 할 수 있는 폼이 있군요. 일단 각 페이지 소스코드를 살펴봅시다. password출력 조건문이 존재하는군요. password를 직접 획득할 수 있는 페이지는 이곳인 것 같습니다. 세션명 "admin" , value값은 1일 때 password를 출력합니다. 저번 레벨과 조건 자체는 같군요. 페이지2 소스코드입니다. css 값들을 입력받아 적용하는 코드인 것..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Natas Level 20]

Natas Level 20 입니다. 현재 일반 유저로 로그인 되어 있으며, admin 계정으로 로그인하여 natas21의 password를 획득하라고 합니다. "admin" 입력하고 Change name 버튼을 눌러보니 아무런 변화도 없습니다. 소스코드를 살펴봅시다. 조금 길군요 일단 아래쪽을 보시면, session_set_save_handler 함수를 사용하는 것을 알 수 있습니다. 해당 함수에 의해 세션이 처리되고, 세션값이 세션 파일에 수동으로 저장됩니다. 위쪽 print_credentials() 함수는 password를 출력해주는 함수인데, 출력 조건은 세션명이 admin 이고, 해당 값이 1 이어야 합니다. 쉽게 말해서 key = admin , value = 1 이어야 한다는 것입니다. 이건 m..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Natas Level 19]

Natas Level 19 입니다. 저번 문제와 비슷하지만 약간 다릅니다. Level 19 문제입니다.이전 레벨과 거의 동일한 코드를 사용하지만, 세션ID가 순차적이지 않다고 합니다. 이전 레벨의 세션값은 1~640 중에 하나의 숫자였죠. 따라서 brute force 공격을 하기가 용이했습니다. 그러나 세션값이 순차적이지 않으면.. 코드를 짤 기준이 있어야 자동화 프로그램을 만드는데, 그게 어려워 집니다. 완전히 랜덤으로 생성되는 것일까요? 일단 현재 세션값을 확인해 봅시다. 개발자도구(F12) -> Application -> Cookies id password 아무렇게나 입력하고, 세션값을 확인해 보았습니다. 세션값은 "3235372d6868" 이군요... 정말 랜덤인 걸까요? 혹시 세션값 생성에 대한..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Bandit Level 32, 마지막 레벨]

Bandit Level 32입니다. 드디어 마지막 문제로군요. 정확히 해석이 안되는데.. 이 모든 문제들을 푼 후엔 다른 워게임 문제를 풀으라는.. 대충 그런 식의 말인듯 합니다 우리가 아는 bash 쉘이 아니군요. 대문자 쉘에 오신 것을 환영합니다? 일단 쉘은 sh쉘 이로군요. 모든 입력값을 대문자로 받아들이는 쉘인듯 합니다. 음,,, 뭘 입력해도 안 되더군요. 리눅스에서 대문자를 쓰는 명령어가 무엇이 있을까? 생각을 해봤는데 환경변수가 있었습니다. 그러나 환경변수 목록을 찾아보고, 이용할 만한 게 있나 여러가지 확인해 봤지만 결정적인 건 찾을 수 없었습니다. $0 하지만 $0 환경변수로 해결할 수 있었습니다. $0는 현재 쉘을 반환하는 환경변수 인데요, 그냥 사용하면 쉘이 하나 더 켜지게 됩니다. (..

OverTheWire [Bandit Level 31]

Bandit Level 31 입니다. 다시 한번 git 문제입니다. 해당 git 저장소에서 password를 찾아야 합니다. 이번에도 역시나 /tmp 경로에 디렉터리를 생성한 후, git clone명령어로 다운받아 옵시다. 다운로드해준 후, 파일을 확인해 봅시다. 이번엔 저장소에 파일을 push(업로드) 하라고 하네요. 파일명 : key.txt 내용 : May I come in? Branch : master 위와 같은 조건으로 push 해야 할 듯 합니다. 먼저 key.txt 파일을 제작해 주도록 합시다. vi를 이용하여 key.txt 파일을 제작하였습니다. 이제 이 파일을 push해주면 되겠습니다. git add -f key.txt git add -f : 파일 업로드를 위해 디렉터리상의 변경 내용을 스..

OverTheWire [Bandit Level 30]

Bandit Level 30 입니다. 이번에도 git 문제입니다. /tmp 경로에 디렉터리를 만들고 repo 를 다운받아 옵시다. git clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repo 따로 생성한 디렉터리로 이동 후 해당 명령어를 입력하여 다운받아 주시기 바랍니다. repo 디렉터리 안의 README.md 파일을 읽어보았는데요, 별다른 내용이 없습니다. commit과 branch를 확인해 봅시다. commit은 한개 뿐이고, 특별한 내용이 없습니다. branch도 현재 사용중인 master 한개 뿐입니다. remotes/origin/HEAD -> origin/master 문구는 현재 사용중인 branch를 의미합니다. commit도 없고,..

OverTheWire [Bandit Level 29]

Bandit Level 29입니다. 슬슬 끝이 보여가고 있네요. 이번에도 Git 을 이용한 문제입니다. 문제는 저번 문제와 동일합니다. 해당 git 저장소에서 password를 찾아야 합니다. 저번처럼 /tmp 경로에 디렉터리를 만들고 해당 경로에서 작업해 줍시다. git clone ssh://bandit29-git@localhost:2220/home/bandit29-git/repo 명령어로 repo 디렉터리를 다운로드 했습니다. 그리고 repo 디렉터리에 있는 README.md 파일을 읽어봤더니 위와 같은 내용이 있군요. no passwords in production! password가 없다는데요.. 일단 commit 부터 살펴봅시다. git log 2개의 commit이 있습니다. 둘 다 확인해 보도..

OverTheWire [Bandit Level 28]

Bandit Level 28입니다. 이번에도 Git을 사용하는 문제입니다. 문제는 저번 레벨과 동일합니다. git을 이용해서 저장된 password를 찾으면 됩니다. /tmp 경로에 작업공간을 생성해 주고, git clone ssh://bandit28-git@localhost:2220/home/bandit28-git/repo git clone 명령어를 이용해 다운받아 줍시다. repo디렉터리에 있는 REAME.md 파일을 읽어 봤더니, bandit29의 자격증명이 존재합니다. 하지만 password가 xxxxxxxxxx 로 읽을 수 없게 되어 있군요. git log git log : 데이터가 수정되었던 내역들을 확인할 수 있습니다. ( commit을 확인하는 겁니다 ) 3개의 commit이 있는데요, 맨..

728x90
반응형