본문 바로가기
반응형

워게임58

[natas - WEB hacking] level12 -> leve13 [natas - WEB hacking] level12 -> leve13 [ 풀이과정 ] 이 문제도 페이지를 접속하니 natas12와 비슷하게 생긴 파일 업로드 페이지가 나왔다..'For security reasons, we now only accept image files!'라는 문구가 있어서구글 번역기를 돌려보니 '보안상의 이유로 이미지 파일만 허용한다'고 나와있었다. jpg 파일을 업로드 해보니 업로드가 될때가 있고 안될때가 있었다.. 우선 소스 코드를 분석해보기 위해서 코드를 보니까 natas12에서 봤던 코드와 거의 유사한 형태였다.. else if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) { echo "File is not an imag.. 2017. 10. 8.
[natas - WEB hacking] level11 -> leve12 [natas - WEB hacking] level11 -> leve12 [ 풀이과정 ] 이 문제는 페이지 소스코드를 보면 파일 업로드를 할때 무조건 .jpg로 확장자로 업로드 되도록 html쪽에서 확장자가 고정이 되어있다.. 고정된 확장자를 burp suite를 이용해서 서버로 전달되기전에 .jpg 대신에 .php 확장자로 변경 해주고파일 업로드 취약점을 이용해서 그 파일안에 php passthru() 함수를 이용한 natas13의 패스워드를 알아낼수 있는간단한 리눅스 명령어를 넣어서 실행되게 하면 문제는 풀린다.. burp suite를 이용해서 확인해보면 .jpg로 확장자가 고정되어서 서버로 전달이 되는걸 확인할 수 있고이 부분을 고쳐주기만 하면 확장자 문제는 쉽게 풀린다... 위와 같이 .jpg를 ... 2017. 10. 8.
[natas - WEB hacking] level10 -> leve11 [natas - WEB hacking] level10 -> leve11 암호화: json_encode() -> xor_encrypt() -> base64_encode -> setcookie() 복호화: base64_decode() -> xor_encrypt() -> json_decode() -> array() A xor B = CA xor C = B 평문 xor key = 암호문평문 xor 암호문 = key [ 풀이과정 ] 이 문제에서는 xor로 암호화가 되어있는데 xor은 a^b=c이면 a^c=b이거나 b^c=a인 특성을 가지고 있다.이 특성을 이용하면 key값을 구할 수 있다. 개발자 도구를 이용해서 쿠키를 확인해보면 아래와 같은 data의 값을 확인 할 수 있다..data=ClVLIh4ASCsCBE.. 2017. 10. 8.
[natas - WEB hacking] level9 -> leve10 [natas - WEB hacking] level9 -> leve10 [ 풀이과정 ] 페이지에 접속하자마자 For security reasons, we now filter on certain characters라는 문구가 나와서해석해보니 보안상의 이유로 특정 문자를 필터링 한다는 뜻이였다.소스 코드를 보니 php preg_match() 함수를 통해서 특정 문자를 필터링하고 있었다.preg_match('/[;|&]/',$key)이전 문제에서 사용했던 한줄에 여러명렁어를 실행 가능하게 하는 구분자를 모두 필터링해서 막아두고 있었다. 이 문제에서도 마찬가지로 passthru("grep -i $key dictionary.txt");를 이용해야하는데 여기서는 grep 명령어의 특성을 조금 알고 있어야 한다. gr.. 2017. 10. 8.
[natas - WEB hacking] level8 -> leve9 [natas - WEB hacking] level8 -> leve9 [ 풀이과정 ] 이 문제에서는 페이지 소스를 확인해보면 grep을 이용해서 입력한 내용을 검색하는 페이지이다.passthru("grep -i $key dictionary.txt"); 부분을 이용해서 command injection 공격을 해야한다.php에서 passthru() 함수는 system() 함수와 같이 외부 명령어를 실행 할 수 있게 해주는 함수이다.리눅스에서 한줄에 여러개의 명령어를 실행할때는 &, |, ; 과 같이 구분자를 사용한다.;를 이용해서 구분자를 이용했고 그렇게 되면 입력폼에 입력한 내용이 $key로 들어가서 실행되게 된다.여기서는 다른 방법도 있을수 있지만 find명령어를 이용해서 문제를 풀었다.;find / -u.. 2017. 10. 8.
[natas - WEB hacking] level7 -> level8 [natas - WEB hacking] level7 -> level8 [ 풀이과정 ] 해당 페이지를 접속했을때 텍스트를 입력할 수 있는 폼과 전송 버튼이 있었다...페이지 소스를 확인해보면 encodedSecret 값이 입력한 값과 같다면 natas9에 대한 패스워드를 알아낼수 있는 문제였다.. 이 문제에서는 아래 있는 코드부분에 집중을 하면 풀어낼수 있는 문제이다... $encodedSecret = "3d3d516343746d4d6d6c315669563362"; function encodeSecret($secret) { return bin2hex(strrev(base64_encode($secret)));} 이 코드에서 bin2hex(strrev(base64_encode($secret))); 결과는 en.. 2017. 10. 8.
[natas - WEB hacking] level6 -> level7 [natas - WEB hacking] level6 -> level7 [ 풀이과정 ] 페이지에 접속하니 Home과 About 링크가 있었고 해당 링크를 눌러보니 아래와 같이 나왔다..about에 대한 페이지 소스를 확인해보니 힌트가 있었고 /etc/natas_webpass/natas8에 natas8로 갈 수 있는 패스워드가 있다고 나와있었다..이 문제는 페이지 소스를 확인 하는것만으로 쉽게 풀렸던 문제이다.. home 링크를 클릭했을때 나오는 페이지다... About 링크를 눌렀을때 나오는 페이지이고 눈에 보이는곳에는 특별한 점이 없기 때문에 소스 코드를 우선 확인해봐야 한다.. About에 페이지에서 소스코드를 확인 해봤을때 바로 문제를 풀 수 있었다.... DBfUBfqQG69KvJvJ1iAbMoIp.. 2017. 10. 8.
[natas - WEB hacking] level5 -> level6 [natas - WEB hacking] level5 -> level6 [ 풀이과정 ] 페이지를 접속하게 되면 입력폼이 있고 view sourcecode를 눌러서 보면 php 코드까지 확인할 수 있다..여기서 include "includes/secret.inc"; 이부분을 보게 되면 해당 include 파일 경로가 노출 되어있기 때문에여기서 secret에 대한 정보를 얻을수 있다. 위 그림에 페이지 소스보기를 통해서 코드를 보면 include 경로가 노출이 된걸 볼 수 있다...해당 경로로 들어가보면 아래와 같은 내용을 확인할 수 있다.. 해당 secret에 대한 값을 넘겨주게 되면 natas7에 대한 패스워드를 얻을수 있게 된다.. Access granted. The password for natas7 .. 2017. 10. 8.