No img


[Webhacking.kr] Challenge(old)- old26

Posted by bonggang | 2020. 6. 1. 01:19

문제


https://webhacking.kr/challenge/web-11/

 

Challenge 26

 

webhacking.kr

 

문제 풀이


0. 소스 코드 확인

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

id 값으로 admin을 주면 끝나는 간단한 문제다. 하지만 preg_match("/admin/", $_GET['id'])에서 필터링 된다.

바로 아래 문장을 보면 urldecode($_GET['id'])가 있으니 인코딩해서 값을 넘겨주면 된다.

 

1. 아스키 코드표 기반 urlencoding

 

admin: %61%64%6d%69%6e

 

즉, ?id=%61%64%6d%69%6e를 넣어주면 된다.

자신있게 넣은 결과 

no!

 

응...???

 

id 값을 검증할 때 이미 한 번 디코딩 되어있다는 것. 인코딩을 2번해야한다.

 

%61%64%6D%69%6E -> URL decode -> admin -> 첫번째 조건문 -> no!

%2561%2564%256D%2569%256E -> URL decode -> %61%64%6D%69%6E -> 첫번째 조건문 -> URL decode -> admin