<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
구성 코드이다.
low 레벨에서는 검사하지 않았던 파일 형식을 검사하며 jpeg와 png 파일만 업로드할 수 있게 만들었다.
파일을 전송할 때 type을 변조해서 요청을 보내야 할 거 같아서 burp suite를 이용하였다.
low레벨 실습 때 만들어 두었던 shell.php 파일을 선택하고
burp suite에서 intercept on을 누른 뒤 upload를 한다.
이렇게 패킷 정보를 확인할 수 있는데
content-type이 application/octet-stream으로 되어있다.
이 정보를 image/jpeg로 바꿔주고 forward로 요청을 보내면
이렇게 파일이 잘 저장되었다고 뜬다.
shell을 얻는데 성공했다.
'웹해킹 > DVWA' 카테고리의 다른 글
DVWA SQL Injection(medium) 롸업 (0) | 2023.11.15 |
---|---|
DVWA Insecure CAPTCHA(medium) 롸업 (0) | 2023.11.14 |
DVWA File Inclusion(medium) 롸업 (0) | 2023.11.14 |
DVWA CSRF(medium) 롸업 (0) | 2023.11.13 |
DVWA Command Injection(medium) 롸업 (0) | 2023.11.13 |