반응형
<?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 |