文章作者:无名
信息来源:邪恶八进制信息安全团队(
www.eviloctal.com)
特别感谢枫三少的大力协助,本文引用他本人的部分代码。
大家好,好久没有写文章了,俗话说:士别三日,自当刮目相看。原来写的文章多多少少也碰见了不少高手的叫骂声,呵呵,希望各位高手能够当做是复习。今天写的文章虽然说在高手眼中只是浪费时间的文章,不过只当是复习吧。
今天fhod告诉了我一个在线挂QQ的地址,我一看,心想:哇!我也来测试一下,然后我刚准备输入密码的时候突然想到网上的很多骗局,心想fhod这厮经常害人,^_^先随便输入一个看看,QQ号4008**51 密码:fuckyou结果过拉一会,发现这厮呼呼傻笑中,他截了个图,哈哈果然不出我所料,这厮在钓鱼呢,凡是的输入QQ号以及其密码都会被放在一个事先定义好的数据库里,QQ号就会毫无理由的被盗了。
那么今天的第一个内容是……钓鱼式攻击
1.那么什么是钓鱼式攻击呢?
俗话说的好:姜太公钓鱼,愿者上钩。“网络钓鱼”利用欺骗性的电子邮件和伪造的Web站点来进行诈骗活动,受骗者往往会泄露自己的财务数据,如信用卡号、账户用户名、口令和社保编号等内容。而这些欺骗性的电子邮件和Web站点,正看起来越来越“完美”,也越来越“可信”。
2.查看代码找漏洞
在我的强烈要求之下,fhod把源码传给了我,哈哈~~~我打开一看!哇,不错,心想:这样一定可以钓到不少的鱼。哈哈,我打开其中一个conn.asp看了看
代码如下:
复制内容到剪贴板
代码:
<%
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("qqq.asp")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>那么我现在来解释一下这是什么意思
设置 conn等于server.createobject("adodb.connection") 然后DBPath等于 Server.MapPath("qqq.asp") conn中的Open就是Access类型的*.mdb数据库了
通过代码,我们知道qqq.asp是数据库文件,于是我把后缀名改成mdb用Microsoft Access打开qqq.mdb在admin里面添加后台管理员用户名:wuming 密码:test
这样就可以进入后台了,但是我们有没有其他的方法呢?
看完了之后,基本上对每个文件是干什么的都有了点了解,好,现在来看看代码,呵呵,拿到文件看代码是每个人的习惯,我也不例外。
突然,我在qq.asp当中发现了这样一段代码
复制内容到剪贴板
代码:
sql="select * from admin where name='"&na&"' and pwd='"&pwd&"'"心中一惊,阿?这难道不是传说中的sql injection吗???
3.漏洞原理
我为什么判断这是传说中的sql injection呢?有人会问为什么你输入这些字符会以管理员身份进入呢??
其实这些字符是对你程序中SQL语言的欺骗,而成功进入的
大家看:开始程序SQL中是对表进行查询满足user='"&user&"' and pass='"&pass&"'"条件的记录
sql="select * from 表 where user='"&user&"' and pass='"&pass&"'"
我而输入上面的代码后就成了:
sql="select * from 表 where user='a' or '1'='1' and pass='a' or '1'='1'"
大家看看,能有不进入的理由吗??以上USER PASS字段为字符型 如果是数字型也一样的道理!记得教主写了一个软件,名曰:HDSI,听说还可以PHP注入,不过经过本人实地考察,哇果然可以PHP注入,其实mysql+php环境下的攻击方式是非常非常非常之多的。我现在也不详细介绍了,网上有关的文章确实不少,一抓一大把的。
4.漏洞解决
一、函数替代法:
用REPLACE将用户端输入的内容中含有特殊字符进行替换,达到控制目的啊!:)
引用:
sql="select * from 表 where user='"&replace(user,"'","''")&"' and pass='"&replace(pass,"'","''")&"'"
这种方法每次只能替换一个字符,其实危险的字符不只是"'",还有如">"、"<"、"&"、"%"等字符应该全控制起来。但用REPLACE函数好象不太胜任那怎么办呢??
二、程序控制法
用程序来对客户端输入的内容全部控制起来,这样能全面控制用户端输入的任何可能的危险字符或代码,我就的这个方法!:)
举例说明:
复制内容到剪贴板
代码:
<%
'捕捉用户端提交的表单内容
user=request.from("user")
pass=request.from("pass")
...
'循环控制开始
for i=1 to len(user)
'用MID函数读出变量user中i 位置的一个字符
us=mid(user,i,1)
'将读出的字符进行比较
if us="'" or us="%" or us="<" or us=">" or us="&" then
'如果含有以上字符将出错提示,不能含有以上特殊字符
response.redirect "err2.htm"
response.end
end if
next
...
%>5.后话
其实网络钓鱼的方式有很多的,挂QQ只是其中的一种而已,希望大家不要拿这种方法去骗人,虽然我相信,未来随着lunix/unix的普遍使用,安全会越来越好,钓鱼式攻击会成为主导,不过这只是对未来的展望罢了吧。