[Webhacking.kr] Challenge old-11
글 작성자: caputdraconis
반응형
11번 PHP 문제다.
들어오자마자 틀렸다고 하니깐 기분이 묘하네,,
소스코드를 살펴보자
<?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에 저장되는 값과 일치하면 풀리는 간단한 문제다..(전혀 간단하지 않았다씨)
일단 저 가운데에 $_SERVER[REMOTE_ADDR]은 접속자의 IP주소다. 이는 초록창에 'Ip주소 확인'이라고 검색하면 바로 알 수 있다.
그럼 저 앞과 뒤에 저 이상한건 뭘까...? 뭔가 특수기호를 팍팍 쓴걸 보니 특별한 의미가 있어보인다. 바로 그 해답은!!! 정 규 표 현 식~
http://www.nextree.co.kr/p4327/
정리가 잘 되어있는 블로그다.
위의 블로그를 참고해 소스코드를 분석해보면
/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/
에서 /는 구분 기호를 의미하고
[1-3]은 1부터 3 사이의 값 중 하나를 의미한다. 또한 [a-f]도 비슷한 맥락으로 a와 f 사이중 하나를 의미하는데 뒤에 붙은 {5}로 인해 5번 반복한다. .는 문자열 합치기를 의미한다. 그리고 뒤에 \t는 tab을 의미한다. tab 크기만큼 공백을 의미한다.
그럼 GET 방식으로 줘야하는 값은 아래와 같을 것이다.
1aaaaa_*아이피주소* p a s s
근데 \t로 인해 벌어진 공백이 거슬린다. \t는 url인코딩을 통해 바꿔주자.
https://www.eso.org/~ndelmott/url_encode.html
\t는 %09와 같다.
1aaaaa_*아이피주소*%09p%09a%09s%09s
후 이대로 가보자
반응형
댓글
이 글 공유하기
다른 글
-
[Webhacking.kr] Challenge old-33
[Webhacking.kr] Challenge old-33
2020.08.16 -
[LOS / LORD OF SQL INJECTION] gremlin
[LOS / LORD OF SQL INJECTION] gremlin
2020.08.16 -
[Webhacking.kr] Challenge old-10
[Webhacking.kr] Challenge old-10
2020.08.14 -
[Webhacking.kr] Challenge old-24
[Webhacking.kr] Challenge old-24
2020.08.14