1
+ package com .vuln .v2 .controller ;
2
+
1
3
import java .io .BufferedReader ;
2
4
import java .io .InputStream ;
3
5
import java .io .InputStreamReader ;
@@ -27,9 +29,10 @@ public static void main(String[] args) throws Exception {
27
29
+ " for $user in doc(\" users.xml\" )/Users/User[name=$name] return $user/password" ;
28
30
conn = xqds .getConnection ();
29
31
XQExpression expr = conn .createExpression ();
30
- expr .bindString (new QName ("name" ), name , conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
32
+ expr .bindString (new QName ("name" ), name ,
33
+ conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
31
34
XQResultSequence result = expr .executeQuery (query );
32
- while (result .next ()){
35
+ while (result .next ()) {
33
36
System .out .println (result .getItemAsString (null ));
34
37
}
35
38
} catch (XQException e ) {
@@ -42,10 +45,11 @@ public void testRequestbad(HttpServletRequest request) throws Exception {
42
45
String name = request .getParameter ("name" );
43
46
XQDataSource ds = new SaxonXQDataSource ();
44
47
XQConnection conn = ds .getConnection ();
45
- String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + name + "'] return $user/password" ;
48
+ String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + name
49
+ + "'] return $user/password" ;
46
50
XQPreparedExpression xqpe = conn .prepareExpression (query );
47
51
XQResultSequence result = xqpe .executeQuery ();
48
- while (result .next ()){
52
+ while (result .next ()) {
49
53
System .out .println (result .getItemAsString (null ));
50
54
}
51
55
}
@@ -54,11 +58,12 @@ public void testRequestbad(HttpServletRequest request) throws Exception {
54
58
public void testRequestbad1 (HttpServletRequest request ) throws Exception {
55
59
String name = request .getParameter ("name" );
56
60
XQDataSource xqds = new SaxonXQDataSource ();
57
- String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + name + "'] return $user/password" ;
61
+ String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + name
62
+ + "'] return $user/password" ;
58
63
XQConnection conn = xqds .getConnection ();
59
64
XQExpression expr = conn .createExpression ();
60
65
XQResultSequence result = expr .executeQuery (query );
61
- while (result .next ()){
66
+ while (result .next ()) {
62
67
System .out .println (result .getItemAsString (null ));
63
68
}
64
69
}
@@ -68,22 +73,24 @@ public void testRequestbad1(HttpServletRequest request) throws Exception {
68
73
public void testStringtbad (@ RequestParam String nameStr ) throws XQException {
69
74
XQDataSource ds = new SaxonXQDataSource ();
70
75
XQConnection conn = ds .getConnection ();
71
- String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + nameStr + "'] return $user/password" ;
76
+ String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + nameStr
77
+ + "'] return $user/password" ;
72
78
XQPreparedExpression xqpe = conn .prepareExpression (query );
73
79
XQResultSequence result = xqpe .executeQuery ();
74
- while (result .next ()){
80
+ while (result .next ()) {
75
81
System .out .println (result .getItemAsString (null ));
76
82
}
77
83
}
78
84
79
85
@ RequestMapping
80
86
public void testStringtbad1 (@ RequestParam String nameStr ) throws XQException {
81
87
XQDataSource xqds = new SaxonXQDataSource ();
82
- String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + nameStr + "'] return $user/password" ;
88
+ String query = "for $user in doc(\" users.xml\" )/Users/User[name='" + nameStr
89
+ + "'] return $user/password" ;
83
90
XQConnection conn = xqds .getConnection ();
84
91
XQExpression expr = conn .createExpression ();
85
92
XQResultSequence result = expr .executeQuery (query );
86
- while (result .next ()){
93
+ while (result .next ()) {
87
94
System .out .println (result .getItemAsString (null ));
88
95
}
89
96
}
@@ -95,7 +102,7 @@ public void testInputStreambad(HttpServletRequest request) throws Exception {
95
102
XQConnection conn = ds .getConnection ();
96
103
XQPreparedExpression xqpe = conn .prepareExpression (name );
97
104
XQResultSequence result = xqpe .executeQuery ();
98
- while (result .next ()){
105
+ while (result .next ()) {
99
106
System .out .println (result .getItemAsString (null ));
100
107
}
101
108
}
@@ -107,7 +114,7 @@ public void testInputStreambad1(HttpServletRequest request) throws Exception {
107
114
XQConnection conn = xqds .getConnection ();
108
115
XQExpression expr = conn .createExpression ();
109
116
XQResultSequence result = expr .executeQuery (name );
110
- while (result .next ()){
117
+ while (result .next ()) {
111
118
System .out .println (result .getItemAsString (null ));
112
119
}
113
120
}
@@ -120,7 +127,7 @@ public void testReaderbad(HttpServletRequest request) throws Exception {
120
127
XQConnection conn = ds .getConnection ();
121
128
XQPreparedExpression xqpe = conn .prepareExpression (br );
122
129
XQResultSequence result = xqpe .executeQuery ();
123
- while (result .next ()){
130
+ while (result .next ()) {
124
131
System .out .println (result .getItemAsString (null ));
125
132
}
126
133
}
@@ -133,11 +140,26 @@ public void testReaderbad1(HttpServletRequest request) throws Exception {
133
140
XQConnection conn = xqds .getConnection ();
134
141
XQExpression expr = conn .createExpression ();
135
142
XQResultSequence result = expr .executeQuery (br );
136
- while (result .next ()){
143
+ while (result .next ()) {
137
144
System .out .println (result .getItemAsString (null ));
138
145
}
139
146
}
140
147
148
+ @ RequestMapping
149
+ public void testExecuteCommandbad (HttpServletRequest request ) throws Exception {
150
+ String name = request .getParameter ("name" );
151
+ XQDataSource xqds = new SaxonXQDataSource ();
152
+ XQConnection conn = xqds .getConnection ();
153
+ XQExpression expr = conn .createExpression ();
154
+ //bad code
155
+ expr .executeCommand (name );
156
+ //bad code
157
+ InputStream is = request .getInputStream ();
158
+ BufferedReader br = new BufferedReader (new InputStreamReader (is ));
159
+ expr .executeCommand (br );
160
+ expr .close ();
161
+ }
162
+
141
163
@ RequestMapping
142
164
public void good (HttpServletRequest request ) throws XQException {
143
165
String name = request .getParameter ("name" );
@@ -146,9 +168,10 @@ public void good(HttpServletRequest request) throws XQException {
146
168
String query = "declare variable $name as xs:string external;"
147
169
+ " for $user in doc(\" users.xml\" )/Users/User[name=$name] return $user/password" ;
148
170
XQPreparedExpression xqpe = conn .prepareExpression (query );
149
- xqpe .bindString (new QName ("name" ), name , conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
171
+ xqpe .bindString (new QName ("name" ), name ,
172
+ conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
150
173
XQResultSequence result = xqpe .executeQuery ();
151
- while (result .next ()){
174
+ while (result .next ()) {
152
175
System .out .println (result .getItemAsString (null ));
153
176
}
154
177
}
@@ -161,10 +184,12 @@ public void good1(HttpServletRequest request) throws XQException {
161
184
XQDataSource xqds = new SaxonXQDataSource ();
162
185
XQConnection conn = xqds .getConnection ();
163
186
XQExpression expr = conn .createExpression ();
164
- expr .bindString (new QName ("name" ), name , conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
187
+ expr .bindString (new QName ("name" ), name ,
188
+ conn .createAtomicType (XQItemType .XQBASETYPE_STRING ));
165
189
XQResultSequence result = expr .executeQuery (query );
166
- while (result .next ()){
190
+ while (result .next ()) {
167
191
System .out .println (result .getItemAsString (null ));
168
192
}
169
193
}
170
- }
194
+ }
195
+
0 commit comments