본문 바로가기

webhacking.kr문제풀이

11단계(old)

드디어 30점 문제를 포스팅하게 되었다. 빠르게 페이지부터 보도록 하자.

갑자기 wrong이 뜬다. 하하하하 진짜 이렇게 아무것도 없을 수 있을지... 그래도 소스를 볼 수 있으니 링크를 타고 들어가서 소스를 보도록하자.

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?>
<html>
<head>
<title>Challenge 11</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<center>
<br><br>
<?php
  $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/";
  if(preg_match($pat,$_GET['val'])){
    solve(11);
  }
  else echo("<h2>Wrong</h2>");
  echo("<br><br>");
?>
<a href=./?view_source=1>view-source</a>
</center>
</body>
</html>

우리는 전체를 볼 필요는 없고 필요한 부분을 보도록하자. 다른부분은 싹다 빼고 중요한 php코드를 보면

<?php
  $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/";
  if(preg_match($pat,$_GET['val'])){
    solve(11);
  }
  else echo("<h2>Wrong</h2>");
  echo("<br><br>");
?>

변수 pat부분을 보면 pat는 '정규식부분_+(0개 이상의 문자열)+자신의 ip+(0개 이상의 문자열)+ p a s s'이다.

정규식 부분을 자세히 보도록 하자.

1~3의 문자중 1개와 a~f까지 문자 중 5개를 입력하는것인데

ex) '1abcdf'-TRUE, '1abcd'-FALSE가 되는것이다.

 

_문자열을 입력하고 '*'는 0개이상의 문자열을 입력하라는 것이다.

입력을 안해도 딱히 상관이 없다. 그게 내가 괄호를 쳐놓은 이유이다.

 

자신의 ip는 구글에 whatsmyip를 치면 나오니까 딱히 상관은 없으니까 넘어가도록 하자.솔직히 이런건 너네가 해야하지 않겠니

' p a s s'는 %09p%09a%09s%09s로 입력을 할 수 있다. %09는 ascii 코드 값으로 띄어쓰기를 의미하는 url encoding reference이다. 

 

이제 이걸 종합해서 입력을 해보면

원래링크?val=2abcdf_'자신의 ip'%09p%09a%09s%09s 로 입력을 하면 된다.

그리고 엔터를 치면 문제가 풀리고 30point를 얻게된다.

 

야호~~~~~~~~~~!

 

'webhacking.kr문제풀이' 카테고리의 다른 글

LEVEL 4  (0) 2023.08.30
10번 문제풀이  (0) 2022.03.06
17번 (old)문제풀이  (0) 2022.03.01
1번 문제풀이(old)  (0) 2022.02.20