본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 43번

by Hevton 2020. 11. 10.
반응형

메인화면

 

cat /flag 역할을 하는 웹 쉘을 업로드하라고 한다.

 

 

웹 쉘 

 

웹페이지의 '웹' 과 서버에게 명령을 내려 실행하기 위한 인터페이스 역할을 하는 '쉘'의 합성어로

웹페이지에서 서버에게 명령을 실행하기 위해 만들어진 프로그램이다.

Server Side Script 형태를 갖는다.

 

 

그래서 이런 소스를 작성했다. ( webshell.php )

<?php

system("cat /flag");

?>

 

그리고 이 소스를 갖는 파일을 업로드해보니, Wrong Type 이라는 에러가 뜬다. 아마 php 형태의 파일을 업로드하지 못하게 막아놨을 것이다. 그래서 어떤 확장자가 허용되어있나 확인하던 중 .jpg 파일은 잘 업로드되는것을 확인할 수 있었다.

 

그래서 처음엔 Null Byte Injection을 수행하여, BurpSuite같은 프록시 툴에서 webshell.php%00.jpg 를 넘겨주었으나 먹히지 않았다.

이런 방식의 널 바이트 인젝션이 php 버전 5.3인지 이후부터 막혔다고 알고 있었는데 역시 먹히지 않았다.

 

그래서 다음엔 .htaccess 파일을 아래와 같이 만든 뒤 업로드하여, php 확장자를 입력하지 않아도 php로 인식되게끔 시도해보기도 했다.

-> /hello/webshell.php 인 것을, /hello/webshell 이라고만 입력해도 php로 인식하게끔 하는 작업.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

 

그리고 .htaccess 파일을 업로드하려고 했으나, Dont do that 이라며 막혀있다 ㅋㅋ

 

후.. 그래서 또 다른 방법으로 접근해봤다.

BurpSuite를 통해 파일을 업로드하는 패킷을 잡을 때, 중요하게 보아야 할 것은 Content-Type 항목이다.

.jpg 형태의 파일을 업로드할 때엔 " Content-Type: image/jpeg " 이라는 것을 확인할 수 있고, .php 파일을 업로드할 때엔 " Content-Type: text/php " 임을 확인할 수 있다. 따라서 파일이름은 webshell.php로 그대로 두되, 이번엔 Content-Type 을 image/jpeg로 주어 우회를 시도했다. php 파일이라고 인식하지 않게끔 해주는 것이다. 

 

결과는 성공적으로 업로드된다. 그리고 업로드된 파일을 확인해보면 Flag값이 이렇게 나온다.

 

FLAG{V2hhdCBkaWQgeW91IGV4cGVjdD8=}

 

괄호안의 내용이 Base64인코딩 되어 있는 것 같으니 디코딩 해주면

 

FLAG{What did you expect?} 가 나온다.

 

뭘 기대했냐는 뜻이 나오길래 뭐지 했는데, 역시 이걸 Auth에 넣어보니 답이 아니였다 ㅋㅋ 그냥 Base64인코딩 되어있는 FLAG{V2hhdCBkaWQgeW91IGV4cGVjdD8=} 자체가 정답이였다.

 

 

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 45번 & 나중에 알게 되면 다시보기  (0) 2020.11.13
[Webhacking.kr] 44번  (0) 2020.11.12
[Webhacking.kr] 42번  (0) 2020.11.10
[Webhacking.kr] 41번  (0) 2020.11.10
[Webhacking.kr] 40번  (0) 2020.11.05