728x90
반응형

해킹 81

OverTheWire [Bandit Level 6]

Bandit Level 6 입니다. password는 서버 어딘가에 저장되어 있다고 합니다. password 파일의 특징은, 1. 소유자 bandit7 2. 소유그룹 bandit6 3. 파일크기 33byte 이라고 합니다. 이번엔 inhere 디렉터리가 아닌, 시스템 전체 어딘가에 있다고 하네요. 홈 디렉터리엔 아무것도 없군요. find 명령어로 찾아야 할 것 같습니다. find / -user bandit7 -group bandit6 -size 33c 2>/dev/null -exec cat {} \; / : 루트 디렉터리 이하(시스템 전체)에서 찾아라 -user bandit7 : 소유자가 bandit7 -group bandit6 : 소유그룹이 bandit6 -size 33c : 파일크기가 33byte 2..

OverTheWire [Bandit Level 5]

Bandit Level 5 입니다. password는 "inhere" 디렉터리 안에 존재한다고 합니다. password 파일의 조건은 1. 사람이 읽을 수 있음 (ASCII text?) 2. 파일크기가 1033byte 3. 실행 불가 라고 합니다. 오.. 파일이 엄청나게 많습니다. 이 많은 파일 중에서 password 파일을 어떻게 찾죠? 음.. find 명령어를 이용하면 될 것 같습니다! find ./ -size 1033c 2>/dev/null find : 찾기 명령어 ./ : 현재 디렉터리 이하에서 찾아라 -size : 파일크기를 조건으로 거는 옵션 1033c : 1033byte 를 의미함 2>/dev/null : 표준에러를 /dev/null 경로로 보내라 파일의 특징은 3가지가 제시되었지만, 저는 ..

OverTheWire [Bandit Level 4]

Bandit Level 4 입니다. inhere 디렉터리 안에 사람이 읽을 수 있는 파일에 password가 저장되어 있다고 합니다. 터미널이 먹통이 되면 reset 커맨드를 입력하라고 하네요. 어떤 문제길래? inhere 디렉터리 입니다. 파일이 10개가 있는데요.. 뭐가 password가 저장된 파일일까요? cat ./-file00 파일들을 읽어봤더니, 이상한 문자가 출력되고 읽히지가 않습니다. 10개의 파일 중 뭐가 읽을 수 있는 파일인지 모르겠습니다. 이럴 때 사용할 수 있는 방법은 "file" 명령어를 이용하여 파일의 형식을 확인하는 것입니다. file ./-file00 파일 00,04,06은 data, 그리고 ..뭐 이상한 걸로 되어 있는데 07번은 ASCII text 로군요 ASCII cod..

OverTheWire [Bandit Level 3]

Bandit Level 3 입니다. password파일은 "inhere" 디렉터리 안에 숨김파일로 존재한다고 합니다. 확인해 봅시다. ls 홈 디렉터리에 "inhere" 디렉터리가 존재합니다. cd inhere/ inhere 디렉터리로 이동하라. cd : 디렉터리를 이동할 수 있는 명령어 저는 Tab으로 자동완성 했기 때문에 inhere 뒤에 /(슬래시) 가 붙었습니다. /는 입력하셔도 되고 빼셔도 됩니다. 그리고 ls 를 눌러 디렉터리 내용물을 확인했는데, 아무것도 없습니다. 당연합니다. password 파일은 숨김파일 이라고 했으니까요. ls -a ls -a : 숨김 파일까지 출력하는 옵션 자, 숨겨진 파일인 ".hidden" 을 발견했습니다. 저 파일을 읽으면 password를 획득할 수 있습니다...

OverTheWire [Bandit Level 2]

Bandit Level 2 입니다. "spaces in this filename" 이라는 파일에 password가 저장되어 있다고 합니다. ls -al ls -a : 숨김파일도 표시함 ls -l : 파일정보를 상세히 표시함 파일명 앞에 "." 이 붙으면 숨김파일임 자, spaces in this filename 파일을 발견하였습니다. 저게 하나의 파일입니다. 저걸 읽어 봅시다. cat spaces in this filename 그런데.. 공백 때문에 하나의 파일이 아닌 여러개의 파일로 인식합니다. 저 긴 파일명을 하나의 파일로 인식하게 하려면 어떻게 해야 할까요? 방법은 "(더블쿼터)로 묶어주는 것입니다. 또는 '(싱글쿼터)로 묶어도 됩니다. 저렇게 묶어줄 경우 시스템이 하나의 문자열로 인식하게 됩니다...

OverTheWire [Bandit Level 1]

