mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-09 19:45:13 +02:00
Dynamic (#77)
This commit is contained in:
parent
55247b7fcd
commit
991c84a1eb
1464 changed files with 225448 additions and 1985 deletions
32
tests/dynamic_fixtures/xpath_injection/java/Benign.java
Normal file
32
tests/dynamic_fixtures/xpath_injection/java/Benign.java
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// Phase 07 (Track J.5) — Java XPATH_INJECTION benign control fixture.
|
||||
//
|
||||
// Same shape as `Vuln.java` but routes the attacker-controlled `name`
|
||||
// through a small XPath-string-literal escape helper before splicing
|
||||
// it into the expression, so the selector stays pinned to a single
|
||||
// node.
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
public class Benign {
|
||||
static String escapeXpathString(String s) {
|
||||
if (s.indexOf('\'') < 0) {
|
||||
return "'" + s + "'";
|
||||
}
|
||||
if (s.indexOf('"') < 0) {
|
||||
return "\"" + s + "\"";
|
||||
}
|
||||
return "concat('" + s.replace("'", "',\"'\",'") + "')";
|
||||
}
|
||||
|
||||
public static Object run(String name) throws Exception {
|
||||
Document doc = DocumentBuilderFactory.newInstance()
|
||||
.newDocumentBuilder()
|
||||
.parse("xpath_corpus.xml");
|
||||
XPath xp = XPathFactory.newInstance().newXPath();
|
||||
String expr = "//user[@name=" + escapeXpathString(name) + "]";
|
||||
return xp.evaluate(expr, doc, XPathConstants.NODESET);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue