728x90
반응형

Hacking 87

OverTheWire [Narnia Level 0]

시스템해킹 워게임인 Narnia Level 0 문제입니다. 버퍼오버플로우가 사용된 문제입니다. 접속 후 홈디렉터리에는 특별한 게 없습니다. 워게임에서는 SetUID를 사용한 권한 상승이 많이 이루어지기 때문에, SetUID가 설정된 파일을 찾아보겠습니다. 소유자가 narnia1이며 SetUID가 설정된 파일을 찾았더니, 이 디렉터리를 발견했습니다. 이곳이 문제파일이 모인 디렉터리같네요. 우리는 narnia0이니, 실행할 수 있는 파일은 narnia0 뿐입니다. narnia0.c는 소스코드로 보이네요. 일단 실행해 보았습니다. val의 값을 0x41414141에서 0xdeadbeef로 바꾸라고 하는 것 같습니다. buf에는 현재 버퍼에 저장된 값을 보여주고 있고 val에는 val의 값을 보여주고 있습니다...

Webhacking.kr [old-14]

Webhacking.kr old-14 입니다. 문제 메인 페이지 입니다. ㅎㅇㅎㅇ를 입력하고 check를 눌러보았습니다. Wrong 출력. 소스코드부터 확인해 봅시다. 인증과정 코드를 발견했습니다. document.URL은 현재 경로(주소)를 반환하는 함수인데요. indexOf 함수는 인자로 지정한 문자열이 몇번째 위치부터 시작하는지 반환합니다. 0번째부터 시작하고요. 그리고 그 값에 30을 곱하고 있네요. 이 값은 ul에 저장됩니다. 아래쪽 조건문에서는 우리가 입력한 값과 ul의 값이 일치하면 어디론가 이동시켜주고 있고, 일치하지 않으면 Wrong을 출력합니다. 우리가 직접 ul의 값을 계산해서, 입력해 봅시다. 현재 경로입니다. ".kr" 문자열이 몇번째부터 시작하는지 세봐야겠죠? 0번째부터 셌을 경..

Webhacking.kr [old-17]

Webhacking.kr old-17 문제입니다. 문제 메인 페이지입니다. 입력 폼이 하나 있네요. 아무거나 입력해보았습니다. 틀렸다고 Wrong이 출력되었네요. 딱히 정보가 없네요. 소스코드부터 확인해 봅시다. 개발자도구로 소스코드를 확인했는데, 인증이 이루어지는 코드를 발견했습니다. unlock 변수에 어떤 값이 저장되어 있고 우리가 입력한 값이 unlock과 같을 경우, 어떤 경로로 이동되네요. 틀렸을 경우는 Wrong을 출력합니다. unlock 값을 계산해서 직접 입력해 봅시다. 계산기에는 복붙이 안되더라구요. 그래서 파이썬으로 계산했습니다. 7809297.1 이 나왔네요. 이걸 입력해 봅시다. 입력하고 check 클릭. 정답이었네요. 이렇게 old-17 문제를 해결할 수 있었습니다.

Webhacking.kr [old-01]

Webhacking.kr old-01 문제입니다. 문제 메인 페이지입니다. 특별할 건 없네요. 소스코드를 확인해 보겠습니다. 위쪽 코드는 단순히 쿠키값을 설정하는 코드이고.. 아래쪽이 중요하겠네요. 쿠키의 user_lv 값이 숫자가 아닐 경우, 값을 1로 설정합니다. user_lv 값이 4보다 크거나 같을 경우, 값을 1로 설정합니다. user_lv 값이 3보다 클 경우, 문제가 해결됩니다. 이것을 종합해보면, user_lv 값이 숫자이고, 3보다 크고 4보다 작을 경우 문제가 해결된다. 가 되겠네요. 저는 처음에 정수만 입력할 수 있다는 착각에 잠깐 헤맸었는데, 그냥 소수점을 입력해도 됩니다. 3~4 사이의 아무 숫자나 입력합시다. 저는 Burp suite 프로그램을 이용하겠습니다. 저는 3.5를 입력..

Webhacking.kr [old-06]

Webhacking.kr 사이트의 old-06 문제입니다. 문제 메인페이지 입니다. ID,PW가 기재되어 있고 특별한 건 없어 보입니다. 소스코드를 확인해 봅시다. 소스코드입니다. 위쪽부터 살펴보시면, 쿠키의 "user" 값이 존재하지 않을 경우 ID, PW를 guest, 123qwe로 설정합니다. 그리고 그 값을 base64로 20번 인코딩 한 후 숫자를 특수문자로 치환하여 각각 user, password 쿠키값으로 설정합니다. 아래쪽 소스코드는, 설정된 user, password 쿠키값을 특수문자를 숫자로 치환한 후 base64로 20번 디코딩하여 문제 메인 페이지에 출력합니다. 그리고, 만약 출력된 ID,PW값이 admin, nimda라면 문제가 해결됩니다. 즉, 우리는 admin, nimda 문자..

