본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 26번

by Hevton 2020. 10. 5.
반응형
<?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>

 

admin은 url인코딩해도 admin이지만,

url인코딩에서 인코딩 값으로 + / 같은 문자들을 표현할 수 있듯이

a~z, A~Z의 표현값도 존재한다. 그러므로

a d m i n 문자 각각 고유의 인코딩 값도 존재한다.

(참고로 정리하자면, 아스키 코드의 16진수값이 URL encoding값과 같다)

www.ibm.com/support/knowledgecenter/ko/ssw_aix_71/network/conversion_table.html

 

URL encoding에서 문자들을 어떻게 표현하는지는 아래 사이트에 정리되어 있다.

www.w3schools.com/tags/ref_urlencode.ASP

 

HTML URL Encoding Reference

HTML URL Encoding Reference URL - Uniform Resource Locator Web browsers request pages from web servers by using a URL. The URL is the address of a web page, like: https://www.w3schools.com. URL Encoding (Percent Encoding) URL encoding converts characters i

www.w3schools.com

위의 사이트에서 16진수값과 아래 사이트에서 인코딩된 값이 %만 붙인 것 뺴고는 동일하다는 것을 알 수 있을 것이다.

 

 

여기서 a d m i n에 해당하는 인코딩 값들을 나열해보면

%61%64%6d%69%6e 이다.

 

이걸 그냥 id로 넘기게 되면 php에서 처리하기 전에 다시 서버측에서 디코딩되므로 admin 으로 전달되어 제자리 걸음이 된다.

 

어차피 소스 내에서 decoding 작업을 한번 더 해주니 %61%64%6d%69%6e 이걸 한번 더 인코딩해서 id값으로 넘겨주면 된다.

 

따라서 id=%2561%2564%256d%2569%256e를 해주면 됌.

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 28번  (0) 2020.10.07
[Webhacking.kr] 27번  (0) 2020.10.07
[Webhacking.kr] 25번  (0) 2020.10.05
[Webhacking.kr] 24번  (0) 2020.10.05
[Webhacking.kr] 23번  (0) 2020.10.03