sqlilab1-4关
sql注入操作步骤
1.判断是否存在注入(判断是否未严格校验)--第一要素
1)可控参数的改变能否影响页面的显示结果
2)输入的sql语句是否能够报错,通过数据库的报错我们可以看到数据库的一些语句痕迹
3)输入的sql语句能否不报错,语句能成功闭合
2.判断什么类型的注入
3.语句能否被恶意修改 -- 第二个要素
4.是否能够成功被执行 --第三个要素
5.获取我们想要的数据
less-2操作过程
1.输入?id=1看是否显示结果,在输入id=2查看是否显示不同的结果
2.使输入的sql语句报错(不闭合),通过查看报错信息来查看一些语句的信息
3.输入正确的sql语句,使其成功闭合--添加注释符#
4.在mysql数据库中存在information_schema库,这个库中保存着mysql数据库中的所有数据库和表的信息,我们需要记住这三个表schemata表(包含所有的数据库名字schema_name)、tables表(包含数据库中所有的表table_schema,table_name),columns表(字段名称,table_schema,table_name,column_name),通过mysql数据库中自带的这个数据库来进行操作。
5. 使用联合查询语句union来进行sql语句的拼接。
1)首先判断下前边的sql语句查询的列数,枚举法,可以用任意的数字来进行占位,我们首先判断只有一列,在判断两列,三列
2)利用mysql数据库中自带的库information_scheam来进行操作,找到所有的库,和正在使用的库
3)找到security库中所有的表
4)使用user表,查找表中所有字段
5)知道字段之后,我们就可以获取到全部的username和password了
less-1操作过程
1.输入?id=1看是否显示结果,在输入id=2查看是否显示不同的结果
2.使输入的sql语句报错(不闭合),通过查看报错信息来查看一些语句的信息
3.输入正确的sql语句,使其成功闭合--添加注释符--+(#不知道为啥不行)
4.使用联合查询语句union来进行sql语句的拼接。
1)使用order by确定列数(二分法查找,方便快捷,比直接一个一个测试来说效率更高)
2)使用union拼接sql,找到正在使用的库
3)找到库中的所有的表
4)查询得到emails表中所有的字段
5)得到表中数据
less-3操作过程
1.输入?id=1看是否显示结果,在输入id=2查看是否显示不同的结果
2..使输入的sql语句报错(不闭合),通过查看报错信息来查看一些语句的信息
3.输入正确的sql语句,使其闭合,添加)和注释符
4.使用order by 来确定有几列数据(通过以往经验我们知道有3列)
5.使用联合查询union
1)确定正在使用的数据库
2)确定库中的表
3)确定users表中的字段
4)知道表字段之后,获取我们想要的数据
less-4操作过程
1.输入?id=1看是否显示结果,在输入id=2查看是否显示不同的结果
2.使输入的sql语句报错(不闭合),通过查看报错信息来查看一些语句的信息
1)输入单引号发现没变化
2)输入双引号测试
3.输入能够闭合的sql语句
4.使用order by 来确定列数
5.使用union联合查询
1)确定正在使用的数据库
2)确定数据库中有哪些表
3)确定表中字段
4)查询想要的数据(这个表中没有任何数据)。。。。。。