当前位置:文档之家› 监控Hibernate执行SQL

监控Hibernate执行SQL

监控Hibernate执行SQL
监控Hibernate执行SQL

监控Hibernate执行SQL

1引言

几乎80% - 85% 的数据库性能问题是由于应用数据库的设计或者应用程序本身的代码所引起的。因此良好的事务处理能力需要在设计应用程序的时候,在设计数据库的时候就考虑到性能和伸缩性。

在我们使用Java EE开发企业级应用程序的过程中,总会涉及到系统的性能问题,并且都会与数据库进行打交道。当我们碰到数据库性能优化时,最有效的就是直接跟踪SQL 语句的执行情况,对SQL 语句写法进行优化、对索引进行优化,效果往往非常显著。

Hibernate是当前非常流行的数据库DAO组件,在使用Hibernate的时候,有一个参数可以在控制台打印出SQL:

但是即便如此,对于参数化SQL,依然没有办法全部显示出来,下述的情况想必大家都遇到过吧:

Hibernate:

select

*

from

( select

dictgroup0_.group_id as group1_0_,

dictgroup0_.delete_flag as delete2_0_,

dictgroup0_.group_code as group3_0_,

dictgroup0_.group_desc as group4_0_,

dictgroup0_.group_name as group5_0_,

dictgroup0_.test_mode as test6_0_

from

dict_table_group dictgroup0_

where

dictgroup0_.delete_flag=?

and dictgroup0_.test_mode=? )

where

rownum <= ?

因为“?”处没有具体数值,其实这样的语句对开发,调整SQL语句及程序的帮助是非常有限的,拷贝到类似于PLSQL Developer或者TOAD中无法看到SQL执行的结果。

本文通过在Java IDE工具中集成SQL语句拦截工具和SQL语句显示工具完成监控参数化SQL。

1.1预期读者

1、开发人员:使用Java进行应用系统服务层、数据访问层开发。能够使用Java IDE工具,如Eclipse、IntelliJ IDEA等。

2工具介绍

P6Spy:本文使用P6Spy作为拦截SQL的工具,是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架,相当于一个SQL 语句的记录器,P6Spy 用Log4J 来记录JDBC 调用的日记信息。本文只使用P6Log,不使用P6Outage。该软件工作原理如下:P6Spy 就是一个代理,它只做了一层对JDBC 驱动的拦截,然后转发出去,与实际的应用程序没有任何的耦合性,除了在配置中将驱动程序改成P6Spy 的拦截驱动外,程序其他地方并不需要做任何的改变。这层拦截器可能会给系统带来略微的性能下降,但对程序其他方面没有任何的影响。相对于这一点点的性能下降,相比它所带来的好处,在开发环境中对于开发人员来说是完全可以忽略不计的。

Sqlprofiler:这个小工具可以实时地显示数据库查询的情况,并能够和P6Spy关联。其它的信息也会进行收集和显示,比如:单个数据库请求的时间、一类请求的时间以及所有请求的时间。此外,该工具能够建立统计分析,并生成索引脚本,不过这个特性不在本文的讨论范畴

3安装与设置

准备工作如下:

1、下载P6Spy,下载地址:https://www.doczj.com/doc/226656471.html,/projects/p6spy/

2、下载Sqlprofiler,下载地址:https://www.doczj.com/doc/226656471.html,/projects/sqlprofiler/

3、一个能够运行Hibernate程序的Java工程。

本文使用的P6Spy版本为1.3,sqlprofiler版本为0.3。

安装P6Spy:

1、打开p6spy-install.jar把p6spy.jar放到/WEB-INF/lib/ 目录下,或IDE能够识别jar文件的

位置

2、把spy.properties放到Java工程的src目录下,或者是IDE编译后能够拷贝到classess/目

录下的位置。

3、将应用系统中的原来数据库驱动名称改为为P6Spy 的驱动程序名称

com.p6spy.engine.spy.P6SpyDriver ,其它的全部使用默认值。

4、打开配置文件spy.properties,找到realdriver,把它的值改为你的应用系统的真正的数

据库驱动名称。

# 提前加载驱动

deregisterdrivers=true

标准控制台输出:

appender=com.p6spy.engine.logging.appender.StdoutLogger

log4j.logger.p6spy=INFO,STDOUT

在集成Tomcat环境下Spring框架下可以忽略第3步,按以下范例修改:

class="https://www.doczj.com/doc/226656471.html,mons.dbcp.BasicDataSource"

destroy-method="close">

value="oracle.jdbc.driver.OracleDriver">

value="jdbc:oracle:thin:@10.128.129.88:1521:invest">

