迄今为止,在识别数据库时,MySQL如果处理某些内注释也是一个值得关注的问题。在
深圳网站设计公司所描述的大不多数技巧能够向常用数据库平台发动有效的攻击,任何差别都已通过对语法进行细微调整得到解决。我们已经知道如何提取常见数据库的版本字符串。即使由于某些原因无法提取到版本信息。我们还是可以使用其他方法识别数据库内容。
随着我们开始分析更高级的利用技巧,各种平台之间的差异变得更加明显,因此了解所针对的是合资类型的后端数据库就变得愈发重要。可靠地方式是根据数据库连接字符串的不同方式进行识别,在控制,偶像字符串数据库项的查询中,可以再一个请求中提交一个特性的值,然后测试各种连接方法,以生成字符串。下面
深圳方圆网络来示例来说明常用数据库如何构建services字符串。
Oracle:'serv'||'ices'
MS-SQL:'serv'+'ices'
MySQL:'serv' 'ices'
如果注入数字数据,即可以使用下面的攻击字符串来识别数据库。每个数据库目标数据库中的求值结果是0,在其他数据库中则会导致错误。
Oracle:BITAND(1,1)-BITAND(1,1)
MS-SQL:@@PACK_RECEIVED-@@PACK_RECEIVED
MySQL:CONNECTION_ID()-CONNECTION_ID()
如果一个注释以感叹号开头,接着是数据库版本字符串,那么只要数据库的诗句版本等于或高于那个字符串,应用程序就会经注释内容解释为SQL;否则,应用程序就会忽略注释内容,将它作为注释处理。与C中的预处理指令类似,程序员也在对以点加以利用,编写出根据所使用的数据库版本进行处理的不同代码。