25번을 클릭하니 linux 체제의 파일 목록과 함께 입력창에 hello world가 입력된 것을 볼 수 있다.
url을 보니 ?file=hello가 보내지는 걸 볼 수 있고, 파일 이름인 것 같아서 flag와 index를 추가로 입력해보았다.
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}를 입력하였더니 문제가 풀렸다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old 31번 문제 풀이 (0) | 2021.04.28 |
---|---|
Webhacking.kr old 27번 문제 풀이 (0) | 2021.04.27 |
Webhacking.kr old 19번 문제 풀이 (0) | 2021.04.27 |
Webhacking.kr old 54번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 39번 문제 풀이 (0) | 2021.04.10 |