본문 바로가기

Web Hacking/Webhacking.kr

[Webhacking.kr] old-25 write up

 

 

문제에 들어가면 쿼리스트링으로 file에 hello가 전달되고 있다. 페이지는 현재 경로의 파일들을 보여주는 듯하며 file에 파일명을 입력하면 내용을 보여주는 듯 보였다.

 

당연히 file에 flag를 넘겨 보았다.

 

 

다음과 같은 문자열만 나올 뿐 내가 원하는 flag는 나오지가 않았다. 가만 생각해보니 php 코드는 프론트에서 보이지 않기 때문에 개발자가 의도적으로 echo를 해주지 않는 이상 보이지가 않는게 당연하다. 

 

당연히 flag는 echo를 해주고 있지 않을거기 때문에 flag.php를 그대로 볼 수 있는 방법이 없나 생각했다.

 

php wrapper을 이용해서 base64 인코딩된 값으로 가지고 오도록 했다.

 

이 값을 디코딩하면 flag.php의 전체 코드일 것이다.

 

 

 

php wrapper


먼저 wrapper, 래퍼란 말 그대로 감싸준다는 의미를 가진다. 래퍼는 실제 데이터 앞에서 어떤 틀을 잡아주는 프로그램이다. 인터넷 상에서 흔히 쓰는 http:// 또한 래퍼라고 볼 수 있다.

 

php는 다양한 내장 래퍼들을 지원하며,  fopen(), copy(), file_exists(), filesize() 같은 것들이 있다.

심지어 커스텀하여 사용도 가능하다고 한다.

 

php가 지원하는 래퍼들 중 LFI나 RFI 취약점에 이용이 가능한 래퍼가 있다. 

 

1. except://

system command를 실행해준다.

ex) http://mooji.kr?page=except://ls 

 

2. php://filter

다양한 I/O 스트림을 다룬다.

ex) http://mooji.kr?page=php://filter/convert.base64-encode/resource=/etc/password

 

convert.base64-encode: 데이터를 base64로 인코딩

resource: 필터링할 stream을 명시

 

3. zip://

zip파일을 풀고 zip파일 안에 있는 특정 파일을 실행한다.

ex) http://mooji.kr?page?zip://file.zip#shell.php 

 

이외에도 다양한 래퍼들이 존재한다!

'Web Hacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-27 write up  (0) 2024.03.01
[Webhacking.kr] old-23 write up  (5) 2024.03.01
[Webhacking.kr] old-38 write up  (2) 2024.02.26
[Webhacking.kr] old-24 write up  (0) 2024.02.26
[Webhacking.kr] old-54 write up  (2) 2024.02.26