민주의네모들

[Webhacking] Webhacking.kr 웹해킹 25번 풀이 본문

Security

[Webhacking] Webhacking.kr 웹해킹 25번 풀이

mjoooo 2020. 5. 7. 17:23
반응형

약 1년 전에 보안 동아리 활동하면서 풀었던 웹해킹..

FTZ, pawnable, LOB 등등 당시에는 뭐라도 해보겠다고 많이 풀었었는데 시간이 지난만큼 기억이 가물가물하다 ^^..

취준을 앞두고 있는 요즘 내가 무엇을 했는지 기록하는게 얼마나 중요한지 깨닫고

예전에 풀었던 문제들을 하나씩 리뷰해보려고 한다. (제발)

 

오늘은 webhacking.kr 의 25번 문제

 

 문제를 눌러서 나오는 첫 번째 화면이다. 

여러가지 파일 및 디렉토리의 권한 및 정보가 나와있다.

 

여기서 유심히 봐야할 것은 url이다. file=hello 라고 되어있는데 이를 보아하니 1. GET 방식으로 파일명을 받아오는 것 같다. 회색 창에는 hello world 라고 쓰여있는데 이는 hello.php라는 2. 파일이 회색 창에 출력되는 것이라고 유추할 수 있다. 또한 정확한 파일명은 hello.php인데 url 주소창에는 hello만 적혀 있으므로,

file 파라미터로 받아온 값에는 3. 자동으로 .php 를 붙혀 실행한다고 유추할 수 있다.

 

그러니 일단 flag.php 파일을 열기 위해 url의 file 파라미터로 'flag'를 입력해본다.

FLAG is in the code 라는 텍스트가 출력되었다. 

 

따라서 flag.php의 소스코드 안에 답이 있을 것 같은데..

 

이 문제에서는 이를 위해 'php://filter'라는 PHP Wrapper를 사용한다.

PHP는 입출력, 오류 파일 기술어 등에 엑세스 할 수 있는 다양한 I/O 스트림을 제공하는데 이것을 PHP Wrapper라고 한다. 이 문제에서 그 중 'php://filter'라는 wrapper를 사용할 것이다.

 

'php://filter'는 아래의 명령으로 사용할 수 있다.

php://filter/convert.base64-encode/resource='파일명'

 

이 코드의 결과는 '파일명'의 소스코드를 base64로 인코딩한 것을 출력한다.

따라서 우리는 url에 php://filter/convert.base64-encode/resource=flag 를 덧붙혀준 뒤,

base64로 인코딩된 flag.php 소스코드 (출력값) 을 디코딩하여 소스코드를 알아낼 수 있다!

 

회색창에 출력된 base64로 인코딩된 flag.php 소스코드를 복사하여 디코딩을 해준다.

(base64 디코딩은 https://www.base64decode.org/여기서 해주었다.)

 

Base64 Decode and Encode - Online

Decode from Base64 or Encode to Base64 with advanced formatting options. Enter our site for an easy-to-use online tool.

www.base64decode.org

디코딩된 값을 확인해보면 이 문제의 FLAG는 'FLAG{this_is_your_first_flag}'임을 알아낼 수 있었다.

 

 

성공!

 

 

 

그런데 1년 전에 풀었던 문제와 조금 달라졌다..

분명히 .txt 가 붙는 환경에서 password.php 를 열어보는 문제였는데 ㅠㅠㅠ

 

보아하니 전체적으로 문제가 update된 것 같다..

리뷰하면서 조금씩 바뀐 문제를 다시 풀어봐야할듯

반응형

'Security' 카테고리의 다른 글

[TrendMicro] Apex One 백신 리뷰  (2) 2021.01.20