在sqli33这一节中,用户所输入的 ’ 和 " 都会在前面加上一个反斜杠 \ 进行转义,目的大概是想限制用户输入单引号或者双引号,阻止用户试图闭合输入的操作。
这里提供了一种解决思路:
(大前提,PHP和MYSQL使用GBK编码)
输入%DF’
首先会在php中被函数加上反斜杠,即%DF’
然后全部转换成url编码,即%DF %5C %27 (其实中间没有空格,此处为方便理解)
而%DF%5C为一个GBK字符(汉字“縗”)
那么整体为" 縗’ "
按照php的弱数据类型比较规则,这个"縗"直接就没有了,而单引号则得以保留,这样就可以把单引号用来闭合了。
二次注入
对用户名或者密码的进行注入,利用网站数据库二次执行查询语句,来达到注入效果
以sqli24为例
这里我们打算对用户名为admin的账户进行修改密码的操作,步骤如下:
首先注册一个用户名为admin’ – -(这个有个"-- "是注释符,注意:–+并不可以在mysql中使用,只能在浏览器中使用) 密码为admin123(随便)
然后修改密码,在sql语句查询中就相当于直接在注入了,相当于在修改admin的账户信息。
本文系作者原创,若有错误恳请斧正,不胜感激。