Hacking

webhacking.kr - challenge 26

pushpush 2020. 8. 10. 16:03
<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }    
a { color:lightgreen; }
</style>
</head>
<body>
<?php
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
  $_GET['id'] = urldecode($_GET['id']);
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>
<br><br>
<a href=?view_source=1>view-source</a>
</body>
</html>

여기서는 preg_match함수와 urldecode함수가 쓰인다는 것을 볼 수 있는데 먼저 이 함수부터 알아볼까요??

 

preg_match()

https://www.php.net/manual/en/function.preg-match.php

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int

첫번째 인수 : 정규 표현식

두번째 인수 : 검색 대상 문자열

세번째 인수 : 배열 변수 반환(패턴 매치에서 매칭된 값을 배열로 저장)

반환값 : 매칭에 성공하면 1, 실패하면 0이 반환

urldecode()

url 인코드된 문자열을 디코드한다

 

그냥 id가 admin이면 문제가 해결되는 구조네요!

근데

id가 admin일땐 no가 출력됩니다!

이렇게 해보면 어떨까요?

네 자동으로 디코딩이 되는 모습을 볼 수 있습니다!

여기서 고민을 좀 해봤는데요...

이걸 한번 더 인코딩 해보면 어떨까라는 생각이 들었습니다!

그래서 이걸 입력해본 결과

짠! 풀렸습니다!