WEBHACKING.KR 25번 문제 풀이
[ NULL TO FLAG ]
오늘은 webhacking.kr의 25번 문제를 풀어보자.
이 페이지의 파라미터값을 확인해보니 GET 메소드를 통해 file값을 전달하고 있었다.
첫값이 ?file=hello 인것으로 보아 이 사이트의 코드를 다음과 같이 예상했다.
<?php
if(!$_GET[file]){
echo '<meta http-equiv=refresh content=0;url=?file=hello>';
}
switch($_GET[file]){
case 'hello':
hello.txt 출력
break;
case 'index':
index.php 출력
break;
case 'password':
password.php 출력
break;
default:
hello.txt 출력
break;
}
?>
file값이 없으면 메타태그를 이용해 기본값이 hello인 file 파라미터를 생성해주고 확장자를 제거한 이름을 입력하면 그 파일을 열어주는것으로 예상했다.
하지만 예상대로 진행되지는 않았다.
file 파라미터를 통해 password 를 넘겨줬는데 결과값은 hello.txt 값이었다.
이 과정을 통해 새로운 사실을 찾게 되었다.
넘겨진 file 파라미터는 어떠한 코드에 의해 변조된다는 사실을 말이다.
<?php
if(!$_GET[file]){
echo '<meta http-equiv=refresh content=0;url=?file=hello>';
}
// 여기서 정체모를 코드에 의해 file값이 변조됨.
switch($_GET[file]){
case 'hello':
hello.txt 출력
break;
case 'index.php':
index.php 출력
break;
case 'password.php':
password.php 출력
break;
default:
hello.txt 출력
break;
}
?>
따라서 이제 우리는 이 값의 뒤에 null값을 추가해주자.
null을 인코딩하면 \0이므로, \이 다시 인코딩되어 0이 되는것을 방지하기 위해 %00을 넣고 실행하면 파라미터는 다음과 같이 생성된다.
?file=password.php%00
쨘!
WEBHACKING.KR 25번 문제 클리어!
'보안공부 > Webhacking.kr 풀이' 카테고리의 다른 글
webhacking.kr 12번 문제 풀이 - 아すき (0) | 2018.07.20 |
---|---|
webhacking.kr 26번 문제 풀이 - 두번인코딩 (0) | 2018.07.19 |
webhacking.kr 24번 문제 풀이 - FILTERED LOCALHOST (0) | 2018.07.17 |
webhacking.kr 18번 문제 풀이 - SQL주사기 (0) | 2018.07.17 |
webhacking.kr 17번 문제 풀이 - 콘솔계산기 (0) | 2018.07.10 |