Bandit Level 1 입니다. password는 홈 디렉터리에 있는 "-" 라는 파일에 저장되어 있다고 합니다. ls "-" 파일이 존재하는군요. 읽어 봅시다. cat - 근데 아무것도 뜨질 않습니다. 무엇이 문제인 걸까요? 보통 - 문자는, 명령어 뒤에 옵션을 전달하는 용도로 사용됩니다. cat -b cat -e 이런 식으로 말이죠. 따라서 cat - 라고 입력할 경우, 시스템이 옵션을 사용하려는 것으로 인식하여 "-" 가 파일명으로 인식되지 않는 것입니다. 따라서 "-" 를 파일명으로 인식하게 해야 합니다. 참고로 저렇게 되서 먹통일 경우에는 Ctrl+C 눌러주시면 됩니다. 윈도우에서는 복사기능이지만, 리눅스에서는 "현재 진행중인 작업 취소" 정도로 이해하시면 될 것 같습니다. 그 방법은, 앞에..

시스템해킹 워게임 / 시스템해킹 입문 / 시스템해킹 초보 OverTheWire [Bandit Level 0]

Bandit 은 기초적인 리눅스 기반의 시스템해킹 워게임입니다. 비교적 크게 어렵지 않아 초보자들이 시스템해킹을 시작하기 좋다고 생각합니다. 저는 지금 OverTheWire에서 나온 Natas라는 웹해킹 워게임도 진행하고 있는데, 시스템해킹도 도전하고 싶어 글을 올리게 되었습니다. https://overthewire.org/wargames/bandit/bandit0.html OverTheWire: Level Goal We're hackers, and we are good-looking. We are the 1%. Level Goal The goal of this level is for you to log into the game using SSH. The host to which you need to c..

OverTheWire [Natas Level 18]

Natas Level 18 입니다. 어느새 총 34단계 중 절반을 넘어섰네요. 어렵지만 확실히 많이 배우고 있습니다. Level 18 메인 페이지 입니다. natas19의 password를 획득하기 위해선, admin 계정으로 로그인 하라고 합니다. SQL Injection 인가 싶어, 인증우회 구문을 입력해 봤습니다. " or 1=1 # 입력했습니다. 실패했습니다. 일반유저로 로그인 되었다고 합니다. 이후에도 admin" or 1=1 # 등으로 여러가지 시도해 봤지만 실패했습니다. SQL Injection 공격이 아닌걸까요? 소스코드입니다. 좀 기네요. 중요한 부분을 살펴봅시다. COOKIE에서 PHPSESSID 값을 확인하는 것 같은데요.. 아래쪽도 보시면 사용자 세션을 확인해서, admin 계정일 ..

Hacking/[Web]Natas 2023.03.29

OverTheWire [Natas Level 17]

Natas Level 17 입니다. 15레벨과 비슷한 Blind SQL Injection 문제입니다. 메인 페이지 입니다. Level 15와 같이, 입력값과 일치하는 계정이 존재하는지 확인하는 기능입니다. 소스코드 입니다. Level 15와 전체적으로 완전히 같으나, 딱 하나 다릅니다. 바로 최종적으로 유저가 존재하는지 아닌지 알려주는 출력구문이 주석처리 되어 있습니다. 쿼리 오류도 마찬가지입니다. 즉, 우리의 입력값에 대한 서버의 반응을 전혀 알 수 없다는 것입니다. 무엇을 입력하든, 이렇게 아무것도 알려주질 않습니다. 아무것도 알 수가 없는데, 어떻게 해야 할까요? 소스코드를 보시면, 출력문이 주석처리 되어있을 뿐이지 기능 자체는 완전히 같습니다. 그렇다는 것은, 우리가 입력한 쿼리는 여전히 정상작동..

Hacking/[Web]Natas 2023.03.29

OverTheWire [Natas Level 16]

Natas Level 16 입니다. command injection 기법을 이용한 문제입니다. 이번 문제입니다. 보안상의 이유로, 더 많은 문자를 필터링 하고 있다고 합니다. 해당 폼엔 사용자가 입력한 단어를 찾아주는 기능이 있습니다. 소스코드입니다. 예전에 나왔던 grep 문제에서, 필터링이 한층 업그레이드 되었군요. [ ; | & ` \ ' " ] 문자들을 필터링 하고 있고 ( 웬만한건 다 필터링 하는군요 ) grep 명령문에서, 입력값이 \"$key\" 형태로 더블쿼터로 묶여 있습니다. 이래선 개행문자를 이용한 우회도 먹히질 않죠. 우리가 무슨 입력값을 어떻게 넣든 간에, 반드시 grep dictionary.txt 의 인자로 들어가게 됩니다. 우리는 해당 명령문을 정상적으로 이용하면서 답을 찾아내야..

Hacking/[Web]Natas 2023.03.28
728x90
반응형