본문 바로가기

Wargame/webhacking.kr56

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.
webhacking.kr 39번 39번 문제를 보면 다음과 같이 input 창이 있는 것을 볼 수 있다. form의 action이 index.php이므로 index.phps를 보면 다음과 같은 코드를 볼 수 있다. 쿼리문을 보면 ‘가 $_POST[id] 앞에만 존재한다. 하지만 ‘를 입력하면 ‘ 2개로 replace 된다. 이 때 substr을 이용하여 15자만 $_POST[id]에 넣기 때문에 15번째 문자로 ‘를 입력하면 ‘’ 중 앞의 ‘만 입력된다. 따라서 다음과 같이 15번째 문자로 ‘를 입력하여 submit 하면 된다. 앞의 문자가 admin일 필요는 없다. 위와 같이 입력하면 clear할 수 있다. 2019. 1. 29.
webhacking.kr 18번 18번 문제를 보면 다음과 같이 no라는 input 창을 볼 수 있다.이 때, form의 method가 get이고, action이 index.php임을 알게 된다. 따라서 index.phps를 보면 다음과 같다. 우선 입력 받은 값에서 스페이스나 select, union 등을 필터링하는 것을 알 수 있다. 또한 mysql_qurery()의 결과를 배열 형태로 저장하는 것을 볼 수 있다. 여기서 첫 번째 행, 즉 $q[0]이 admin인 경우 solve()를 호출한다.따라서 “select id from challenge18_table where id=’guest’ and no=$_GET[no]”에서 첫 번째 결과 행이 admin이 되도록 해야한다. where의 조건이id = ‘guest’ and no = .. 2019. 1. 29.
webhacking.kr 16번 16번 문제를 클릭하면 다음과 같이 *이 찍혀있는 화면을 볼 수 있다. onkeypress()를 보면 mv()를 호출하는 것을 알 수 있다. 이 때 event.keyCode의 값에 따라 star.style 또는 location.href를 지정하게 된다. If 문 안의 숫자들을 아스키 코드로 바꾸면 다음과 같은 결과를 얻게 된다. 즉, d, a, w, s를 입력할 경우에는 별의 위치 속성 값이 변경되고, ‘|’를 입력할 경우에는 ‘|’라는 페이지로 이동된다는 것을 알 수 있다. 실제로 ‘|’를 입력하면 다음과 같이http://webhacking.kr/challenge/javascript/js3.html에서http://webhacking.kr/challenge/javascript/%7C로 페이지가 바뀐 것을.. 2019. 1. 29.
webhacking.kr 17번 17번 문제를 클릭하면 다음과 같은 input 창을 볼 수 있다. script를 보면, 입력하는 pw의 값이 unlock과 같을 경우 password가 출력됨을 알 수 있다. 이 때, 콘솔에서 unlock을 입력하면 unlock의 값을 알 수 있다. 따라서 9997809307를 입력하면 다음과 같이 password를 얻게 된다. 이렇게 얻은 password 값으로 인증을 하면 clear할 수 있다. 2019. 1. 29.