来源:自学PHP网 时间:2015-04-16 23:15 作者: 阅读:次
[导读] FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL。这是一款数据库管理系统,与oracle是同类型软件。08年左右的市场占有率为8%。上图为ITPUB社区开源数据库使用状况调查探测...
FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION
这里先介绍一下 POSTGRESQL 。这是一款数据库管理系统,与 oracle 是同类型软件。 08 年左右的市场占有率为 8% 。 上图为ITPUB社区开源数据库使用状况调查 探测 SQL 注入 本关可以说是 FROM SQL INJECTION TO SHELL 这关的延续。建议先通过之前的关。
这关基本上和 FROM SQL INJECTION TO SHELL 是类似的。共同的部分就不再介绍了。
这关的错误代码发生了变化
利用 SQL 注入 攻击方法还是用 UNION 和 ORDER BY 两种 SELECT id,name,price FROM articles where id=1 UNION SELECT 1 SELECT id,name,price FROM articles where id=1 UNION SELECT 1,2 SELECT id,name,price FROM articles where id=1 UNION SELECT 1,2,3
这里三种情况都有报错,但第三种情况报的错会不同。报错提示是数据类型不匹配。
再试试 ORDER BY 。这里很容易试出字段数量。超出查询字段数量,提示如下
检索信息 从上一步的 UNION 我们看到提示是数据类型不匹配,把数字改变成 null 试下。 UNION SELECT 'aaaa',null,null,null结果没有报错
我们再尝试下面几种情况 UNION SELECT 'aaaa' ,null,null,null 1 UNION SELECT null, 'aaaa' ,null,null 1 union select null,null, 'aaaa' ,null 1 union select null,null,null, 'aaaa'发现第 2 和 3 个没有报错,第 1,4 报数据类型不匹配。如果查看网页的 HTML ,会发现 'aaaa' 存在于 <img 中,这可以猜出第 3 字段应该是与图片的文件名。
我们采用第 2 个进行构建语句,查询 version(),current_user,current_database() 我注意到这里的函数与上一关的略有点不同,上一关的是version(),current_user(),current_database() 这是因为上一关的数据库是 MYSQL 。 http://www.vulnerable.com/cat.php?id=1%20union%20select%20null,version%28%29,null,null
接下来,我们尝试获取当前数据库的表名和字段。方法和 MYSQL 的类似。POSTGRESQL 也有一个 meta-information 数据库,我们可以构建语句查询
查询表名: SELECT tablename FROM pg_tables 查询所有字段: SELECT column_name FROM information_schema.columns
结合到实例中: UNION SELECT null,tablename,null,null FROM pg_tables 1 UNION SELECT null,column_name,null,null FROM information_schema.columns
同时取得字段和对应的表名 UNION SELECT null, table_name, column_name,null,null FROM information_schema.columns 1 UNION SELECT null,table_name||':'|| column_name,null,null FROM information_schema.columns.
上一关是用 contact 函数,而这个数据库不能用。
从结果中找到用户表 USERS 和它的字段
查出密码再解密还原。
登陆账号,注入文件
这里开始是本关的难点。 上一关用 .php3 就混过关, 这次又被过滤了。经尝试,只要带 php 的,统统被过滤。
这次要引入 .htaccess 文件 这个文件很多妙用,它与windows的autorun.inf有点类似。请查看 百度百科
htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
.htaccess 文件的内容如下,意思是增加一种 php 模块执行的后缀。 blah 后缀不太可能被过滤掉。
特别注意下" .htaccess "不是后缀,在 windows 图形界面下是难重命名成这个名字,需要 DOS 下改。
再把 shell.php3 更名为 shell.blah ,上传这两个到服务器。神奇的事就发生了。
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com