; o. i6 s2 M2 ?1 I3 Y0 ?3 aINSERT INTO `article` VALUES (1, '我是一个不爱读书的孩子', '中国的教育制度真是他妈的落后!如果我当教育部长。我要把所有老师都解雇!操~'); * o% ~* Z' \7 ?# I$ ]3 T* p
INSERT INTO `article` VALUES (2, '我恨死你', '我恨死你了,你是什么东西啊'); 7 D. k1 T/ g9 I ~, U; S3 v5 H( f. h% ?' A+ X
# -------------------------------------------------------- 8 t4 E% U* h$ C7 T2 ]' j
! p( x) A' I, a7 @# O# ; _) B$ Q( K3 u9 W3 I1 K3 z
# 表的结构 `user` - z0 Q* b3 Q$ j: t% X. `# ! r7 N1 d6 ^) _6 f
1 [. F" s) h& ?( |+ [3 HCREATE TABLE `user` ( 8 r$ m- f. f* K
`userid` int(11) NOT NULL auto_increment, 7 F5 p7 v& `- F1 f- b
`username` varchar(20) NOT NULL default '', h n3 a* z' f: Z
`password` varchar(20) NOT NULL default '', 6 c) I; k' v( n- y# uPRIMARY KEY (`userid`) ( W) u: G( L U m z5 L
) TYPE=MyISAM AUTO_INCREMENT=3 ; % Z0 o1 l/ v# D) B
: b" H+ o$ w3 X7 M) S+ H( \# " d! C: U4 v& W V( A$ Y
# 导出表中的数据 `user` : {( U& j H9 v* D& W6 @% P. t
# " |' x+ w- W. k+ ^. a3 t 2 [" P! ~2 H! B) VINSERT INTO `user` VALUES (1, 'angel', 'mypass'); & C; p. g5 g+ n
INSERT INTO `user` VALUES (2, '4ngel', 'mypass2');2 W7 X/ p4 M: [; t( l
/ C6 I' T9 d( ~( @! o+ H( ?
, x3 v4 m3 d6 s# G
代码只是对查询结果进行简单的判断是否存在,假设我们已经设置display_errors=Off。我们这里就没办法利用union select的替换直接输出敏感信息(ps:这里不是说我们不利用union,因为在mysql中不支持子查询)或通过错误消息返回不同来判断注射了。我们利用union联合查询插入BENCHMARK函数语句来进行判断注射: 5 O2 r1 L& M, O& R 6 u; a# i! k9 E! b5 q8 G& Oid=1 union select 1,benchmark(500000,md5('test')),1 from user where userid=1 and ord(substring(username,1,1))=97 /* 0 S+ F. o5 q1 p! A & G# y0 Z+ f( j3 a4 c4 f