Archive for May, 2010:
oracle top N
文章来源:http://huibin.javaeye.com/blog/419780
1.在ORACLE中实现SELECT TOP N
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。
简单地说,实现方法如下所示:
SELECT 列名1...列名n FROM
(SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n)
WHERE ROWNUM < = N(抽出记录数)
ORDER BY ROWNUM ASC
下面举个例子简单说明一下。
顾客表customer(id,name)有如下数据:
ID NAME
01 first
02 Second
03 third
04 forth
05 fifth
06 sixth
07 seventh
08 eighth
09 ninth
10 tenth
11 last
则按NAME的字母顺抽出前三个顾客的SQL语句如下所示:
SELECT * FROM
(SELECT * FROM CUSTOMER ORDER BY NAME)
WHERE ROWNUM <= 3
ORDER BY ROWNUM ASC
输出结果为:
ID NAME
08 eighth
05 fifth
01 first
Read more »
IIS源码泄露及文件类型解析错误
文章来源:http://www.80sec.com/iis-cgifastcgi-security-hol.html
漏洞介绍:IIS是微软推出的一款webserver,使用较为广泛,在支持asp/asp.net的同时还可以较好的支持PHP等其他语言的运行。但是80sec发现在IIS的较高版本中存在一个比较严重的安全问题,在按照网络上提供的默认配置情况下可能导致服务器泄露服务器端脚本源码,也可能错误的将任何类型的文件以PHP的方式进行解析,使得恶意的攻击者可能攻陷支持PHP的IIS服务器,特别是虚拟主机用户可能受的影响较大。
漏洞分析:
IIS支持以CGI的方式运行PHP,但是此种模式下,IIS处理请求的时候可能导致一些同80sec提到的nginx安全漏洞一样的问题,任何用户可以远程将任何类型的文件以PHP的方式去解析,你可以通过查看Phpinfo中对php的支持方式,其中如果为CGI/FAST-CGI就可能存在这个问题。
黑盒访问
http://www.80sec.com/robots.txt/1.php
查看文件是否存在和返回的HTTP头就可以知道是否存在此漏洞。
同时,如果服务器支持了PHP,但应用中使用的是asp就可以通过如下方式来直接查看服务端asp源码
http://www.80sec.com/some.asp/1.php
漏洞厂商:http://www.microsoft.com
解决方案:
我们已经尝试联系官方,但是此前你可以通过以下的方式来减少损失
关闭cgi.fix_pathinfo为0
nginx文件类型错误解析漏洞
文章来源:http://www.80sec.com/nginx-securit.html
漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可能攻陷支持php的nginx服务器。
漏洞分析:nginx默认以cgi的方式支持php的运行,譬如在配置文件当中可以以
1 2 3 4 5 6 7 | location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
} |
的方式支持对php的解析,location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量 SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP 的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。
那么假设存在一个http://www.80sec.com/80sec.jpg,我们以如下的方式去访问
http://www.80sec.com/80sec.jpg/80sec.php
将会得到一个URI
/80sec.jpg/80sec.php
经过location指令,该请求将会交给后端的fastcgi处理,nginx为其设置环境变量SCRIPT_FILENAME,内容为
/scripts/80sec.jpg/80sec.php
而在其他的webserver如lighttpd当中,我们发现其中的SCRIPT_FILENAME被正确的设置为
/scripts/80sec.jpg
所以不存在此问题。
后端的fastcgi在接受到该选项时,会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理,一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用,所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字,查找的方式也是查看文件是否存在,这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为
/scripts/80sec.jpg和80sec.php
最后,以/scripts/80sec.jpg作为此次请求需要执行的脚本,攻击者就可以实现让nginx以php来解析任何类型的文件了。
POC: 访问一个nginx来支持php的站点,在一个任何资源的文件如robots.txt后面加上/80sec.php,这个时候你可以看到如下的区别:
访问http://www.80sec.com/robots.txt
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:05:30 GMT
Content-Type: text/plain
Content-Length: 18
Last-Modified: Thu, 20 May 2010 06:26:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Accept-Ranges: bytes
访问访问http://www.80sec.com/robots.txt/80sec.php
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:06:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.6
其中的Content-Type的变化说明了后端负责解析的变化,该站点就可能存在漏洞。
漏洞厂商:http://www.nginx.org
解决方案:
我们已经尝试联系官方,但是此前你可以通过以下的方式来减少损失
关闭cgi.fix_pathinfo为0
或者
1 2 3 | if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
} |
mssql批量替换整个数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | DECLARE @Str1 VARCHAR(8000) SET @Str1='参数1' DECLARE @Str2 VARCHAR(8000) SET @Str2='参数2' SET nocount ON DECLARE @tableName nvarchar(100),@columnName nvarchar(100),@tbID INT,@iRow INT,@iResult INT DECLARE @SQL nvarchar(500) SET @iResult=0 DECLARE cur cursor FOR SELECT name,id FROM sysobjects WHERE xtype='U' OPEN cur fetch NEXT FROM cur INTO @tableName,@tbID while @@fetch_status=0 BEGIN DECLARE cur1 cursor FOR --xtype in (231,167,239,175,99) 为char,varchar,nchar,nvarchar,ntext类型 SELECT name FROM syscolumns WHERE xtype IN (231,167,239,175,99) AND id=@tbID OPEN cur1 fetch NEXT FROM cur1 INTO @columnName while @@fetch_status=0 BEGIN SET @SQL='update [' + @tableName + '] set ['+ @columnName +']= replace(cast(['+@columnName+'] as varchar(8000)),'''+@Str1+''','''+@Str2+''') where ['+@columnName+'] like ''%'+@Str1+'%''' --update tablename set fieldA=replace(cast(fieldA as varchar(8000)) ,'aa','bb')这样的语句。 EXEC sp_executesql @SQL SET @iRow=@@rowcount SET @iResult=@iResult+@iRow IF @iRow>0 BEGIN print '表:'+@tableName+',列:'+@columnName+'被更新'+CONVERT(VARCHAR(10),@iRow)+'条记录;' END fetch NEXT FROM cur1 INTO @columnName END close cur1 deallocate cur1 fetch NEXT FROM cur INTO @tableName,@tbID END print '数据库共有'+CONVERT(VARCHAR(10),@iResult)+'条记录被更新!!!' close cur deallocate cur SET nocount off |
一个正则表达式的看法
作者:st0p
转载请注明出处:http://www.st0p.org
下午和kindle聊天的时候,他让我看一个正则,问我知不知道其中?:的作用,以偶半瓶水的正则功力,不知道杂解释给他听了,单个一个还好理解,一起就不明白了,起码我是没用过..查了下资料,说说我的看法..
原正则的出现是为了实现apache上传目录无执行权限,不过大家知道在 windows下对于文件名是不区分大小写的,但在*unx下就不同了,其中st0p.php和st0p.Php是两个不同的文件,所以此正则(?i:.php)出现
1 2 3 4 5 6 | <directory "/var/www/upload"> <filesmatch "(?i:.php)"> Order Allow,Deny Deny from all </filesmatch> </directory> |
kindle说是参考http://perldoc.perl.org/perlre.html#Extended-Patterns的内容进行写的,具体的内容大家自己看,我们说一下关于此表达式的部分..
我们找到?:相关的部分,其用法有两种(?:pattern)和(?imsx-imsx:pattern)
我们需要用的是后者,前者的话是没法区分大小写的.而后者的用法就是(?标志修饰符:格式)
其中原文中有一句话是Any letters between ? and : act as flags modifiers as with (?imsx-imsx).
这句话就说明了imsx-imsx的作用,标志修饰符
我们看一下刚才出现的正则(?i:.php)
?的作用是在默认的贪婪模式下尽可能多的匹配所搜索的字符串,当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
FUCK腾讯 为啥这样对我
MySQLi Dumper v.3.6 PRO And KeyGen
作者:st0p
转载请注明出处 http://www.st0p.org
听朋友说好用,找到了最新的专业版来用的。唉,偶用OD一载入就直接挂掉了,半夜无聊就搞了个注册机,和程序放在一起,运行一下就能注册了。
原程序和KEYGEN都需要.NET的支持。KEYGEN需要.net 2.0以上版本
WebCruiser - Web Vulnerability Scanner Enterprise Edition V2.1.0 注册版
WebCruiser - Web Vulnerability Scanner Enterprise Edition V2.1.0注册版
下载地址:http://sec4app.com/download/WebCruiserEnt.rar
注册信息:
st0p.org
9EF6-CC8C-F068-B1D6
havij 1.09 lite
功能上多了不少,速度也不错,不过碰到一个站的用havij 1.09不行,但用havij 1.08可以,不知为何,不过速度上感觉还是havij 1.09快
下载地址:http://redmove.persiangig.com/MyPrograms/Havij%201.09%20lite.exe
QQ微博种子
http://t.qq.com/invite/677b40f03ca4fb1d213f
http://t.qq.com/invite/f4091495238538168bad
http://t.qq.com/invite/4e3d5f941559d3189bfd
http://t.qq.com/invite/6483073f2510f4f5a793
http://t.qq.com/invite/ca6dcbbe7ae90dfb009f
http://t.qq.com/invite/628706b1930fef6815cb
http://t.qq.com/invite/8e840a0a2288bc2a8e19