运行你的应用程序或Web 应用程序,可以在spy.log 里看到P6Spy 监测到的SQL 详细的执行与操作的记录信息了,包含有完整的SQL 执行参数,只不过所有信息都在一行上,看着比较困难。

4扩展

4.1减少无用数据的输出

P6Spy将其能够拦截到的SQL数据都拦截下来,并输出到控制台,造成我们获取和程序关联信息的困难。在调试时主要关注,替换绑定变量后真实SQL,来检验业务的正确性,对其他的SQL,并不是太在意。我们通过修改配置文件和提供扩展代码完成只输出有用的信息,当需要展示全部信息的时候,也可以通过修改配置进行调整。

打开配置文件spy.properties,修改如下信息:

module.log= com.p6spy.engine.logging.P6LogFactory

改为自定义的Factory(在这里体现了P6Spy的在设计上的灵活性),继承自P6LogFactory,并重载:

public ResultSet getResultSet(ResultSet real, P6Statement statement, String preparedQuery, String query) throws SQLException方法

返回定制的基于P6LogResultSet的ResultSet。

在定制的ResultSet中重载:

public boolean next() throws SQLException方法,代码从P6LogResultSet拷贝对应代码,修改如下:

if (currRow > -1) {

long startTime = System.currentTimeMillis();

StringBuffer buffer = new StringBuffer();

String comma = "";

for (Iterator itr = resultMap.keySet().iterator(); itr.hasNext();) {

String index = (String) itr.next();

buffer.append(comma);

buffer.append(index);

buffer.append(" = ");

buffer.append((String) resultMap.get(index));

comma = ", ";

}

P6Connection p6connection = (P6Connection) this.statement

.getConnection();

P6LogQuery.logElapsed(p6connection.getId(), startTime, "resultset",

preparedQuery, query);

resultMap.clear();

}

currRow++;

return passthru.next();

这时候打在控制台的就是清理后实际执行的SQL语句了。

4.2输出到Sqlprofiler看格式化结果

Sqlprofiler以监听的模式获取P6Spy的SQL输出,并根据P6Spy的输出格式将SQL拆解显示,一般来说我们并不需要关注P6Spy的SQL格式,只需要按照以下步骤进行配置:

1、把Log4j配置为Server模式

appender=com.p6spy.engine.logging.appender.Log4jLogger

log4j.appender.SQLPROFILER_CLIENT=https://www.doczj.com/doc/226656471.html,.SocketAppender

log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost

log4j.appender.SQLPROFILER_CLIENT.Port=4445

log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true

log4j.logger.p6spy=INFO,SQLPROFILER_CLIENT

注:请注意Sqlprofiler对应的端口号为4445

2、打开Sqlprofiler,接收SQL脚本

下图为Sqlprofiler正常工作下的截图:

按照本文所述内容已经可以满足相关扩展开发,若还需要原文对应代码,请向fitit_info@https://www.doczj.com/doc/226656471.html,订阅。

最全的WEBSHELL提权大大全

WEBSHELL权限提升技巧 c: d: e:..... C:\Documents and Settings\All Users\「开始」菜单\程序\ 看这里能不能跳转,我们从这里可以获取好多有用的信息比如Serv-U的路径, C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\ 看能否跳转到这个目录,如果行那就最好了,直接下它的CIF文件,破解得到pcAnywhere 密码,登陆 c:\Program Files\serv-u\ C:\WINNT\system32\config\ 下它的SAM,破解密码 c:\winnt\system32\inetsrv\data\ 是erveryone 完全控制,很多时候没作限制,把提升权限的工具上传上去,然后执行 c:\prel C:\Program Files\Java Web Start\ c:\Documents and Settings\ C:\Documents and Settings\All Users\ c:\winnt\system32\inetsrv\data\ c:\Program Files\ c:\Program Files\serv-u\ C:\Program Files\Microsoft SQL Server\ c:\Temp\ c:\mysql\(如果服务器支持PHP) c:\PHP(如果服务器支持PHP) 运行"cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps"来提升权限 还可以用这段代码试提升,好象不是很理想的 如果主机设置很变态,可以试下在c:\Documents and Settings\All Users\「开始」菜单\程序\启动"写入bat,vbs等木马。 根目录下隐藏autorun.inf C:\PROGRAM FILES\KV2004\ 绑 D:\PROGRAM FILES\RISING\RAV\ C:\Program Files\Real\RealServer\ rar Folder.htt与desktop.ini 将改写的Folder.htt与desktop.ini,还有你的木马或者是VBS或者是什么,放到对方管理员最可能浏览的目录下 replace 替换法捆绑 脚本编写一个启动/关机脚本重起 删SAM 错 CAcls命令 FlashFXP文件夹Sites.dat Sites.dat.bak Stats.dat Stats.dat.bak Ring的权限提升21大法! 以下全部是本人提权时候的总结很多方法至今没有机会试验也没有成功,但是我是的确看见别人成功过

