打开Less-8页面,可以看到页面中间有一句Please input the ID as parameter with numeric value,那么先使用ID这个参数通过GET方式传入一个数值。
确定注入点
注入语句:?id=1。可以看出没有回显查询结果。
接着试一下?id=1',发现出错了,但是并不回显错误,。
根据本关的名字知道SQL语句使用单引号闭合。尝试使用单引号闭合注释看是否成功,注入语句:?id=1' --+
接着使用注入语句?id=1' and 1=1 --+和?id=1' and 1=2 --+确定是否存在注入点:
发现前一条注入语句正常,后一条注入语句报错,由此表明此处确实存在注入点。对于前端页面只能显示成功与失败的情况,可以考虑使用布尔型盲注。
确定数据库名
注入语句:?id=1' and length((select database()))>5 --+,length()函数会返回括号内的字符串长度,例如length('abc')返回3,表示字符串长度为3,这样上述语句就变成了查询当前数据表是否存在id为1并且当前数据库名长度是否大于5,而我们知道当前数据库存在id为1的用户,那么整个注入语句就可以直接用来判断当前数据库名的长度是否大于5。
从上图中可以看出数据库名的长度是大于5的,接着判断是否当前数据库名是否小于10,使用:?id=1' and length((select database()))