[WARGAME][webhacking.kr] old-11

jckim22·2022년 11월 16일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
73/114

아래는 서버 코드이다.

<?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이라는 변수에 value를 받고 있었고 $pat이라는 정규표현식에 val이 적합하다면 flag를 주는 내용이었다.

이번 문제를 통해서 정규표현식을 해석하는 방법을 좀 더 익힐 수 있었다.

바로 구글링을해서 정규표현식의 기호들이 무엇을 의미 하는지 알아내었다.

일단 [1-3]은 1부터 3까지의 숫자 하나이고 [a-f]{5}는 a부터 f 중 하나를 5개 필요로 하는 의미였다.

그 후 를 해주고 .은 임의의 문자를 뜻하고 *는 0개 이상이라는 뜻이었다.
그 말은
(임의의 문자 0개이상)이라는 것이었다.
그리고 $_SERVER[REMOTE_ADDR]은 패킷에 들어가는 내용인데 서버에 접속한 클라이언트의 ip주소를 뜻한다.
바로 내 아이피 주소이다 그 후 .*이 한번 더 있었고 그 다음이 /t인데 이건 탭을 뜻한다.
탭은 url 인코딩하면 %09이기 때문에 url에는 이렇게 입력하면 될 것 같다고 생각했다.

그렇게 조합하면

2bcdef_random123.123.123.123random%09p%09a%09s%09s이 나오고 이것을 url에 get 파라미터로 넣어주면 되는 문제였다.

그렇게 url에 ?val=2bcdef_random내ip주소random%09p%09a%09s%09s로 요청을 보내게 되면

아래와 같이 flag를 얻을 수 있다.

이번 문제도 역시 풀고 나서 캡처해서 already solved가 떴다.

profile
개발/보안

0개의 댓글