33
44import org .joychou .mapper .UserMapper ;
55import org .joychou .dao .User ;
6+ import org .joychou .security .SecurityUtil ;
7+ import org .slf4j .Logger ;
8+ import org .slf4j .LoggerFactory ;
69import org .springframework .beans .factory .annotation .Autowired ;
710import org .springframework .beans .factory .annotation .Value ;
811import org .springframework .web .bind .annotation .*;
1215
1316
1417/**
15- * @author JoyChou ([email protected] ) 16- * @date 2018.08.22
17- * @desc SQL Injection
18+ * SQL Injection
19+ * @author JoyChou @2018.08.22
1820 */
1921
2022@ SuppressWarnings ("Duplicates" )
2123@ RestController
2224@ RequestMapping ("/sqli" )
2325public class SQLI {
2426
27+ private static Logger logger = LoggerFactory .getLogger (SQLI .class );
2528 private static String driver = "com.mysql.jdbc.Driver" ;
29+
2630 @ Value ("${spring.datasource.url}" )
2731 private String url ;
32+
2833 @ Value ("${spring.datasource.username}" )
2934 private String user ;
35+
3036 @ Value ("${spring.datasource.password}" )
3137 private String password ;
3238
@@ -35,12 +41,12 @@ public class SQLI {
3541
3642
3743 /**
38- * Vul Code.
44+ * Vuln Code.
3945 * http://localhost:8080/sqli/jdbc/vul?username=joychou
4046 *
4147 * @param username username
4248 */
43- @ RequestMapping ("/jdbc/vul " )
49+ @ RequestMapping ("/jdbc/vuln " )
4450 public String jdbc_sqli_vul (@ RequestParam ("username" ) String username ){
4551 String result = "" ;
4652 try {
@@ -50,37 +56,28 @@ public String jdbc_sqli_vul(@RequestParam("username") String username){
5056 if (!con .isClosed ())
5157 System .out .println ("Connecting to Database successfully." );
5258
53- // sqli vuln code 漏洞代码
59+ // sqli vuln code
5460 Statement statement = con .createStatement ();
5561 String sql = "select * from users where username = '" + username + "'" ;
56- System . out . println (sql );
62+ logger . info (sql );
5763 ResultSet rs = statement .executeQuery (sql );
5864
59-
60- System .out .println ("-----------------" );
61-
6265 while (rs .next ()){
6366 String res_name = rs .getString ("username" );
6467 String res_pwd = rs .getString ("password" );
6568 result += res_name + ": " + res_pwd + "\n " ;
66- System .out .println (res_name + ": " + res_pwd );
67-
69+ logger .info (res_name + ": " + res_pwd );
6870 }
6971 rs .close ();
7072 con .close ();
7173
7274
7375 }catch (ClassNotFoundException e ) {
74- System .out .println ("Sorry,can`t find the Driver!" );
75- e .printStackTrace ();
76+ logger .error ("Sorry,can`t find the Driver!" );
7677 }catch (SQLException e ) {
77- e . printStackTrace ( );
78+ logger . error ( e . toString () );
7879 }catch (Exception e ) {
79- e .printStackTrace ();
80-
81- }finally {
82- System .out .println ("-----------------" );
83- System .out .println ("Connect database done." );
80+ logger .error (e .toString ());
8481 }
8582 return result ;
8683 }
@@ -103,62 +100,60 @@ public String jdbc_sqli_sec(@RequestParam("username") String username){
103100 if (!con .isClosed ())
104101 System .out .println ("Connecting to Database successfully." );
105102
106-
107103 // fix code
108104 String sql = "select * from users where username = ?" ;
109105 PreparedStatement st = con .prepareStatement (sql );
110106 st .setString (1 , username );
111- System . out . println (st .toString ()); // sql after prepare statement
107+ logger . info (st .toString ()); // sql after prepare statement
112108 ResultSet rs = st .executeQuery ();
113109
114- System .out .println ("-----------------" );
115-
116110 while (rs .next ()){
117111 String res_name = rs .getString ("username" );
118112 String res_pwd = rs .getString ("password" );
119113 result += res_name + ": " + res_pwd + "\n " ;
120- System .out .println (res_name + ": " + res_pwd );
121-
114+ logger .info (res_name + ": " + res_pwd );
122115 }
116+
123117 rs .close ();
124118 con .close ();
125119
126-
127120 }catch (ClassNotFoundException e ) {
128- System . out . println ("Sorry,can`t find the Driver!" );
121+ logger . error ("Sorry,can`t find the Driver!" );
129122 e .printStackTrace ();
130123 }catch (SQLException e ) {
131- e . printStackTrace ( );
124+ logger . error ( e . toString () );
132125 }catch (Exception e ) {
133- e .printStackTrace ();
134-
135- }finally {
136- System .out .println ("-----------------" );
137- System .out .println ("Connect database done." );
126+ logger .error (e .toString ());
138127 }
139128 return result ;
140129 }
141130
142131 /**
143- * vul code
144- * http://localhost:8080/sqli/mybatis/vul01 ?username=joychou' or '1'='1
132+ * vuln code
133+ * http://localhost:8080/sqli/mybatis/vuln01 ?username=joychou' or '1'='1
145134 *
146135 * @param username username
147136 */
148- @ GetMapping ("/mybatis/vul01 " )
149- public List <User > mybatis_vul1 (@ RequestParam ("username" ) String username ) {
150- return userMapper .findByUserNameVul (username );
137+ @ GetMapping ("/mybatis/vuln01 " )
138+ public List <User > mybatisVuln01 (@ RequestParam ("username" ) String username ) {
139+ return userMapper .findByUserNameVuln01 (username );
151140 }
152141
153142 /**
154143 * vul code
155- * http://localhost:8080/sqli/mybatis/vul02 ?username=joychou' or '1'='1' %23
144+ * http://localhost:8080/sqli/mybatis/vuln02 ?username=joychou' or '1'='1' %23
156145 *
157146 * @param username username
158147 */
159- @ GetMapping ("/mybatis/vul02" )
160- public List <User > mybatis_vul2 (@ RequestParam ("username" ) String username ) {
161- return userMapper .findByUserNameVul2 (username );
148+ @ GetMapping ("/mybatis/vuln02" )
149+ public List <User > mybatisVuln02 (@ RequestParam ("username" ) String username ) {
150+ return userMapper .findByUserNameVuln02 (username );
151+ }
152+
153+ // http://localhost:8080/sqli/mybatis/orderby/vuln03?sort=1 desc%23
154+ @ GetMapping ("/mybatis/orderby/vuln03" )
155+ public List <User > mybatisVuln03 (@ RequestParam ("sort" ) String sort ) {
156+ return userMapper .findByUserNameVuln03 (sort );
162157 }
163158
164159
@@ -169,7 +164,7 @@ public List<User> mybatis_vul2(@RequestParam("username") String username) {
169164 * @param username username
170165 */
171166 @ GetMapping ("/mybatis/sec01" )
172- public User mybatis_sec1 (@ RequestParam ("username" ) String username ) {
167+ public User mybatisSec01 (@ RequestParam ("username" ) String username ) {
173168 return userMapper .findByUserName (username );
174169 }
175170
@@ -180,7 +175,7 @@ public User mybatis_sec1(@RequestParam("username") String username) {
180175 * @param id id
181176 */
182177 @ GetMapping ("/mybatis/sec02" )
183- public User mybatis_sec2 (@ RequestParam ("id" ) Integer id ) {
178+ public User mybatisSec02 (@ RequestParam ("id" ) Integer id ) {
184179 return userMapper .findById (id );
185180 }
186181
@@ -190,9 +185,14 @@ public User mybatis_sec2(@RequestParam("id") Integer id) {
190185 * http://localhost:8080/sqli/mybatis/sec03
191186 **/
192187 @ GetMapping ("/mybatis/sec03" )
193- public User mybatis_sec3 () {
188+ public User mybatisSec03 () {
194189 return userMapper .OrderByUsername ();
195190 }
196191
197192
193+ @ GetMapping ("/mybatis/orderby/sec04" )
194+ public List <User > mybatisOrderBySec04 (@ RequestParam ("sort" ) String sort ) {
195+ return userMapper .findByUserNameVuln03 (SecurityUtil .sqlFilter (sort ));
196+ }
197+
198198}
0 commit comments