반응형
<?php
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
  $_GET['id'] = urldecode($_GET['id']);
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>

id가 admin이면 해결되는 간단한 문제이다. 그러나 admin이 필터링되고 있다.

또한, GET방식으로 받아온 id를 urldecoding하여 대조한다.

 

처음엔 admin을 ascii코드로 변환하면 %61%64%6D%69%6E 이기에 ?id=%61%64%6D%69%6E를 보내었지만 필터링에 걸렸다.

 

아마 이전에 dreamahck에서도 언젠가 풀었던 문제처럼 브라우저에서 자체적으로 디코딩이 한번 더 이루어지므로 본인이 인코딩하여 보내어도 바로 admin으로 변해 필터링에 걸리는 것이다.

 

그러므로 더블인코딩하여 보낸다. 이리하면 브라우저를 통한 변환으로 %61%64%6D%69%6E가 전달되고, 쿼리에는 인코딩된 값이 박히므로, 필터링 룰을 통과할 수 있다.

 

더블인코딩된 admin => %2561%2564%256D%2569%256E

 

반응형

'webhacking.kr' 카테고리의 다른 글

webhacking.kr [old-10]  (0) 2023.07.13
webhacking.kr [old-03]  (0) 2023.07.13
webhacking.kr [old-16]  (0) 2023.07.13
webhacking.kr [old-06]  (0) 2023.07.13
webhacking.kr [old-17]  (0) 2023.07.13

+ Recent posts