< 해결 과정 >
<?php
if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] == "admin"){
solve(26);
}
?>
******************************************************************
$_GET['id'] : GET 방식으로 id 값에 파라미터 전달
php 코드를 통해 , admin이 id 값에 입력되면, 그림 1 과 같이 no! 를 반환한다는 것을 알 수 있다.
id 값을 GET을 통해 전송하면, decoding 된다. 그래서 urlencoding을 해주었는데, admin 값으로 곧장 필터링되었다. 그래서 그림 2와 같이 더블 인코딩을 해주었고, 해당 문제를 해결할 수 있었다.
아래 그림3 은 admin을 url encoding 한 값이다.
한줄 평: 뭔가 익숙한 유형?
< 참고 >
https://flash-ctf.tistory.com/43