[webhacking.kr] old-11 Write-Up

두비니

·

2022. 9. 2. 06:01

 

 

webhacking.kr old-11

Write-Up

 

 

01. 문제 분석

 

소스코드를 봐야 할 것 같다.

 

 

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

 

소스코드는 비교적 간단하게 작성되어있다.

GET형식으로 'val'을 입력받고, $pat에 설정되어있는 값들과 match를 이루어야만 문제를 풀 수 있습니다.

정규식을 분석해보도록 하겠습니다.

  • [1-3][a-f]{5} : [1-3]은 1, 2, 3중 하나, [a-f]는 a,b,c,d,e,f 중 하나, 그리고 {5}는 앞 조건의 갯수이다.
    • ex) 1abcde, 3aaaaa 등이 위 정규식에 해당됨
  • _ : 말그대로 "_"
  • .* : any character라는 뜻. 아무런 문자가 삽입되어도 상관없음
  • $_SERVER[REMOTE_ADDR] : (정규표현식 아님) PHP 변수 선언으로, 본인의 공인 IP를 뜻함
  • \tp\ta\ts\ts : \t는 특수문자 tab을 뜻한다. 그래서 "(tab)p(tab)a(tab)s(tab)s"를 뜻한다. 문제를 풀 때는 URL ENCODING을 진행할 예정이다.

 

02. Solution

 

단순히 위 정규표현식 규칙에 맞추어 페이로드를 작성하면 된다.

혹시나 내 ip를 모르겠는 경우: https://whatismyipaddress.com/

 

1aaaaa_[my_ip]%09p%09a%09s%09s

 

 

'War Games > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] old-13 Write-Up  (0) 2022.09.04
[webhacking.kr] old-12 Write-Up  (0) 2022.09.03
[webhacking.kr] old-10 Write-Up  (0) 2022.09.01
[webhacking.kr] old-9 Write-Up  (0) 2022.08.31
[webhacking.kr] old-8 Write-Up  (0) 2022.08.31