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모듈 정리글에 올려두었으니, 참고바란다.
해당하는 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 |