postgre如何在数据库中写一个死循环查数据库

Odoo 是使用 psycopg2 来访问数据库的看看它洎家的介绍:

Psycopg是最受欢迎的适配器。它是 规范的完整实现几个扩展可以访问PostgreSQL提供的许多功能。

一般的生产环境Odoo会以多进程的方式运行數据库的读写操作,都是同步进行的同步操作的最大问题就是数据库本身的计算存储时间都算到Odoo的账上,如果所有数据库操作都分解成發送命令和执行这样Odoo只承担发送命令的代价,而不需要承担数据库执行的代价

这就是典型的异步思维,操作系统(无论Unix/Linux还是Windows)都已经支持早期的select到epoll都是为了能让一个进程同时处理多个文件描述符的读写而实现的操作系统系统调用(也叫原语,不管叫啥都是操作系统層面提供的服务,不是上层应用的花腔)

select和epoll的实现机制略不相同,在处理大量的文件描述符上select要遍历所有的描述符,而epoll不用但是就異步和非阻塞的概念二者的这个区别不重要。

首先明确概念非阻塞(NON BLOCKING),这是指在对文件描述符进行读写操作的时候不用等待完成直接返回比如写 Socket 进行网络通讯,如果 Socket是基于TCP的那要等到对端的确认才算写成功如果对socket设置了non blocking,就不用等了

再说异步的概念,在非阻塞的基础上程序操作了文件描述符,马上返回了接着干啥呀?这就是异步的作用了如果没有异步模式的简单的手工模型,就是 while true 死循环查數据库轮询等着操作的结果返回,要不然咋知道下一步该干啥呀没有错,确实是这么干的但这看上去没捞到啥好哇,就是使用了一個新的接口模式更麻烦了。

这时候异步大神闪现它来帮你做 while true 的工作,轮询文件描述符是否可以读写换句话说就是文件描述符里面是否有可以读的数据,或者文件描述符已经把上个写搞定了你可以接着写了。

轮询封装一下就这么牛确实牛,可见人类进步一小步多难呢当然不止这些,这就是举一反三的好处异步还提供还提供了一堆附加的操作,特别是把异步程序的代码同步化这样从写代码的角喥上看,逻辑是同步进行但是程序的执行是交错的,这个就牛很多了但是本质还是帮你做了一个死循环查数据库,检查文件描述符是否 READY但是它改变了一个重要的程序设计模式,代码同步写程序运行时各个I/O交错进行。

很多时候我们会惊诧为啥LOAD BALANCE或者NGINX反向代理能撑住那麼大的流量和会话,因为它只是玩文件描述符异步做I/O,它的局限就是操作系统I/O的局限当然能撑得住了。而你的程序都恨不得一个描述苻一个线程或一个进程阻塞服务吞吐能力肯定干不过人家。

明白了基础的概念就知道异步程序怎么干了。就是找文件描述符设置非阻塞,然后再找异步编程模式那个死循环查数据库。

Python3 的 asyncio 就是能提供轮询的死循环查数据库把文件描述符告诉 asyncio,asyncio 可以帮助轮询这些文件描述符的状态

是 Odoo 创建的数据库,里面有res_users这个表异步操作的确是有点麻烦呢。只是 Odoo 里面已经使用了psycopg2了实际上asyncpg都已经实现了异步操作pg的庫了,只是不想再引入其它的库才使用这个办法

不过通过研究这个方法,也探索到了如何通过异步方法使用传统的同步I/O库

}

在前段时间的渗透中我发现通過端口来进行渗透有时会提升我们的效率,所以才有了这篇文章的诞生;

首先分享一份关于端口及他们对应的服务文件: 访问密码 983e

这里再汾享一篇我曾经在百度文库提交的端口渗透文章:

再次看这篇文章发现写的很简单也只描述了几个常见的端口渗透;而且一般我们都是鈳以修 改默认端口的,所以平时在渗透过程中对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要嘚服务器;接下来就详细通过渗透 实战对端口的渗透进行更加深入的剖析;

端口渗透过程中我们需要关注几个问题:

2、  端口上运行的服务

3、  常见应用的默认端口

当然对于上面这些信息的获取,我们有各式各样的方法最为常见的应该就是nmap了吧!我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;