TryHackMe[Overpass]

TryHackMe의 문제 Overpass 입니다. 이전 RootMe 또는 Basic Pentesting 처럼 모의침투 문제라고 생각하시면 됩니다. 오늘 침투할 IP는 10.10.230.168 입니다. nmap으로 어떤 포트와 서비스가 활성화되어 있는지 확인해 줍시다. ssh와 http가 활성화되어 있습니다. http가 활성화 되어 있으면 웹 서비스를 제공하고 있다는 뜻입니다. ssh로 침투하기 위해선 일단 사용자 계정과 password가 필요하니, 현재 접근이 가능한 웹 사이트로 접속해 주도록 합시다. 웹사이트 메인 페이지입니다. 여러군데를 돌아다녀보니.. Overpass라는 툴을 개발중인 것 같습니다. 여러 사이트에서 패스워드를 안전하게 관리할 수 있는? 그런 프로그램인 것 같습니다. /download..

TryHackMe[OhSINT]

OhSINT 문제입니다. 공개출처정보(OSINT) 를 수집하여 해결할 수 있는 문제입니다. Osint를 사용한 문제는 처음 풀어보는데 꽤 흥미로웠습니다. 가장 처음엔 문제 이미지 파일이 주어집니다. 이미지 파일의 메타데이터를 시작으로, 여러가지 공개출처정보를 통해 최종적으로 패스워드까지 획득하는 문제입니다. 이미지 파일을 먼저 다운받아 줍니다. 파일의 메타데이터를 확인(관리)하기 위해선 "exiftool"이 필요합니다. 없으신 분들은 다운받아 주시고 문제파일을 확인해 봅시다. 다른 부분은 평범한 메타데이터들 이지만, Copyright 부분을 확인해 보면 제작자가 "OWoodflint" 라는 것을 알 수 있습니다. 이 파일을 통해서 얻을 수 있는 유의미한 정보는 이것 뿐인 것 같은데요. 구글링을 해봅시다...

TryHackMe [Basic Pentesting]

TryHackMe 사이트의 Basic Pentesting 문제입니다. 이전 문제 RootMe와 비슷하게, 공격 대상의 IP만 가지고 시스템 권한까지 획득하는 문제입니다. 개인적으로 RootMe보단 더 어려웠습니다. 이번에 침투할 주소는 10.10.183.14 입니다. nmap을 이용해 어떤 포트와 서비스가 활성화되어있나 확인해 보겠습니다. 몇분정도 걸릴 수 있습니다. 스캔 결과입니다. ssh를 이용하고 있고 웹 서비스도 제공하고 있네요. 또한 139, 445 포트에서는 smb 서비스도 제공하고 있습니다. smb를 공격에 이용할 수도 있을 것 같아요. 일단 웹 사이트부터 접속해 보겠습니다. 웹 사이트는 특별한 게 없네요. 미완성 사이트인 것 같습니다. 그래도 혹시 숨겨진 페이지가 있을 수 있으니, 찾아봅시..

OverTheWire [Leviathan Level 6, 마지막 레벨]

Leviathan Level 6 입니다. 드디어 Leviathan을 전부 클리어 했네요. 이것이 마지막 문제입니다. 역시나 SetUID 비트가 설정된 프로그램이 있습니다. 인자 없이 실행해 보겠습니다. 4자리 숫자 인자가 필요하다고 하네요. 1234를 입력해 보았습니다. Wrong이 출력되었네요. 4자리 숫자로 구성된 패스워드를 찾는 문제 같은데요? 여러번 시도해도 딱히 제한도 없습니다. 이럴 때 딱인 게 있죠. Brute force를 이용해 봅시다. tmp디렉터리에 개인 디렉터리를 만들고, 공격코드를 작성할 파일을 그 안에 만들어 줍시다. 이렇게 작성하고, 저장합니다. 0000부터 9999까지의 인자를 대입하여 프로그램을 반복 실행하는 코드입니다. 그리고 실행이 가능하도록, chmod 명령어로 실행권한..

OverTheWire [Leviathan Level 5]

Leviathan Level 5 입니다. 이번에도 SetUID 비트가 설정된 프로그램이 있네요. 일단 인자 없이 실행해 보겠습니다. /tmp/file.log 를 찾을 수 없다고 나오는데요. 이 프로그램이 실행되기 위해선 저 파일이 필요한 걸까요? 제가 임의로 해당 파일을 만들어 보겠습니다. vi로 파일을 생성하겠습니다. leviathan 문자열을 입력하고 저장했습니다. 다시 프로그램을 실행해 봅시다. leviathan이 그대로 출력되었습니다. 파일의 내용을 그대로 읽어오는 프로그램 이었군요. 음.... /tmp/file.log에 링크를 설정하면 password 파일을 읽을 수 있지 않을까요? 한번 해보겠습니다. ln 명령어를 이용해서, file.log에 leviathan6의 password를 향하는 심볼..

728x90
반응형