Wargame/Webhacking.kr

Webhacking.kr old 25번 문제 풀이

esyeonge 2021. 4. 27. 19:28

25번을 클릭하니 linux 체제의 파일 목록과 함께 입력창에 hello world가 입력된 것을 볼 수 있다.

url을 보니 ?file=hello가 보내지는 걸 볼 수 있고, 파일 이름인 것 같아서 flag와 index를 추가로 입력해보았다.

 

?file=index 실행 결과
?file=flag 실행 결과

index 파일에는 별다른 내용이 없었고 flag 파일의 내용을 보았더니 FLAG is in the code이라고 출력되었다.

 

그래서 코드를 보았더니 코드에서 알아낼 수 있는 게 없었다.

 

이후 code 파일을 찾아보려고 했으나, 찾지 못했고 구글에 찾아보니 LFI 취약점을 통해 푸는 문제임을 알 수 있었다. 

cf) LIF(Local File Inclusion) 취약점 : 대상이 되는 파일이 공격 대상의 서버에 존재하고,
서버에 존재하는 파일에 접근하여 원하는 값을 얻을 수 있는 것

 

PHP Wrapper를 써서 이 문제를 풀 수 있었는데, 그 중에서도 php://filter를 사용하였다.

php://filter를 사용하면 대상이 되는 파일의 내용을 decode 혹은 encode 하여 보여준다.

이 문제에서는 base64를 이용하여 인코딩 하였고, base64를 이용하는 구문은

'php://filter/conver.base64-encode/resource=파일 이름' 이다.

 

url에 위와 같이 입력하였더니 base64로 인코딩 된 값이 나왔고, 이를 디코딩 하였더니 다음과 같은 결과가 나왔다.

 

이를 바탕으로 auth에 FLAG{this_is_your_first_flag}를 입력하였더니 문제가 풀렸다.