WarGame/Webhacking.kr

[Webhacking.kr] old-11 Answer

Old-11 Domain & Tool

  • 구분 : 정규표현식
  • 문제풀이에 사용된 도구 
    • Chrome 103.0.5060.66 

Old-11 Question & Answer

다짜고짜 나보고 틀렸다고 한다. view-source를 확인해서 왜 틀렸는지 이유를 알아보자

<?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코드를 확인하면 solve(11)를 위해서는 pref_match를 통과해야한다는 것을 알겠다. get방식으로 val을 가져오는데, val은 다음의 정규표현식을 통과해야한다.

  • "/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/"

하나하나 쪼개서보자

  • [1-3] : 1에서 3까지 문자하나
  • [a-f]{5} : a에서 f까지 문자 5번 반복
  • _ : 언더바
  • $_SERVER[REMOTE_ADDR] : 자신의 IP
  • \t : 탭
  • pass : 문자열(사이사이에 \t가 섞여있는 형태인것이다.)

여기서 IP앞뒤로 .은 PHP에서 문자열을 합치기위해서 추가된 것이고, *은 정규표현식에서 생략가능한 아무문자이기에 무시한다. 자세한 정규표현식의 규칙은 이전 Python re모듈 정리글에 올려두었으니, 참고바란다.

 

[Python] - 모듈탐구 re - [^정규표현식$?]

정규표현식을 모르고 있는 사람은 아래 포스팅을 읽고 오자 2021.04.17 - [정보보안-이론] - 정규표현식에 대하여 정규표현식에 대하여 정규표현식은 여러 목적으로 사용된다. 정규표현식 자체는

tutoreducto.tistory.com

해당하는 Parameter를 필자는 1aaaaa_[내 IP]%09p%09a%09t%09s로 하여 val로 넘겼다.(%09는 tab의 url encode값이다.)

그렇다

'WarGame > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-14 Answer  (0) 2022.07.22
[Webhacking.kr] old-12 Answer  (0) 2022.07.15
[Webhacking.kr] old-10 Answer  (0) 2022.07.14
[Webhacking.kr] old-09 Answer  (0) 2022.07.14
[Webhacking.kr] old-08 Answer  (0) 2022.07.10