写在前面:
本人是刚开始探索安全技术的小白一枚,所以各位大佬看到我的文章有错误一定要告诉我啊啊啊(不要喷我,捂脸逃走),大家一起进步,向成为一名大佬前进!~
我是用phpstudy(5.2版本)进行的阿帕奇和数据库的搭建,系统window7,这里有一个开始解决的问题是进行sqli-lab第一题注入时,系统一直将我的 ’ 转义成 /’ 。这里要修改phpstudy中的一个参数,关闭magic_quotes_gpc(魔术引号开关,会进行自动转义设置)
Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)
开始第一关因为转义字符的原因一直都进行不下去,所以就把第一种方法写在了第二关下,后来成功解决转义字符的问题,然后就用另一种方法来爆破第一关吧~
这里我们还是回到最基础的一个问题,如何判断这是一个什么注入,对比字符注入和数字型的注入:
字符型注入:
数字型注入:
可以看到字符型注入错误显示到单引号截止,而数字型注入会把所有的错误显示出来。
-
为什么用 ’ 就可以进行判断:
一开始SQL语句是这样的:
SELECT * FROM XXX WHERE id=‘1’
当加了单引号后变为:
SELECT * FROM XXX WHERE id=‘1’‘
这不符合语法规则,并进行报错,说明原来程序没有这种注入的防范措施,所以你要做的就是利用这个错误把他变成正确的并输入自己想进行的语句。 -
有用and语句进行判断:
XXX/?id=1’ and 1=1 --+ 可以
XXX/?id=1’ and 1=2 --+ 不可以
关于最后–+的作用,我是看这位大佬的博客理解的:https://zhuanlan.zhihu.com/p/23899464 (关于字符注入判断