lab1 SQLPlus使用及简单Select语句

实验1 SQL*Plus使用及简单Select语句 实验人:_________ 学号_____ 班级____________ 实验目的: 1.掌握SQL*Plus常用功能的使用。 2.掌握简单查询的语法。 实验平台: 1.Windows 2000/XP。 2.Oracle 10g 实验过程记录及分析: 1.SQL*Plus的使用: 1) 2) 3)如果某个用户连接数据库时,发生了“协议适配器错误”,分析其原因,并给出解决错 4)

5) 6) 7) 2. SQL 1) 2)3

4)查询emp表中,工资额大于2000的员工的姓名及其工资额。 5) 6) 7)查询emp表中,ename列含有字母A的员工的姓名。

8) 9) 10

11)使用to_date函数查询1981年入职的员工姓名。 SQL> select * from emp 2 where to_char(hiredate,'yyyy')='1981'; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ----------

1433口令提权详细过程及错误修复

前段时间我朋友给我一个sopo的软件,说是扫1433口令的,而且猜解速度很快,我就找个服务器试了试,确实不错能扫到一些比较强点的口令。所以这段时间就玩了一下1433错误的恢复和提权。(有人可能会说了,这有啥好研究的,sa的权限直接加用户到超管不就成了吗。其实在sa权限下还是有很多的问题的大家可以捡有用的看没用的就略过吧) 下面来说sa下执行命令错误的几种情况: 1、无法装载DLL xpsql70.dll或该DLL所引用的某一DLL。原因126(找不到指定模块。) 这种情况比较常见的,修复起来说简单也简单,但是有条件的。这种情况要是能列出目录(用sqltools v2.0就有列目录功能)恭喜你这个有80%的情况能修复了,如果能列目录,那么只要找到xplog70.dll的路径执行以下命令就可以了。 第一步 exec sp_dropextendedproc 'xp_cmdshell' (这个命令就是删除原有的cmdshell,因为已经出错了) 第二步 dbcc addextendedproc (“xp_cmdshell”,“c:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll”) ;EXEC sp_configure 'show advanced options', 0 – 当然这是sql命令,用查询分析器执行。第二步里的c:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll就是xplog70.dll的路径,这个路径是比较常见的,如果c盘没有可以找找其他盘符。 2、无法在库xpweb70.dll 中找到函数xp_cmdshell。原因:127(找不到指定的程序。) 其实这个跟上面的126是一样的就是cmdshell出错了只要找到备份的xplog70.dll按照上面的方法就能修复了。 3、未能找到存储过程‘masterxpcmdshell' 这种情况我看到网上的方法是: 第一步先删除: drop procedure sp_addextendedproc

SQLPLUS常用命令列表

