SQL Injection 문제이고 소스 파일이 주어져 있다. 소스를 보면 no 값을 입력할 수 있고 challenge18_table에 컬럼은 id, no가 있고 id는 guest와 admin이 있다는 것을 알 수 있다.그리고 Query를 조작해서 $q가 admin 값을 가져오면 문제를 풀 수 있다. no=1 을 넣었을 경우 hi guest가 출력이 된다. SELECT id FROM challenge18_table WHERE id='guest' AND no=$_GET[no]Query를 보면 WHERE 조건절에 id는 guest라고 명시되어 있고 AND 조건으로 되어 있기 때문에 no 값에 admin의 no 값을 입력하더라도 admin을 나타낼 수 없다.따라서, 앞의 값을 부정시키고 OR 연산자를 이용하여 ..
input form과 check button이 있다. unlock 값을 계산한 값과 input form을 통해서 입력한 값(login.pw.value)이 같을 경우 패스워드가 표시가 된다.이 문제는 간단하게 Console 창에 unlock 변수를 입력하면 자동으로 연산해서 나오는 값 9997809307을 입력해주면 패스워드가 출력이 된다. 그리고 패스워드 값 역시 소스를 보면 입력한 값의 1/10 이기 때문에 간단하게 구할 수 있다. 패스워드를 입력해주면 문제를 풀 수 있다.
크롬에서는 스크립트에 나와있는대로 움직이지 않기 때문에 제대로 움직이는 것이 보고 싶다면 다른 브라우저를 이용하면 된다. 전체적인 소스 내용을 설명하면 onkeypress 속성에 의해서 사용자가 키를 입력하면 스크립트가 동작이 되고 kk(1,1)가 onload 된다. onkeypress = mv(event.Keycode)로 키가 입력이 되면 function mv(cd)가 실행되어 kk(star.style.posLeft-50,star.style.posTop-50);가 실행된다.kk는 function kk(x,y)가 실행되는데 random() 함수를 이용해서 색을 지정해주고 *을 표시해주고 마우스를 가져가면 사라지게 되어있다. 그리고 function mv(cd)에서if(cd==100) star.style.p..
문제에 접근하면 다짜고짜 Access_Denied 창이 뜨면서 이전 페이지로 이동한다.하지만, 이전 페이지에 이동하기 전에 화면 상에 password is off_script 이란 글자가 보인다. (동체시력이 좋으면 바로 풀 수 있는 문제) 동체시력이 안 좋다면 간단하게 주소 앞에 view-source 를 붙여주면 크롬에서는 소스를 보여주기 때문에 화면에 적힌 내용을 확인할 수 있다. Burp Suite를 이용하여 Response 값을 확인해도 동일하게 내용을 확인할 수 있다. off_script 값을 인증해주면 문제를 풀 수 있다.
input form과 check button에 값을 입력하면 Wrong! 이라는 메시지창이 표시된다.소스를 보면 아래와 같이 되어 있다. 먼저 text를 입력할 수 있는 input form이 주어지고 그것을 check하는 button이 있는데, button이 동작하는 onclick을 보면 ck() 함수가 사용된 것을 볼 수가 있다. 여기에서 function ck()를 살펴보면 앞에서 어떻게해서 “wrong!” 생성되었는 지 알 수 있고 password가 무엇인지 알아낼 수도 있다.17번째 줄에 if문에서 ul과 pw.input_pwd.value가 같으면 password를 알려주고, 아닐 경우 “wrong!” 메시지를 생성한다.그렇기 때문에 ul의 값을 알아내기 위해서는 함수의 시작부분인 13번째 줄을 보..