Sending a file via POST using raw HTTP (Putty)

If I set up an html page with the following form:

<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html> 

I can upload the file to upload_file.php file, where I can process it using php script.

For testing purposes, I need to do the same using raw HTTP through a Putty session.

I can do a regular POST (just sending text data) as follows:

 POST /test_post.php HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 11 name=myname 

How can I send a file this way?

+8
post putty
source share
2 answers

You should use multipart content-type and encode the file data in hex / binary

Try the following in telnet:

 POST /the_url HTTP/1.1 User-Agent: Mozilla Host: www.example.com Content-Length: xxxx Content-Type: multipart/form-data; boundary=--------------------31063722920652 ------------------------------31063722920652 Content-Disposition: form-data; name="a" value_for_a ------------------------------31063722920652 Content-Disposition: form-data; name="b" value_for_b ------------------------------31063722920652 Content-Disposition: form-data; name="c"; filename="myfile.txt" Content-Type: text/plain This is a test and more -----------------------------31063722920652 Content-Disposition: form-data; name="submit" Submit -----------------------------31063722920652-- 

Remember that an extra line is required between the field name and its data. Also update the Content-Length value.

+14
source

Open the port with netcat and save the incoming request:

 nc -l -p 1090 > income-http.txt 

Then change the form to send data to netcat:

 <form action="http://localhost:1090/upload_file.php" method="post" enctype="multipart/form-data"> 

Submit the form in your browser. You can find the complete raw request with the contents of the file in the income-http.txt .

Saving income-http.txt is a one-time activity. You can send a saved request at any time later. Note that you must edit the Host: header in the saved txt.

+4
source

All Articles