Web Hacking/webhacking.kr 풀이

old-25 write-up

박연준 2024. 1. 11. 19:56

문제 정보

http://webhacking.kr:10001/

 

Challenge 25

 

webhacking.kr:10001

 

풀이

 

문제에 접속하면 file 파라미터로 hello를 받고 아래에는 644의 flag, hello, index의 php 파일과 그 아래는 hello word라는 hello의 파일을 읽어주는 것 같다.

 

 

 

file 파라미터 값에 flag를 입력하니 FLAG is in the code 라는 문자열이 출력된다. flag가 코드 안에 있다고 한다.

 

 

여기서 어떻게 해야하는지 조금 삽질을 했다. 커맨드 인젝션이나 그런 것도 아니고 PHP Wrapper라는 개념이 있다고 한다.

 

PHP Wrapper를 사용해서 이 문제를 풀 수 있는데, 이는 php에서 다른 파일을 동적으로 불러올 때 LFI 취약점이 발생할 수 있다. LFI 취약점은 다음과 같다.

 

LFI 취약점이란?

  • 공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격
  • php 코드상에서  include() 사용 시 input에 대한 적절한 필터링이 이루어지지 않아 발생하는 취약점

 

PHP Wrapper를 사용하는 방법은 여러 종류의 PHP Wrapper가 사용 가능하지만 base64로 가장 먼저 많이 시도한다고 한다.  사용 방법은 다음과 같다.

php://filter/convert.base64-encode/resource=[파일경로]

 

 

 

아래와 같이 file의 파라미터 값으로 PHP Wrapper의 base64 인코딩을 적용시켜 flag 파일을 요청하면 다음과 같이 base64로 인코딩 된 값을 확인할 수 있다.

 

 

 

이를 BurpSuite의 Decoder 탭에서 base64로 디코딩하면 다음과 같이 flag 값이 디코딩된 것을 확인할 수 있다. 이 문제를 통해서 앞으로 다른 문제가 또 나왔을 때 Command Injection만 생각하는게 아닌 PHP Wrapper의 방법도 있다는 새로운 방법을 알게 되었다. 

'Web Hacking > webhacking.kr 풀이' 카테고리의 다른 글

old-33 write-up  (0) 2024.01.12
old-36 write-up  (0) 2024.01.11
old-47 write-up  (0) 2024.01.11
old-27 write-up  (0) 2024.01.11
old-19 write-up  (0) 2024.01.11