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..