Holy ###. Are those actual requests? With parentheses and everything?
If your real filenames are nice-- which, ahem, of course they are-- you can get rid of most of those bogus requests with a simple and elegant
RewriteCond %{REQUEST_URI} [^a-z/._-] [OR]
RewriteCond %{REQUEST_URI} (\.\.|//|--|__)
RewriteRule (\.php|/)$ - [F]
Meaning: if the request contains anything other than a lower-case letter, hyphen, lowline (leave out one or the other if you don't use them) dot or directory slash, OR it contains two of something there would never be two of ... stomp on it. No anchors; the character(s) only have to occur somewhere in the request.
Can't remember if mod_rewrite can handle standard lookaheads. If so, you can add an [OR] condition that says
\.(?!php$)
Remember that requests for nonexistent files are not really a problem unless your custom 404 page is much much bigger than your 403 page. It's just, hm, the principle of the thing isn't it ;)
Now, if you are brave enough to use !
in the rule itself you can make a second Rule that includes the element
!(/|\.php|\.png)$ et cetera, listing your real-life extensions.
In mod_rewrite, the NOT character ('!') is also available as a possible pattern prefix. This enables you to negate a pattern; to say, for instance: "if the current URL does NOT match this pattern". This can be used for exceptional cases, where it is easier to match the negative pattern, or as a last default rule.
That's under Rule, not Cond. They left out the boilerplate about "do this with extreme caution".