728x90
반응형

해킹 81

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 [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를 향하는 심볼..

OverTheWire [Leviathan Level 4]

Leviathan Level 4 입니다. 숨겨진 디렉터리 .trash 가 있네요. .trash 디렉터리 안에, bin 이라는 SetUID가 설정된 파일이 있습니다. 이 파일을 이용해서 다음 레벨 password를 획득할 수 있을 것 같습니다. 인자 없이 실행해 보았습니다. 2진수가 나오는데요. .....솔직히 이거 보자마자 감이 와서 리버싱 할 필요도 없이 바로 풀었습니다. 2진수를 아스키코드로 변환했더니 그게 바로 다음 레벨 password였습니다. 하지만 이렇게 끝내면 배우는 게 없으니 간단하게라도 분석을 해보겠습니다. main함수 입니다. 일단 시작하자마자 fopen 함수를 통해 leviathan5의 password 파일을 열고 있습니다. 이후, 아래쪽 fgets 함수로 password값을 꺼내왔습..

OverTheWire [Leviathan Level 3]

Leviathan Level 3 입니다. 저번 레벨과 비슷하게, SetUID가 설정된 실행파일이 있습니다. 소유자는 leviathan4 이니, 이 파일을 잘 이용하면 다음 레벨의 권한을 얻을 수 있을 것 같습니다. 인자 없이 실행시켜 보았습니다. 패스워드를 요구하길래 1234를 입력해 보았습니다만, 틀린 패스워드라고 나오네요. 리버싱을 통해 패스워드가 무엇인지 알아내야 할 것 같습니다. 저는 radare2 이용하겠습니다. radare2로 level3 파일을 실행해주고, aaaa 명령어로 프로그램을 분석했습니다. 이후 afl 명령어로 함수목록을 불러왔습니다. 그런데 main 함수가 보이지 않네요.. 어떤 함수를 먼저 살펴볼까 하다가, main은 아니지만 dbg.main 함수를 찾았습니다. 일단 이 함수부터..

728x90
반응형