보호되어 있는 글입니다.
문제에 들어오면 ID와 PW를 입력할 수 있는 칸이나오고 Join버튼을 누를 수 있게 되어있다. 인젝션문제인가 해서 여러가지를 넣어보던중 아래와 같은 알림창이 뜨는 것을 확인했다. 그래서 뭔가 검증절차가 있구나라고 생각해서 JavaScript내용을 확인하기위해 소스코드를 확인했다. 다행히 소스코드는 바로 확인할 수 있었고, JavaScript 검증 코드와, Hint를 얻을 수 있었다. 검증 코드의 경우에 id 와 pw가 동일하면 위에서 봤던 알림창을 띄워주고 다르다면 JavaScript 코드에서 submit을 해준다. 근데 이와 상반되게 힌트에서는 id와 pw가 동일해야 한다고 한다. 한마디로 이 JavaScript 함수 chk_form()을 무시해야 이 문제를 해결할 수 있다는 말이다. 두가지 풀이로 ..
소스코드가 나와있으므로 소스코드를 우선 확인해 보았다. 핵심 PHP 코드를 변수명만 바꿔 보았다. 코드를 살펴보면 COOKIE에서 c라는 이름을 가진놈의 value를 $a에 저장하고, GET 파라미터로 넘어온 g라는 이름을 가진놈의 value를 $b에 저장하고, POST 파라미터로 넘어온 p라는 이름을 가진놈의 value를 $c에 저장하고, $b . $a 를 통해 하나로 이어서 $d에 저장. $c를 $e에 저장. 함으로써 준비를 마친다. test함수를 살펴보면 각문자를 ASCII Code로 바꾼 뒤 사이사이에 - 문자를 넣은 문자열로 리턴해준다. 즉 비교 구문에 있는 문자열은 해당 ASCII Code로 다시 변경한 뒤 비교해주면 될 것 같다. 변경해보니 $d == 'givemepassword' || $e..