※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

웹 해킹 26번을 클릭하면 다음과 같은 화면이 뜬다.

 

 

if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] == "admin"){
   solve(26);

}

 

View-source를 클릭하여 보면 다음과 같은 코드가 보인다. 코드를 해석해보면, idadmin일 때 ‘no!’ 를 띄우고, iddecode 했을 때 admin이 나오면 문제가 풀린다.

 

 

일단 ‘?id=admin’으로 id admin이라는 값을 보내면 코드에 나온 것처럼 다음과 같이 ‘no!’ 라고 뜬다.

 

 

아스키 코드 표이다. 표를 참고해서 admin을 아스키 값으로 바꾼 후 입력해보자.

 

 

’?id=%61%64%6D%69%6E’ 라고 입력한 후 엔터를 누르면 값이 자동으로 admin으로 바뀌어서 전송이 된다. 구글링을 해보니 아래와 같은 이유 때문이었다.

 

 

서버와 브라우저 사이에서 데이터 교환 브라우저는 폼에서 입력 받은 데이터를 자동으로 

인코딩한 값을 PHP서버로 보내고 PHP 받은 인코딩 값을 자동으로 디코딩한다.

 

 

  인코딩이 한 번 자동으로 진행되므로 admin을 인코딩한 값을 한번 더 인코딩해준다.

 

 

한번 더 인코딩한 값을 입력해주면 문제가 풀린다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 27  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27
webhacking.kr challenge 23  (0) 2020.06.27