SQL*PLUS常用命令列表 ?软件环境: 1、Windows 98 第二版 2、Oracle数据库版本为:Personal Oracle7 Release 7.3.4.0.0 3、Oracle安装路径为:C:\ORAWIN95 ?命令列表: ?假设当前执行命令为:select * from tab; ? ?(a)ppend 添加文本到缓冲区当前行尾 a order by tname 结果:select * from tab order by tname; ? (注:a后面跟2个空格) ?(c)hange/old/new 在当前行用新的文本替换旧的文本c/*/tname 结果:select tname from tab; ?(c)hange/text 从当前行删除文本c/tab 结果:select tname from ; ?del 删除当前行 ?del n 删除第n行 ?(i)nput 文本在当前行之后添加一行 ?(l)ist 显示缓冲区中所有行 ?(l)ist n 显示缓冲区中第 n 行 ?(l)ist m n 显示缓冲区中 m 到 n 行 ?run 执行当前缓冲区的命令 ?/ 执行当前缓冲区的命令 ?r 执行当前缓冲区的命令 ?@文件名运行调入内存的sql文件,如: ? ?SQL> edit s<回车> ?如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件, ?在其中输入“select * from tab;”,存盘退出。 ? ?SQL> @s<回车> ?系统会自动查询当前用户下的所有表、视图、同义词。 ? ?@@文件名在.sql文件中调用令一个.sql文件时使用 ? ?save 文件名将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql ?get 文件名调入存盘的sql文件 ?start 文件名运行调入内存的sql文件 ? ?spool 文件名把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,

1433提权全教程

1433端口提权的过程 随着网络安全意识的提高,很多服务器的安全防范都非常严了,本人对web入侵是一巧不通就只会扫扫1433弱口令的服务器,于是研究一段时间,虽然进步不大,但是还是想把经验分享一下,正所谓授人以鱼不如授人以渔,而我现在正是告诉你打鱼的方法,下面就以一台服务器为例了,本例使用工具为SQL TOOLS 2.0,论坛有下,请自行搜索。插播不是广告的广告:该工具集成度高,简单的sql指令无须使用分离器,直接在此工具中执行即可,其文件管理功能非常强大,反正我用着太顺手了,推荐一下,本文原创发布于=华夏黑客同盟论坛=(https://www.doczj.com/doc/226656471.html,)广告完毕。 把扫到的ip和sa及口令填入连接后,用dos命令功能试试列目录 显示错误信息: Error Message:无法装载 DLL xplog70.dll 或该 DLL 所引用的某一 DLL。原因: 126(找不到指定的模块。)。 这种情况大家在提权过程中经验遇到啊,它是由于xplog70.dll这个文件被删除或者做了其他限制,导致出现这个错误的 这个错误的直接后果就是sql数据库的xp_cmdshell的存储过程无法使用,无法执行命令提权自然就无从说起了, 当然我们还可以考虑其他的存储过程如:sp_oacreate和sp_oamethod来直接添加帐号,或者使用沙盘指令来提权, 但这台服务器,这些功能都被限制了,还是考虑下恢复xplog70.dll了,测试上

传无法成功,这条路走不通了, 这时就考虑用到工具的文件管理功能了 看到了把,和windows的资源管理器一样好用,目录列出来了,搜索一下可以用来提权的东西吧,这里我们首先要去看看 sql的安装路径里的xplog70.dll文件是否存在 看到吧,xplog70.dll文件不见了,被删除了,xpweb70.dll也被改了名字了-. - 继续搜寻下其他盘看看还有什么东西

Oracle SQLPlus 常用命令及解释

Oracle SQLPlus 常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

SQLPLUS用法大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus 命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer 中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 @与@@的区别是什么? @等于start命令,用来运行一个sql脚本文件。 @命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。 如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql 则我们在sql*plus中,这样执行: SQL> @ c:\temp\start.sql 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。

授渔之1433提权全教程

授渔之<一次1433端口提权的过程> 随着网络安全意识的提高,很多服务器的安全防范都非常严了,本人对web入侵是一巧不通就只会扫扫1433弱口令的服务器,于是研究一段时间,虽然进步不大,但是还是想把经验分享一下,正所谓授人以鱼不如授人以渔,而我现在正是告诉你打鱼的方法,下面就以一台服务器为例了,本例使用工具为SQL TOOLS 2.0,论坛有下,请自行搜索。插播不是广告的广告:该工具集成度高,简单的sql指令无须使用分离器,直接在此工具中执行即可,其文件管理功能非常强大,反正我用着太顺手了,推荐一下,本文原创发布于=华夏黑客同盟论坛=(https://www.doczj.com/doc/226656471.html,)广告完毕。 把扫到的ip和sa及口令填入连接后,用dos命令功能试试列目录 显示错误信息: Error Message:无法装载 DLL xplog70.dll 或该 DLL 所引用的某一 DLL。原因: 126(找不到指定的模块。)。 这种情况大家在提权过程中经验遇到啊,它是由于xplog70.dll这个文件被删除或者做了其他限制,导致出现这个错误的 这个错误的直接后果就是sql数据库的xp_cmdshell的存储过程无法使用,无法执行命令提权自然就无从说起了, 当然我们还可以考虑其他的存储过程如:sp_oacreate和sp_oamethod来直接添加帐号,或者使用沙盘指令来提权, 但这台服务器,这些功能都被限制了,还是考虑下恢复xplog70.dll了,测试上

传无法成功,这条路走不通了, 这时就考虑用到工具的文件管理功能了 看到了把,和windows的资源管理器一样好用,目录列出来了,搜索一下可以用来提权的东西吧,这里我们首先要去看看 sql的安装路径里的xplog70.dll文件是否存在 看到吧,xplog70.dll文件不见了,被删除了,xpweb70.dll也被改了名字了-. - 继续搜寻下其他盘看看还有什么东西

【法客周年庆】跟着黑客走吃喝全都有,提权 (二)

目录 1、进shell检查权限 (1) 2、扫端口 (1) 3、43958 开了 (2) 4、1433开了得到dbo权限 (2) 5、找到Serv-U目录无法访问 (3) 6、尝试mysql提权 (3) 7、尝试su提权 (4) 8、SU提权 (5) 9、总结 (5) 1、进shell检查权限 首先这个是看到坛子里面的一个求助提权贴提权的,以前在hake发过,但没这么详细 溜达进shell看了下子。。 aspx支持的完好,不过权限还是比较低的。。 IISSPY可以完美跨目录,那么提权还是有大大的希望的。。 2、扫端口 127.0.0.1 : 21 ................................. Open 127.0.0.1 : 25 ................................. Open 127.0.0.1 : 80 ................................. Open 127.0.0.1 : 110 ................................. Open 127.0.0.1 : 1433 ................................. Open 127.0.0.1 : 1723 ................................. Close 127.0.0.1 : 3306 ................................. Open 127.0.0.1 : 3389 ................................. Open 127.0.0.1 : 4899 ................................. Close 127.0.0.1 : 5631 ................................. Close 127.0.0.1 : 43958 ................................. Open 127.0.0.1 : 65500 ................................. Close

SQL-Plus的使用

SQL*Plus的使用 1. SQL*Plus介绍 SQL*Plus是oracle提供的一个工具程序,既可以在oracle服务器使用,也可以在oracle客户端使用。 SQL*Plus是一个最常用的工具,具有很强的功能,主要有: 1). 数据库的维护,如启动,关闭等 2). 执行SQL语句、执行PL/SQL程序 3). 执行SQL脚本 4). 数据的导出,报表 5). 应用程序开发、测试SQL/PLSQL 6). 生成新的SQL脚本 7). 供应用程序调用,如安装程序中进行脚本的安装 2. dual表 dual是一张系统表,同时也被定义成了public同义词。它只有一个字段和一条记录。该表本身的结构和数据没有什么意义,主要是借助该表进行其它操作。 Dual表的使用例如获取函数值、计算表达式的值: 说明:不要对dual表进行DDL与DML操作,只进行查询操作。

3. SQL*Plus使用 3.1 启动SQL*Plus及连接数据库 1). 不连接数据库 > sqlplus /nolog 2). 连接数据库 > sqlplus username/password 3). 使用连接字符串连接数据库 > sqlplus username/password@connect_identifier 4). 使用操作系统权限连接数据库 > sqlplus / as sysdba 3.2 SQL*Plus的命令 3.2.1 帮助命令 1). help命令 格式:help 命令名,用于知道某个具体命令的帮助信息。 如:SQL> help connect 2). describe命令 用户查看表的结构;获取函数,存储过程和包的描述。 如:SQL> desc user_tables 说明:在SQL*Plus中,所有命令都可以用前面的四个字母作为整个命令。 3.2.2 编辑命令 SQL*Plus会将上一次执行过的SQL命令(包括SQL语句和PL/SQL语句,包括一行或多行)保存到缓存区中,可以对缓存区中信息进行编辑。编辑后可以通过“/ ”命令执行修改后的缓存区中的命令,如果不修改,则是执行原有命令。 1). list [n] 命令 显示上一条命令中的第n行,如果不指定n,则显示上一命令的所有行,这样当前行就是最后一行。 如:

MSSQL 通过存储过程调用WEB服务解决方法

MSSQL 通过存储过程调用WEB服务解决方法 在数据库的脚本开发过程中,由于需要及时的通过服务中网站中获取及时信息,比如:输入身份证查询考试成绩,输入身份证查询医保卡信息等;SQLSERVER中存储过程来调用外部服务,但是此服务需要sysadmin角色权限。 以下为配置的要求以及源代码: 1, 环境需求设置 开通’ sys.sp_OACreate’以及'Ole Automation Procedures'访问设置: 如果要是SQLSERVER里面实现调用WEB服务、操作文件等相关操作,需通过SQLSERVER的自带组建Ole Automation Procedures,默认情况下这个组件是禁止的。 SQL Server阻止了对组件'Ole Automation Procedures'的过程'sys.sp_OACreate'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure启用'Ole Automation Procedures'。有关启用'Ole Automation Procedures'的详细信息,请参阅SQL Server联机丛书中的"外围应用配置器"。语句已终止。 Ole Automation Procedures选项 使用Ole Automation Procedures选项可指定是否可以在Transact-SQL批处理中实例化OLE Automation对象。也可以使用外围应用配置器工具来配置此选项。有关详细信息,请参阅外围应用配置器。 可以将Ole Automation Procedures选项设置为以下值。 禁用OLE Automation Procedures。SQL Server 2005新实例的默认值。 1 启用OLE Automation Procedures。

几种清除MSSQL日志方法

方法一、 1 / 4

2 / 4 方法二、

MS SQL清除日志的命令 如何清除sql server 日志? 设置数据库为简单模式,自动收缩 1.打开查询分析器,输入命令 backup log databasename with no_log 2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M 数,直接输入这个数,确定就可以了。 dbcc shrinkfile (databasename_log,truncateonly) 方法三、 1: 删除LOG 第1步:分离数据库企业管理器->服务器->数据库->右键->分离数据库 第2步:删除LOG文件 第3布:附加数据库企业管理器->服务器->数据库->右键->附加数据库 此法生成新的LOG,大小只有500多K 再将此数据库设置自动收缩 方法四、 EXEC sp_detach_db @dbname = 'pubs' EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 方法五、 Use Database_Name Backup Log Database_Name With No_log dbcc shrinkfile (Database_Name_Log,truncateonly) Go 方法六、 直接在查询分析那里执行backup log databasename with no_log 然后回到企业管理器把数据库收缩一下(可能需另外设置属性) 3 / 4

一次简单但又完整的先拿shell后提权的经历

. 一次简单但又完整的先拿shell后提权的经历 前一段时间看到了易趣购物网站爆出了注入漏洞,注入的关键字是关键字: inurl:Price.asp?anid=,结合系统本身的后台数据库备份生成目录可以自定义漏洞,轻松可以通过备份xxx.asp的目录,然后上传后缀为jpg的一句话木马,菜刀连之即可得到shell。 但是如果是这样我也不会再写此文,在这些购物网站中,数据最重要的当属减肥丰胸等等网站数据,而且这些网站在优化seo时,肯定设置的关键字也是减肥丰胸之类,那么中文标题之中必有此关键字,那我的想法就产生了,我的新的注入关键字产生了nurl:Price.asp?anid= intitle:减肥。 啊d扫描注入点,找到一个注入点https://www.doczj.com/doc/226656471.html,/Price.asp?anid=xxx,拿去跑表段字段即可,不过也得注意表段是特有的Cnhww。我一般在渗透的时候,也会用jsky和御剑检测站点,在我查看御剑的结果时发现了一个让我欣喜的结果https://www.doczj.com/doc/226656471.html,/shell.asp,明白的一看便知是先人后门,打开发现是一个小马, (原有小马一被我清除,此图是后来补的),复制大马代码保存,即得到shell。 扫描端口发现,网站开启了

连接3389端口发现可以连接, 尝试简单的命令猜解失败后,决定重新利用shell。查看服务器所支持的组件:

发现可以支持fso和wscript.shell,欣喜往外,ipconfig,net user都支持,查看了当前的账户,有一个默认的administrator管理账户。但是net user admin admin /add,没任何反应,net user 发现并没有添加账户成功,这里很纳闷,决定换思路。把网站翻了个遍,发现了一个数据库的链接文件。 通过代码可知,这里数据库使用了acess和mssql两个,mssql数据库连接账号和密码都已知晓,何不利用数据库连接器试一试,然后兴奋的分别用了MSSQL连接器、SQLTools、SQL查询分析器分离版本,但皆以失败而告终,都拒绝连接不上,看来是防火墙对1433端口做了从外到内的限制,悲哀。。。 就在这个时候,忽然想起来,啊d等软件在mssql数据库sa权限下,皆有列目录和执行dos的权限,何不试试,然后用啊d 执行命令net user admin admin /add & net localgroup administrators admin /add,但是好久都没回显,很卡的样子,就又换了hdsi,一举成功。 注意这里建立admin是为了方便检测新否已经建立账户,要做一个好的后门,是要做克隆账户的。心情愉悦的3389连之,为了防止管理员net user查到新建的账户,我建立了隐藏账户,即是admin$,这种账户在cmd中时发现不了的,但是查询用户组还是一览无遗。我当时没在意觉得没什么,然后速度在日志查看器中删除了所有日志,(这个我也不想,不过好似没法删除单一的登陆记录,请大牛指点指点),正在这时,忽然事件查看器中多了一条登录审核信息,我一看管理员来了,吓得我急忙注销电脑,灰溜溜的跑了。。。。 大约过了1个小时吧,我又重新登录,账号还在,管理员确实很马虎额,不过自己可不能再大意了,遂决定建立克隆账户。 然后就用shell上传aio.exe文件,竟然失败,然后用菜刀上传也是失败,真是无语。看来是权限不够,忽然想到3389现在不是支持复制粘贴吗?忽然觉得思路就是被逼出来的,

SQLPLUS中SET命令

Set 命令 1). 设置当前session是否对修改的数据进行自动提交 SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} 2). 在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 SQL> SET ECHO {ON|OFF} 3). 是否显示当前sql语句查询或修改的行数 SQL> SET FEED[BACK] {6|n|ON|OFF} 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。 当为off 时,一律不显示查询的行数 4). 是否显示列标题 SQL> SET HEA[DING] {ON|OFF} 当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 5). 设置一行可以容纳的字符数 SQL> SET LIN[ESIZE] {80|n} 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。 6). 设置页与页之间的分隔 SQL> SET NEWP[AGE] {1|n|NONE} 当set newpage 0 时,会在每页的开头有一个小的黑方框。 当set newpage n 时,会在页和页之间隔着n个空行。 当set newpage none 时,会在页和页之间没有任何间隔。 7). 显示时,用text值代替NULL值 SQL> SET NULL text 8). 设置一页有多少行数 SQL> SET PAGES[IZE] {24|n} 如果设为0,则所有的输出内容为一页并且不显示列标题

9). 是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 SQL> SET SERVEROUT[PUT] {ON|OFF} 在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。 10). 当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。 SQL> SET WRA[P] {ON|OFF} 当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。 11). 是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 SQL> SET TERM[OUT] {ON|OFF} 在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。 12). 将SPOOL输出中每行后面多余的空格去掉 SQL> SET TRIMS[OUT] {ON|OFF} 13). 设置是否显示当前时间 SQL> SET TIME {ON|OFF} 14). 显示每个sql语句花费的执行时间 SQL> SET TIMING {ON|OFF} 15). 设置列与列之间的分割符号 SQL> SET COLSEP { | } 16). 设置是否允许显示输出类似DBMS_OUTPUT SQL> SET SERVEROUTPUT {ON|OFF} 17). 设置是否允许对执行的sql进行分析 SQL> SET AUTOTRACE {ON|OFF}

渗透测试资料--提权技巧

### 提权技巧 1.cmd拒绝访问就自己上传一个cmd.exe,自己上传的cmd是不限制后缀的,还可以是https://www.doczj.com/doc/226656471.html, cmd.txt cmd.rar等 https://www.doczj.com/doc/226656471.html, user不能执行有时候是net.exe被删除了,可以先试试net1,不行就自己上 传一个net.exe 3.cmd执行exp没回显的解决方法:com路径那里输入exp路径 C:\RECYCLER\pr.exe,命令那里清空(包括/c )输入net user jianmei daxia /add 4.有时候因为监控而添加用户失败,试试上传抓取hash的工具,如PwDump7.exe,得到hash之后可以进行破解,建议重定向结果到保存为1.txt cmd /c c:\windows\temp\cookies\PwDump7.exe >1.txt,在条件允许的情况下 也可以用mimikatz直接抓明文 5.有时候权限很松,很多命令都可以执行,但是就是增加不上用户,这时候你就要考虑是不是因为密码过于简单或是过于复杂了 6.用wt.asp扫出来的目录,其中红色的文件可以替换成exp,执行命令时cmd那里输 入替换的文件路径,下面清空双引号加增加用户的命令 7.有时候可以添加用户,但是添加不到管理组,有可能是administrators组改名 了,使用命令net user administrator查看管理组的名字 8.有的cmd执行很变态,asp马里,cmd路径填上面,下面填:"c:\xxx\exp.exe whoami” 记得前面加两个双引号,不行后面也两个,不行就把exp的路径放在cmd那里,下面不变 9.当添加不上用户却可以添加“增加用户的Vbs、bat)的时候,就添加一个吧,然后 用“直接使服务器蓝屏重启的东东”让服务器重启就提权成功 10.菜刀执行的技巧,上传cmd到可执行目录,右击cmd 虚拟终端,help 然后setp c:\windows\temp\cmd.exe 设置终端路径为:c:\windows\temp\cmd.exe 11.支持aspx但跨不了目录的时候,可以上传一个读iis的vbs,执行命令列出所有网站目录,找到主站的目录就可以跨过去了,上传cscript.exe到可执行目录, 接着上传iispwd.vbs到网站根目录,cmd命令cmd /c “c:\windows\temp\cookies\cscript.exe” d:\web\iispwd.vbs 11.如何辨别服务器是不是内网?192.168.x.x 172.16.x.x 10.x.x.x 12.安全狗下加用户的语句::for /l %i in (1,1,1000) do @net user test test [/add&@net]() localgroup administrators test /add

Oracle通过sqlplus spool导入出数据

之前用过spool导出oracle数据为文本,可惜一直也没有整理下,今天再次用到,网上找了相关文档,也算作个记录。 第一部分(实例,主要分两步),第二部分(参数小总结),第三部分(完全参数总结) 第一部分 第一步:这是我的导出数据的脚本call.sql conn scott/tiger set echo off set term off set line 1000 pages 0 set feedback off set heading off set trimspool on spool /temp/test/ldr_test.csv select a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a; spool off set trimspool off set heading on set feedback on set term on set echo on exit 注释:call.sql脚本执行方法(1)sqlplus /nolog 先进入sqlplus命令模式 (2)start call.sql 在sqlplus命令模式下执行 第二步:导入数据的脚本add_test.ctl LOAD DATA INFILE ldr_test.csv TRUNCATE INTO TABLE test FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"' (EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL) 注释: 在第一步导出数据后,执行add_test.sql脚本命令为: sqlplus scott/tiger control=add_test.ctl 至此用sqlplus导入/出数据完成了,如果有些参数不明白,请看一下第二三部分。 哦..忘了说test测试表的结构了,create table test as select empno,ename,hiredate,sal from emp; 第二部分 spool本身其实没有啥难的,就是set参数的个数太太多啦!!!下面就是我网上Copy的,当然有一些是自己加上去的

总结服务器权限提升的20种思路

?SER-TU提权(通常是利用SERFTP服务器管理工具,首先要在安装目录下找到INI配置文件,必须具备写权限) ?RADMIN提权(大家并不陌生,我们在扫描4899空口令后,同样需要他来连接) ?PCANYWHRER提权(也是远程客户端软件,下载安装目录的CIF文件进行破解) ?SAM提权(SAM系统帐户,通常需要下载临时存放的SAM文件,然后进行HASH破解) ?NC提权(利用NC命令,反弹一个端口,然后TELNET远程去连接一个端口,虽然权限不够大,但结合巴西烤肉,也是能够成功的) ?PR提权(PR提权,这个就不多说了,最好是免杀的PR大杀器,这样更方面我们去操作) ?IIS提权(IIS6.0提权,首先需要获取IIS的配置信息,利用工具进行添加后门用户) ?43958提权(如果SER-TU有直接读入和执行的权限,那么我们就可以直接提权)

?PERL提权(PERL提权通常是针对PERL文件夹下的提权方式,利用DIR目录%20NET USER这样来建立后门用户) ?内网LCX提权(转发工具LCX,通常需要先本地监听一个端口,然后转发,针对内网,用本地的127连接对方的3389,自认做内网渗透时的必备思路) ?启动提权(如果服务器启动项有能够执行的权限,那么应该说管理员的技术肯定不精湛) ?替换服务提权(替换某个服务EXE,比如SER-TU,可将原有的删除,再传一个同样的SER.EXE上去,等待服务器重启) ?FXP提权(FXP这个工具其实本身他是一个传输工具,但我们可以下载他的三个文件,然后,用密码查看器的功能去获得密码) ?输入法提权(目前来说的话,输入法提权的思路基本上不太可行了) ?360提权(360提权,也就是我们常说的SHIFT后门,如果执行了360漏洞利用程序,连接服务器用SHIFT5下,弹出了CMDSHELL即为成功)

最全的WEBSHELL提权方法总结

最全的WEBSHELL提权方法总结 在得到了一个Webshell之后,如果能进一步利用系统的配置不当取得更高的权限,一直是广大黑友们所津津乐道的话题,也是高手和菜鸟间最大的区别。本文将从一个大角度总括当前流行的各种提权方法,希望对大家有所启发,起到一个抛砖引玉的作用 WEBSHELL权限提升技巧 c: d: e:..... C:\Documents and Settings\All Users\「开始」菜单\程序\ 看这里能不能跳转,我们从这里可以获取好多有用的信息比如Serv-U的路径, C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\ 看能否跳转到这个目录,如果行那就最好了,直接下它的CIF文件,破解得到pcAnywhere密码,登陆c:\Program Files\serv-u\ C:\WINNT\system32\config\ 下它的SAM,破解密码 c:\winnt\system32\inetsrv\data\ 是erveryone 完全控制,很多时候没作限制,把提升权限的工具上传上去,然后执行 c:\prel C:\Program Files\Java Web Start\ c:\Documents and Settings\ C:\Documents and Settings\All Users\ c:\winnt\system32\inetsrv\data\ c:\Program Files\ c:\Program Files\serv-u\ C:\Program Files\Microsoft SQL Server\ c:\Temp\ c:\mysql\(如果服务器支持PHP) c:\PHP(如果服务器支持PHP) 运行"cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps"来提升权限 还可以用这段代码试提升,好象不是很理想的 如果主机设置很变态,可以试下在c:\Documents and Settings\All Users\「开始」菜单\程序\启动"写入bat,vbs等木马。 根目录下隐藏autorun.inf C:\PROGRAM FILES\KV2004\ 绑 D:\PROGRAM FILES\RISING\RA V\ C:\Program Files\Real\RealServer\ rar Folder.htt与desktop.ini 将改写的Folder.htt与desktop.ini,还有你的木马或者是VBS或者是什么,放到对方管理员最可能浏览的目录下 replace 替换法捆绑 脚本编写一个启动/关机脚本重起 删SAM :( 错 CAcls命令

相关主题
文本预览
相关文档 最新文档