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