본문 바로가기

보안공부/Webhacking.kr 풀이

webhacking.kr 11번 문제 풀이

오늘은 그동안 못했던 웹해킹을 다시 해보려고 한다.

간단하게 11번으로 시작해보자.

 

문제에 들어가면 다음과 같은 창이 반겨준다.

 

GET을 통해 val을 받는다는데 html이라고 적혀있어서 당황했으나,

 

잘 확인해보니 이 페이지가 PHP로 구동되고 있다는 사실을 알 수 있었다.

 

주어진 PHP 코드를 분석해보자.

1
2
3
4
<?php
    $pat="/[1-3][a-f]{5}_.*172.0.0.1.*\tp\ta\ts\ts/";
    if(preg_match($pat,$_GET[val])) { echo("Password is ????"); }
?>
cs

pat이라는 변수에 조건이 있고, GET을 통해 받은 val을 비교하여 값이 같으면 풀리는것 같다.

pat의 조건은 다음과 같이 정리할 수 있다.

코드 역할 충족할 값
[1-3] 1~3에서 1개를 선택합니다. 1
[a-f]{5}_ a~f에서 5개를 선택합니다. abcde
.*172.0.0.1.*   .*172.0.0.1.*
\tp\ta\ts\ts \t는 Tab이고, html 인코딩하면 %09이므로 치환한다. %09p%09a%09s%09s

 

위의 정리에 따라 우리가 넣을 파라미터는 다음과 같다는것을 알 수 있게 된다.

?val=1abcde.*172.0.0.1.*%09p%09a%09s%09s

 

넣고 접속하면 문제가 풀리게 된다.

풀이 완료!