본문 바로가기

Wargame123

webhacking.kr 58번 58번 문제를 클릭하면 다음 화면이 나온다. 코드를 보면 kk.js, kk2.js, hackme.swf 세 개의 파일을 볼 수 있다. 먼저 kk.js 를 보면 아래와 같이 js 코드가 있다. 콘솔을 이용하여 kk를 출력하면 hack이라는 문자열이 나온다. 두 번째로 kk2.js 파일이다. 이번에도 콘솔을 통해 출력하면 hackme.swf라는 문자열을 얻을 수 있다. hackme.swf 파일은 처음에 봤던 세 개의 파일 중 하나이기도 하다.따라서 hackme.swf를 입력하여 다운받은 뒤 파일을 열면, 가장 아랫부분에 아래와 같은 url을 볼 수 있다. http://webhacking.kr/challenge/web/web-35/g1v2m2passw0rd.php에 접속하면 clear할 수 있다. 2019. 1. 29.
webhacking.kr 31번 31번 문제를 클릭하면 다음과 같은 화면을 볼 수 있다. 위의 코드를 보면 10,000에서 10,100 사이의 포트로 연결을 시도하였으나 실패한 것을 볼 수 있다. 참고로 php 매뉴얼에 따르면 fsockopen()은 다음과 같다. (출처) http://php.net/manual/en/function.fsockopen.php 접속을 허용하기 위해 10,000 ~ 10,100 범위의 포트를 열어주어야 한다. 따라서 아래와 같이 외부 포트 10,000 ~ 10,100을 내부 포트 10,000으로 설정하였다. 그 뒤 nc로 10000 포트를 열어준다. http://webhacking.kr/challenge/web/web-16/ 페이지를 다시 리로드하면 터미널을 통해 다음과 같은 password를 얻을 수 있다.. 2019. 1. 29.
webhacking.kr 27번 27번 문제를 보면 다음과 같이 no를 입력 받는 form이 존재한다. 제목을 보면 SQL Injection이 가능할 것으로 보인다. form의 action이 index.php이기 때문에 index.phps를 보면 다음과 같은 코드를 볼 수 있다. solve()가 호출되기 위해서는 $q[id]가 admin이어야한다.따라서 쿼리문의 수행 결과가 admin이 되어야하는데 쿼리문의 조건을 보면where id=’guest’ and no=($_GET[no])인 것을 볼 수 있다. 여기서 id가 admin일 때로 조건을 변경하기 위해서 or를 사용할 수 있다.where id=’guest’ and no=0 or no=2 와 같이 작성하면 된다.이렇게 되면 실제로는(id=’guest’ and no=0) or no=2 .. 2019. 1. 29.
webhacking.kr 25번 25번 문제를 보면 다음과 같이 hello world가 출력된 것을 볼 수 있다. url을 보면 ?file=hello라는 것을 볼 수 있다. 아래의 파일 목록의 세 개 항목 중 hello.txt 파일의 내용을 읽어 textarea에 출력되는 것을 볼 수 있다. hello.txt에서 확장자를 제외한 파일 이름만을 입력하였을 때 내용이 출력되는 것을 보면 자동으로 .txt가 붙는다는 것을 추측할 수 있다. 따라서 flag가 있을 것으로 추정되는 password.php파일을 읽기 위해 ?file=password.php를 입력할 경우, ?file=password.php.txt로 입력될 것으로 보인다. 실제로 ?file=password.php를 입력한 경우, 아래와 같이 hello world가 출력된 것으로 보아.. 2019. 1. 29.
webhacking.kr 4번 4번 문제를 보면 YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg==라는 문자열과 함께 key라는 input을 받는다. 위의 문자열을 복호화 한 값을 input 값에 넣는 것으로 추정된다. 이 때 ==으로 끝나는 것을 보면 우선 base64로 인코딩 된 것임을 추측할 수 있다. 따라서 먼저 base64 디코딩을 수행하면 위와 같은 문자열이 나온다. 이 때 결과 값이 40바이트인 것을 보면 SHA1이 적용되었을 가능성이 크다. 이 때 디코딩한 결과 값이 또다시 40바이트이므로 한번 더 디코딩해보았다. 그 결과, test라는 key를 얻을 수 있었다. 2019. 1. 29.
webhacking.kr 54번 54번 문제를 열어보면 다음과 같이 Password is 라는 문자열과 함께 패스워드가 한 글자씩 나타나는 것을 볼 수 있다. 이 때 Chrome 개발자 도구의 network 탭을 보면 다음과 같이 Preview를 통해 나타나는 글자들을 볼 수 있다. 따라서 위의 문자를 입력하면 clear 된다. 2019. 1. 29.
webhacking.kr 38번 38번 문제를 보면 다음과 같이 id라는 input 창이 있는 것을 볼 수 있다.여기서 admin 버튼을 누를 경우, admin.php로 이동한다.Id에 1을 입력한 뒤 admin.php를 보면, 아래와 같이 [ip]:1이 입력되어 있다. 즉, Input 창에 데이터를 입력하면 [ip]:[입력값]의 형태로 로그가 출력된다. admin.php 페이지를 보면 hint가 admin임을 알 수 있다. 하지만 admin을 입력할 경우, 다음과 같이 admin이 아니라는 메시지가 나온다. 다시 admin.php를 보면, 을 기준으로 로그들이 분리된 것을 볼 수 있다. 따라서 “\n”을 입력한뒤 로그 형태를 참고하여 [ip]:admin과 같은 형태로 입력해주면 된다. a\n218.--------.61:admin위와 .. 2019. 1. 29.
webhacking.kr 24번 24번 문제를 보면 다음과 같이 ip와 agent, “Wrong IP!”라는 메시지가 출력되는 것을 볼 수 있다. 또한 주석을 참고하여 index.phps를 보면 다음과 같은 코드를 볼 수 있다. 코드를 보면 REMOTE_ADDR 쿠키가 존재하면 str_replace()를 수행한 뒤 $ip가 127.0.0.1과 동일한지 확인한다. 이 때, 12, 7., 0. 이 공백으로 바뀌기 때문에 str_replace()를 거친 뒤의 결과가 127.0.0.1이 되려면 112277..00..00..1를 입력해야 한다. 참고로 php manual에 따르면 $_SERVER와 $_COOKIE는 다음과 같다. (출처) http://php.net/manual/en/reserved.variables.server.phphttp:/.. 2019. 1. 29.
webhacking.kr 26번 26번 문제를 보면 다음과 같이 index.phps를 볼 수 있다. index.phps를 열어보면, 다음과 같은 코드를 볼 수 있다.$_GET[id]가 admin일 경우 solve()를 호출하지만, admin이라는 문자열을 필터링한다. 따라서 admin을 urlencode하여 전송하면 된다. 이 때, urldecode() 를 추가적으로 호출하기 때문에 admin을 인코딩한 %61%64%6d%69%6e를 입력하면 다음과 같이 admin으로 바뀌어 no!가 출력된 것을 볼 수 있다. 따라서 %61%64%6d%69%6e를 한번 더 인코딩한%2561%2564%256d%2569%256e를 입력하면 된다. 2019. 1. 29.