전체 글 108

[webhacking.kr] webhacking.kr 26

코드를 보면 GET방식으로 돌아온 id의 값을 urldecode를 해서 다시 담는다는 것을 알 수 있다. urldecode를 해서 담은 값이 admin일 경우 문제가 해결된다. admin값을 아스키코드를 참고하여 인코딩하면 %61%64%6D%69%6E가 된다. 이 인코딩 된 값을 URL에 직접 입력해줬다. no!가 뜨면서 id=admin으로 된 것을 알 수 있었다. 실패한 원인을 찾아보니 웹 서버와 브라우저 사이의 데이터 교환 시 브라우저에서는 데이터를 자동 인코딩하여 서버에 보내고 서버는 인코딩된 값을 자동으로 디코딩 하기 때문에 인코딩하여 보낸 %61%64%6D%69%6E를 서버에서 디코딩하여서 admin으로 나타남을 알 수 있다. 서버에서 디코딩하였는데 %61%64%6D%69%6E를 값으로 가질 수..

[webhacking.kr] webhacking.kr 25

25번 문제 URL을 화면에 나와있는 값들로 변경해 보았다. ?file=hello은 hello world을 출력해주고, ?file=flag은 FLAG is in this code을 출력해주고, ?file=index은 아무것도 출력되지 않는다. 이를 통해서 file에 file명을 입력하면 자동으로 php가 붙는 것 같았다. 여기서 해결하기 위해 php wrapper를 사용해서 LFI 공격을 해야하는 것 같다. 기본적인 LFI공격은 www.[공격 사이트 주소].index.php?page=../../../../../../../../etc/passwd/(널바이트)로 이루어져 있다. wrapper 중 php://filter wrapper를 사용했다. 이 wrapper를 사용하면 encode/decode 옵션을 사..

[webhacking.kr] webhacking.kr 24

24번 문제 view-source에 들어가면 소스코드가 나온다. extract($_COOKIE)는 cookie에 있는 값을 변수로 만드는 것이다. $ip에 $REMOTE_ADDR값을 넣어준다는 것을 알 수 있고, 조건문에서 str_replace()함수를 통해 ‘..’ -> ‘.’ , ’12’ -> 공백, ‘7’ -> 공백, ‘0’ -> 공백으로 변환되는 것을 알 수 있다. 그리고 ip가 127.0.0.1이면 해결이 되는 것을 알 수 있었다. cookie값을 변경해서 값을 127.0.0.1로 변경해보았다. REMOTE_ADDR라는 이름의 쿠키를 만들었다. 그리고 str_replace() 를 고려하며 127.0.0.1이 되도록 하면 112277…00…00…1을 넣어주면 될 것 같았다. 이름이 REMOTE_A..

[webhacking.kr] webhacking.kr 23

맨 처음 나오는 화면이다. 밑의 문구를 보면 “Your mission is to inject ”가 나와있고, 이를 통해 “를 추가해서 1이라는 alert창을 띄우면 성공할 것 같다. 바로 입력 칸에 입력을 해보니 ‘no hack’이 나오면서 URL이 이와 같이 변경된 것을 볼 수 있다. 현재 code라는 변수에 get방식으로 입력 칸에 작성된 문자열이 전달되는 것을 알 수 있다. 어떤 부분이 필터링 돼서 성공하지 못하는지 알기 위해 시도해 보았다. 문자 하나는 필터링 하지 않지만, 연속으로 문자가 나올 경우(sc, alert 등)에만 필터링해주는 것 같았다. 우회를 해주기 위해 문자 사이에 NULL에 해당되는 ‘%00’을 추가해서 입력해 보았다. 입력시, 밑의 사진과 같이 원하는 ‘%00’만 들어가는 것..

[webhacking.kr] webhacking.kr 15

15번 문제에 들어가면 위와 같이 alert창이 뜨고 확인을 누르면 이전 화면을 돌아가는 것을 해결하였다. 설정 -> 사이트 설정 -> 자바스크립트를 보면 허용으로 되어있는 것을 알 수 있다. 들어가서 자바스크립트를 차단하면 더 이상 안뜨는 것을 알 수 있다. 15번의 코드에서 9번째 줄을 해석해보면 console창에 document.write(“[Get Flag]a>”);을 입력하면 해결이 된다. 콘솔창에 document.write(“[Get Flag]a>”);을 입력하였다. [Get Flag] 하이퍼링크가 뜬다. 하이퍼링크를 누르면 URL에서 ?getFlag을 확인할 수 있으며 성공하였다.

[webhacking.kr] webhacking.kr 14

14번 코드를 분석해보자면 13번째 줄에서 ul은 페이지의 URL 정보를 담고 있으며 ul에서 “.kr”의 문자열 값을 ul에 다시 담는다. 그리고 이 ul에 30을 곱해서 입력창에 입력하면 URL의 ?뒤에 ul*pw.input_pwd.value값이 나타나면서 성공함을 알 수 있다. 위의 URL를 참고해서 “.kr”의 인덱스 값을 구하면 18임을 알 수 있다. 그러므로 ul값은 18이 되고 이것에 30을 곱한 540을 입력하면 된다. 540을 입력하면 URL에 ul*pw.input_pwd.value에 해당되는 291600이 나오면서 성공함을 알 수 있다.