이번에는 webhacking.kr의 old-25번 문제입니다. php를 이용하는 문제고 150점이 배점되어 있습니다.
들어가보면 위와 같은 화면이 출력됩니다.
위 문자열들은 리눅스의 ls 명령어를 사용한 것으로 보여지고, 그 아래 textarea에는 hello world라고 적혀있습니다.
소스 코드를 보겠습니다.
별로 건질 것이 없어 보입니다. URL을 확인하여 보겠습니다.
GET 방식으로 file이라는 name에 hello가 대입된 것으로 확인됩니다.
textarea에 hello world가 적힌 것으로 보아 file에 hello.php를 넣어서 열린 것으로 확인됩니다.
디렉터리에 flag.php, hello.php, index.php가 있으므로 URL에 index와 flag를 넣어보겠습니다.
index
flag
index를 넣으면 아무 값도 나오지 않고, flag를 넣으면 'FLAG is in the code'라는 문자열이 나옵니다.
이로써 자동으로 flag 뒤에 .php를 붙여주는 방식인 것을 확인할 수 있습니다.
찾아보니 이번 문제는 'PHP Wrapper'라는 방식을 사용해야 합니다.
'PHP Wrapper' 방식 중 'php://filter'라는 기능을 사용해야 합니다.
기존 주소/?file=php://filter/convert.base64-encode/resource=파일이름
기존 주소/?page=php://filter/convert.base64-encode/resource=파일이름
위와 같은 URL 형식을 사용하면 파일의 내용을 base64 형식으로 암호화된 상태로 볼 수 있습니다.
그럼 URL에 다음과 같이 입력해 보겠습니다.
?file=php://filter/convert.base64-encode/resource=flag
flag.php의 내용이 base64 형식으로 암호화된 상태로 textarea에 출력됩니다. 이를 base64 형태로 복호화해줍니다.
flag.php의 내용이 정상적으로 출력됩니다. webhacking.kr 홈페이지의 Auth 탭으로 가서 flag를 입력해줍니다.
문제를 해결하였습니다.
'웹 해킹 (Web) > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 웹해킹.kr old-15번 (50) (0) | 2020.09.19 |
---|---|
[webhacking.kr] 웹해킹.kr old-33번 (200) (0) | 2020.09.19 |
[webhacking.kr] 웹해킹.kr old-23번 (200) (0) | 2020.09.19 |
[webhacking.kr] 웹해킹.kr old-26번 (100) (0) | 2020.09.19 |
[webhacking.kr] 웹해킹.kr old-24번 (100) (0) | 2020.09.19 |