Discuz!跨站大全

 更新时间:2016年11月25日 15:20  

在discuz!的发贴、回贴、PM等中的subject都没有经过过滤,所以也可以添加代码。
例如
http://xxx/post.php?action=newthread&fid=2...cript%3E%3Cb%22
效果是首先弹出
在discuz!的发贴、回贴、PM等中的subject都没有经过过滤,所以也可以添加代码。
例如
http://xxx/post.php?action=newthread&fid=2...cript%3E%3Cb%22
效果是首先弹出自己的cookie
利用方法:把上述代码放置到img中。
适用版本:discuz!2.x
discuz!3.x
一种利用discuz!2.0漏洞进行欺骗获得cookie的尝试
通过测试XXXFan论坛的PM功能存在一个安全漏洞,具体描述如下:
XXXFan的给某个会员发送悄悄的链接如下(假定这个会员名字为XXXFan)
http://XXX/pm.php?action=send&username=XXXFan
因为论坛程序对会员名字没有进行过滤,而是直接显示在发送到栏目中(TO:),所以可以在名字后面加上script代码。例如
http://XXX/pm.php?action=send&username=XXXFan ";><script>alert(document..cookie)</script><b%20"
上面的链接点击以后首先弹出的是自己的cookie内容。
当然我们可以先在自己的站点上构造一个程序来收集cookie,类似于
getcookie.php?cookie=
但是如何来诱使会员点击呢,如果简单的放在论坛上,太容易被识别。所以可以利用discuz论坛程序的另外一个功能,“帖子介绍给朋友”功能。
因为discuz的这个功能对填写的emial地址没有进行任何过滤、辨别和模版,可以伪造任何人给别人发信,安全性很高。利用这个功能我们就可以伪造ExploitFan的管理员给某个会员发一封信,诱使会员点击我们准备的URL,如果诱使就看自己的手段了,例如可以说“论坛正在测试新功能,请您协助点击上面地址,我们会在后台记录您的点击在合适的时间会给您增加积分以做奖励”等等。
因为链接地址是XXXFan的,而且发信人和邮件地址都是XXXFan的官方地址,所以可信度非常高,而且不会留下任何把柄。当然为了更高的安全性,可以在<script>里的内容加密,以进一步增加隐蔽性。
至于得到cookie如何做,可以尝试cookie欺骗或者是暴力破解MD5密码
本方法适用于大部分使用discuz2.0的论坛,至于discuz3.0的利用方法请参与在我以前发表的discuz!悄悄话漏洞
【BUG】Discuz!投票的BUG
投票可以用
misc.php?action=votepoll&fid=2&tid=16980&pollanswers[]=n
(n为选项,从0开始)
的方式通过URL来直接投票
但是如果n>最大选项呢,嘻嘻~
照样提交成功,不过增加了一个标题为空的选项
·不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的其实是同一门语言;
·不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
·会用Visual C++,并不说明你会C++,所以光看Visual C++的书,是学不了C++语言的;
·学class并不难,template、STL、generic programming也不过如此,难的是长期坚持实践和不遗余力的博览群书;
·如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
·把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
·看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
·别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;【书读百遍,其意自现】
·不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
·和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
·请看《程序设计实践》,并严格的按照其要求去做;
·不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
·学习编程的秘诀是:编程,编程,再编程;
·记住:面向对象技术不只是C++专有的;
·请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
·把在书中看到的有意义的例子扩充;
·请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
·经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
·不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
·C++语言和C++的集成开发环境要同时学习和掌握;
·就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
· 当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写;
· 别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
· 每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;【教学相长】
这是WHOIS查找的代码。
 
