Web Hacking/webhacking.kr 풀이

old-26 write-up

박연준 2024. 1. 8. 02:27

문제 정보

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

 

Challenge 26

 

webhacking.kr

 

풀이

 

문제에 접속하면 바로 view-source를 누르도록 되어있다.

 

 

 

소스 코드는 다음과 같다. 소스 코드를 분석해보면,먼저 preg_match 함수를 통해서 GET 메소드 방식으로 받아오는 id 파라미터에 대해서 admin 이 포함되어 있다면 no! 라는 문자열을 출력하고 exit 함수를 실행한다. 다음으로 id 파라미터에 있는 값을 디코딩을 수행하고 id에 admin이 있다면 해결하는 것을 알 수 있다.

<?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>

 

 

다음과 같이 id 파라미터에 admin을 그냥 포함시켜 요청하면 no!를 출력한다.

 

 

burp suite를 이용해서 admin이란 단어를 URL 인코딩으로 변환시켜주어서 적용시켜보았다.

 

 

no!라고 나왔다.

 

 

코드를 다시 한 번 보면 디코딩을 한 번 수행해주기 때문에 이를 한 번 더 URL 인코딩으로 더블 인코딩을 수행해서 변환해야 한다는 것을 알 수 있다.

 

 

이를 id 파라미터에 다시 붙여서 요청하면 다음과 같이 해결할 수 있다.

'Web Hacking > webhacking.kr 풀이' 카테고리의 다른 글

old-16 write-up  (0) 2024.01.10
old-17 write-up  (0) 2024.01.10
old-18 write-up  (0) 2024.01.10
old-24 write-up  (0) 2024.01.08
old-54 write-up  (0) 2024.01.08