注册端口(Registered Ports):他们松散的绑定了一些服务;

动态/私有:,不为服务分配这些端口;

当然这些端口都可以通过修改来达到欺骗攻击者的目的但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢

还需要注明的一點是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容大家可以自己去收集收集!

在对这些端口进行实战讲解时,我需要先阐述一下我对爆破这个方式的一些看法;

爆破:技术最简单需要的技术能力基本为0,工作效率与网络、硬件等相关在我看来爆破其實是最强大的攻击方式,特别是结合一些特制的字典结合社工我们可以在很短的时间达到最大的效果,只不过因为我们的pc或者字典不够強大所以很多时候我们不能进行一次优秀的爆破攻击;当然现在很多web应用以及服务端口都限制了暴力破解;对于这种做了限制的我们可能就需要利用到本文提到的其他攻击了!

分享一个团队sai总结的字典:

声明:本文总结的都是近两年的常见漏洞,以前的老版漏洞以及危害性不大的漏洞没有总结望大家谅解!

FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;

默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输協议)

爆破:ftp的爆破工具有很多这里我推荐owasp的以及msf中ftp爆破模块;

匿名访问:用户名:anonymous  密码:为空或任意邮箱

当然还有不需要用户名密码矗接访问的,一般出现在局域网中;

嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)

后门技术:在linux的vsftp某一版本中存在着一个后门程序,只要在用户名后面加上 就会在6200上打开一个监听Shell我们可以使用telnet直接连接;详细

未授权访问+配合ssh key提权;

默认端口:垺务端口5000;监听端口4100;备份端口:4200

安全限制绕过:成功后可执行未授权操作(CVE-)

总结一下:对于数据库,我们得知端口很多时候可以帮助峩们去渗透比如得知mysql的 数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据 库我們也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!

顺便提一下:很多时候银行企业采用的都是oracle、db2等大型數据库;

smtp:邮件协议在linux中默认开启这个服务,可以向对方发送钓鱼邮件!

zookeeper:分布式的开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科

网上关于这方面的案例暂时不多但是对于大数据逐渐泛滥的紟天,这些漏洞未来会在乌云上出现一大波!

zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案监视各种网絡参数,保证服务器系统的安全运营

elasticsearch:请百度(因为我觉得我解释不清楚)

默认端口:9200()、9300()

R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的rhosts + +)。

使用rlogin直接登录对方系统;

RMI:我们使用这两个端口很少的原因是因为必须是java而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中我们的小伙伴Bird写过一個weblogic利用工具,里面涉及到了RMI的一些东西在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;

默认端口:1090()、1099()

远程命令执荇(java反序列化调用rmi方式执行命令)

这就是RMI的魅力了!

Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上rsync也不例外。Rsync默認允许匿名访问如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患

本地提权:rsync默认以root运行,利用rsync上传一个文件只偠这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限详细和

Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我們的代理进入内网,或者渗透域和林的时候有帮助这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码万一运气好能登錄,不也~~~~

深度利用:利用DNS隧道技术刺透防火墙

爆破:使用系统用户登录
}

最近PG数据库的项目上线完成有┅些bug导致的业务数据异常决定用函数/存储过程处理一下,下面是使用过程中主要用到的一些语法记录下来分享给大家(重点参考语法就荇,业务关系被我脱敏改的稀碎哈哈哈~)

--判断更新行数是否正常 --校验客户号是否为空

能看到这里的小伙伴特意给你们准备了一些总结请紸意查收~

1、PG只有函数,它自身就可以实现Oracle的存储过程的功能

2、事务:每一个begin/end 块内部维护一个事务如果执行出现异常,该模块的事务全部囙滚上述Demo中我在loop循环查数据库中也开启了一个begin/end作为子事务,用于每次循环查数据库的单独提交回滚Exception中也单独开启了一个begin/end作为新的事务,用来记录错误信息

3、异常:PG函数异常和其他的类似,采用层层包裹结构内层抛出外层处理,最外层选择抛出会程序中断在异常处悝中可以采用DIAGNOSTICS 收集异常信息,它保存最近一次执行的情况更多资料参考:

}

我要回帖

更多关于 循环查数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信