<?
function whois_request($server, $query) {
$data = "";
$fp = fsockopen($server, 43);
if($fp) {
fputs($fp, $query."rn");
while(!feof($fp)) {
$data .= fread($fp, 1000);
}
fclose($fp);
}
return $data;
}
?>
<FORM>
<INPUT TYPE=HIDDEN NAME=action VALUE=query>
Server: <INPUT TYPE=TEXT NAME=server VALUE="<?echo $server?>"> <SMALL>(ie: whois.networksolutions.com)</SMALL><BR>
Domain: <INPUT TYPE=TEXT NAME=query VALUE="<?echo $query?>"> <SMALL>(ie: wackowoh.com)</SMALL><BR>
<INPUT TYPE=SUBMIT VALUE=" OK ">
</FORM>
<?
if($action == "query") {
$data = whois_request($server, $query);
echo "Sent $query to $server.<p>";
echo "Output: <p><pre>$data</pre><p>";
}
?>
PHP能打开远程或本地主机上的Socket端口。本文是一个使用Socket的小例子:连
接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章。
在php中打开一个socket
使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用。函数声明
是这样的:
int fsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]])
这个函数将打开一个连接到主机hostname的port端口的TCP连接。hostname可以是一
个有效的域名,或者是一个ip地址。对于udp连接,你必须指定协议:udp://hostname.
对于unix域,主机名使用到socket的路径,这种情况下,端口port必须置为0。可选
的timeout参数用来设定等待打开一个socket的时间,单位为秒。
关于fsockopen()的更多信息,请参考:h
ttp://www.php.net/manual/function.fsockopen.php
网络新闻传输协议
访问新闻组服务器需要通过称为NNTP(网络新闻传输协议)的协议来进行。这个协议
在rfc977中有详细的细节,可以在http://www.w3.org/Protocols/rfc977/rfc977.html
得到。这个文档分别描述了怎样连接到NNTP服务器,怎样同服务器对话,以及完成这
些任务的不同命令。
连接
连接到一个NNTP服务器需要知道它的主机名(或者是ip地址)和它侦听的端口。为了
避免一个连接企图失败导致程序挂起,你应该使用timeout参数。
<?php
$cfgServer = "your.news.host";
$cfgPort = 119;
$cfgTimeOut = 10;
//open a socket
if(!$cfgTimeOut)
// without timeout
$usenet_handle = fsockopen($cfgServer, $cfgPort);
else
// with timeout
$usenet_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut);
if(!$usenet_handle) {
echo "Connection failed.n";
exit();
}
else {
echo "Connected.n";
$tmp = fgets($usenet_handle, 1024);
}
?>
与服务器对话
  现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了。比如
说我们要从某个新闻组得到最近的10篇文章。RFC977指出,第一步要用GROUP命令选择
正确的新闻组:
GROUP ggg
作者:井中月

JAVA是个非常强大的编程利器,它的扩展库也是非常的有用,这篇教程,主要讲述怎样使用PHP调用功能强大的JAVA 类库(classes)。为了方便你的学习,这篇教程将包括JAVA的安装及一些基本的例子。
windows下的安装
第一步:安装JDK,这是非常容易的,你只需一路回车的安装好。然后做好以下步骤。
在 Win9x 下加入 :“PATH=%PATH%;C:jdk1.2.2bin” 到AUTOEXEC.BAT文件中
在 NT 下加入 “;C:jdk1.2.2bin”到环境变量中。
这一步是非常重要的,这样PHP才能正确的找到需调用的JAVA类。
第二步:修改你的PHP.INI文件。
[java]
extension=php_java.dll
java.library.path=c:webphp4extensions
java.class.path="c:webphp4extensionsjdk1.2.2php_java.jar;c:myclasses"
在PHP.INI中加入extension=php_java.dll
并在[java]中,设定好java.class.path,让它指向php_java.jar,如果你使用新的JAVA类,你也应该存入这个路径,在这篇例子中,我们使用c:myclasses这个目录。
第三步:测试环境,创建如下PHP文件:
$system = new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")."
n";
print "Java vendor=".$system->getProperty("java.vendor")."
nn";
print "OS=".$system->getProperty("os.name")." ".
$system->getProperty("os.version")." on ".
$system->getProperty("os.arch")."
n";
$formatter = new Java("java.text.SimpleDateFormat","EEEE,
MMMM dd, yyyy 'at' h:mm:ss a zzzz");
print $formatter->format(new Java("java.util.Date"))."n";
?>
如果你正确安装了,你将会看到以下信息:
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time
这样,我们就已经成功的建立起了可以使用JAVA类的PHP运行环境,我们可以开始我们接下去的课程了。