44import org .joychou .mapper .UserMapper ;
55import org .joychou .dao .User ;
66import org .springframework .beans .factory .annotation .Autowired ;
7+ import org .springframework .beans .factory .annotation .Value ;
78import org .springframework .web .bind .annotation .*;
89
9- import javax .servlet .http .HttpServletRequest ;
1010import java .sql .*;
11+ import java .util .List ;
1112
1213
1314/**
1617 * @desc SQL Injection
1718 */
1819
20+ @ SuppressWarnings ("Duplicates" )
1921@ RestController
2022@ RequestMapping ("/sqli" )
2123public class SQLI {
2224
2325 private static String driver = "com.mysql.jdbc.Driver" ;
24- private static String url = "jdbc:mysql://localhost:3306/java_sec_code" ;
25- private static String user = "root" ;
26- private static String password = "woshishujukumima" ;
26+ @ Value ("${spring.datasource.url}" )
27+ private String url ;
28+ @ Value ("${spring.datasource.username}" )
29+ private String user ;
30+ @ Value ("${spring.datasource.password}" )
31+ private String password ;
2732
2833 @ Autowired
2934 private UserMapper userMapper ;
@@ -36,7 +41,7 @@ public class SQLI {
3641 * @param username username
3742 */
3843 @ RequestMapping ("/jdbc/vul" )
39- public static String jdbc_sqli_vul (@ RequestParam ("username" ) String username ){
44+ public String jdbc_sqli_vul (@ RequestParam ("username" ) String username ){
4045 String result = "" ;
4146 try {
4247 Class .forName (driver );
@@ -88,7 +93,7 @@ public static String jdbc_sqli_vul(@RequestParam("username") String username){
8893 * @param username username
8994 */
9095 @ RequestMapping ("/jdbc/sec" )
91- public static String jdbc_sqli_sec (@ RequestParam ("username" ) String username ){
96+ public String jdbc_sqli_sec (@ RequestParam ("username" ) String username ){
9297
9398 String result = "" ;
9499 try {
@@ -134,6 +139,28 @@ public static String jdbc_sqli_sec(@RequestParam("username") String username){
134139 return result ;
135140 }
136141
142+ /**
143+ * vul code
144+ * http://localhost:8080/sqli/mybatis/vul01?username=joychou' or '1'='1
145+ *
146+ * @param username username
147+ */
148+ @ GetMapping ("/mybatis/vul01" )
149+ public List <User > mybatis_vul1 (@ RequestParam ("username" ) String username ) {
150+ return userMapper .findByUserNameVul (username );
151+ }
152+
153+ /**
154+ * vul code
155+ * http://localhost:8080/sqli/mybatis/vul02?username=joychou' or '1'='1' %23
156+ *
157+ * @param username username
158+ */
159+ @ GetMapping ("/mybatis/vul02" )
160+ public List <User > mybatis_vul2 (@ RequestParam ("username" ) String username ) {
161+ return userMapper .findByUserNameVul2 (username );
162+ }
163+
137164
138165 /**
139166 * security code
@@ -142,20 +169,18 @@ public static String jdbc_sqli_sec(@RequestParam("username") String username){
142169 * @param username username
143170 */
144171 @ GetMapping ("/mybatis/sec01" )
145- public User mybatis_vul1 (@ RequestParam ("username" ) String username ) {
172+ public User mybatis_sec1 (@ RequestParam ("username" ) String username ) {
146173 return userMapper .findByUserName (username );
147174 }
148175
149-
150-
151176 /**
152177 * security code
153178 * http://localhost:8080/sqli/mybatis/sec02?id=1
154179 *
155180 * @param id id
156181 */
157182 @ GetMapping ("/mybatis/sec02" )
158- public User mybatis_v (@ RequestParam ("id" ) Integer id ) {
183+ public User mybatis_sec2 (@ RequestParam ("id" ) Integer id ) {
159184 return userMapper .findById (id );
160185 }
161186
@@ -165,7 +190,7 @@ public User mybatis_v(@RequestParam("id") Integer id) {
165190 * http://localhost:8080/sqli/mybatis/sec03
166191 **/
167192 @ GetMapping ("/mybatis/sec03" )
168- public User mybatis_vul2 () {
193+ public User mybatis_sec3 () {
169194 return userMapper .OrderByUsername ();
170195 }
171196
0 commit comments