SQLI-LABS(Less-9、10)
Less-9(GET-Blind-Time based-Single Quotes)
打开Less-9
页面,可以看到页面中间有一句Please input the ID as parameter with numeric value
,那么先使用ID
这个参数通过GET
方式传入一个数值。
确定注入点
注入语句:?id=1
。可以看出没有回显查询结果。
接着试一下?id=1'
,发现和?id=1
的页面没有区别,没有报错也无法判断成功还是失败。此时就可以考虑另一种盲注的方式:时间盲注
。
时间盲注与布尔型注入的区别在于,时间盲注是利用sleep()
或benchmark()
等函数让数据库执行的时间变长,根据返回页面的时间来判断使用的注入语句成功与否。时间盲注多与if函数结合使用。如:if(a,b,c)
,此if语句的含义是,如果a
为真则返回值为b
,否则返回值为c
。
根据本关的名字提示,得知SQL语句是单引号闭合,接着尝试?id=1' and if(1=1,sleep(2),0) --+
和?id=1' and if(1=2,sleep(2),0) --+
确定真的存在注入点,使用前一条注入语句时,网页两秒之后刷新成功,而使用第二条语句,直接返回,由此确定存在注入点。
根据返回时间确定数据
思路:
注入语句:?id=1' and if(length(database())>1,sleep(2),1)--+
,由此可以判断出当前数据库名。
此时就可以将上面注入语句中的database()
换成自己想要使用的语句,不断猜解得出数据,同上一关。
Less-10(GET-Blind-Time based-double Quotes)
第十关和第九关的思路是一样的,只是在注入语句中将闭合SQL语句使用的单引号换成了双引号。
确定存在注入点的语句:?id=1" and if(1=1,sleep(2),0) --+
、?id=1" and if(1=2,sleep(2),0) --+
。