오늘은 그동안 못했던 웹해킹을 다시 해보려고 한다.
간단하게 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
넣고 접속하면 문제가 풀리게 된다.
'보안공부 > Webhacking.kr 풀이' 카테고리의 다른 글
Webhacking.kr 48번 문제 풀이 (0) | 2019.09.14 |
---|---|
webhacking.kr 44번 문제 풀이 (0) | 2019.09.13 |
webhacking.kr 47번 문제 풀이 (0) | 2018.09.12 |
webhacking.kr 33번 문제 풀이 (1) | 2018.09.06 |
webhacking.kr 32번 문제 풀이 (0) | 2018.08.29 |