答案:暑假在家好无聊,无事可做,就到网上溜达溜达,发现N多的站点有洞洞,以前别人说中国的网络安全性是多么的差,我还不相信,现在终于相信了哦!我和某些开发ASP的人员聊过…有些人员对SQL注入,用户密码需要加密保存了解的甚少……汗……切入正题吧……由于SQL INJECTION是脚本与数据库相结合的攻击方式,所以防范这种漏洞,要从脚本和数据库两方面下手……本文主要针对一些无ASP基础,网站形式为代码站下载摸板使用的用户。本文就以我们的天空个人主页系统为例, 我们的天空主要功能有新闻,相册,日记,留言本,文章,计数统计,作品展示。界面非常漂亮,非常适合做个人主页……我们就从这里下手吧!打照自己的安全小站!我们的天空,演示地址:http://dong.6088.net 站里面有下载,下载下来看代码吧打开shoupic.asp代码如下: <!--#include file="conn.asp"--> <!--#include file="jbsz.asp"--><%dy_id=request.QueryString("id")if dy_id<>"" thenset rs=server.CreateObject("adodb.recordset")sql="select * from dy_load where dy_id="&dy_idrs.open sql,conn,1,1%><title><%=dy_name%>风采</title><body oncontextmenu="return false" onselectstart="return false" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="100%" align="center" valign="middle"> <img src="<%=rs("dy_content")%>" border="0"></td> </tr></table><%rs.closeset rs=nothingconn.closeset conn=nothingend if%>
好象什么都没有过滤哦!好可怕哦……在看看其他的,showdaily.asp,showwz.asp,download.asp都没有进行任何的过滤哦,看看程序员的安全水平把,本文针对菜鸟。也不讲什么数字型,字符型,文本型的漏洞了。免的菜鸟听的#@#$#$#!@@呼呼大睡了……写一个文件,代码如下:<%StrTemp=request.servervariables("server_name")&request.servervariables("url")&"?"&Request.QueryStringStrTemp = LCase(StrTemp) If Instr(StrTemp,"select%20") or Instr(StrTemp,"insert%20") or Instr(StrTemp,"delete%20from") or Instr(StrTemp,"count(") or Instr(StrTemp,"drop%20table") or Instr(StrTemp,"update%20") or Instr(StrTemp,"truncate%20") or Instr(StrTemp,"asc(") or Instr(StrTemp,"mid(") or Instr(StrTemp,"char(") or Instr(StrTemp,"xp_cmdshell") or Instr(StrTemp,"exec%20master") or Instr(StrTemp,"net%20localgroup%20administrators") or Instr(StrTemp,"net%20user") or Instr(StrTemp,"%20or%20") or Instr(StrTemp,"'") or Instr(StrTemp,"%20") or Instr(StrTemp,"""") or Instr(StrTemp,"“") or Instr(StrTemp,"”") or Instr(StrTemp,":") or Instr(StrTemp,":") or Instr(StrTemp,";") or Instr(StrTemp,";") or Instr(StrTemp,",") or Instr(StrTemp,",") or Instr(StrTemp,"-") or Instr(StrTemp,"%27") then Response.Write "<script language='javascript'>alert('非法操作!立即返回!');history.back();</script>" Response.endEnd If %> </P><P>过滤了N多东西,不光可以用于这个网站里面哦!把上面的代码另寸为safe.asp。在showdaily.asp,showpic.asp,showwz.asp等文件插入以下代码<!--#include file="safe.asp"--> </P><P>如:shoupic.asp 代码为<!--#include file="conn.asp"--><!--#include file="jbsz.asp"--><!--#include file="safe.asp"-->……………… 在url后添加个单引号看看……被过滤了吧……多简单……如图1</P><P>提示的字符可以修改的哈,搞点BT的,呵呵!对付现在只会用SQL注人工具的菜鸟就没有用处了哦…………还加入了%27过滤,还可以用于MSSQL数据库哦!脚本安全有保障拉……呵呵!脚本漏洞修差不多了……碰到那些传说中的高手就不行拉……开始第二阶段数据库漏洞修补了。数据库采用MD5算法加密,MD5算法是一种不可逆的算法,只能采取穷举密码的方法了,如果密码是十几位的,那么破解恩恩恩……几十年,甚至上百年,我是没有破解过……现在来行动吧……在光盘里面寻找md5.asp文件……复制到根目录下的……寻找到admin_login.asp<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="conn.asp"--> <!--#include file="md5.asp"--><% d_adm=trim(request.form("adm")) d_adm=replace(d_adm,"'","") d_pws=trim(request.form("pws")) d_pws=replace(d_pws,"'","") if d_adm="" or d_pws="" then response.Write("用户名和密码不能为空!") else set rs=server.CreateObject("adodb.recordset") sql="select * from dy_admin where adm='"&d_adm&"' and pws='"&md5(d_pws)&"'" rs.open sql,conn,1,1 if not rs.eof then session("oursky")="oursky" response.Redirect ("ad_login.asp") else response.Redirect("admin.asp") end if rs.close set rs=nothing conn.close set conn=nothing end if %>
修改为以上代码……修改好了哦……—但还没有全部完成ING,由于你的数据库里面的密码还是明文保存的,现在上传,登陆的话,密码肯定错误呢……这里要用到MD5密码转换器,如图2
123456789加密后就是323b453885f5181,用ACCESS打开数据库管理员表单是dy_admin,然后在PWS字段下把密码修改成323b453885f5181f以后就可以用123456789登陆了……在把数据库路径修改一下把……相信没有多少人能攻破你的站了哦………本文所用的safe.asp.md5.asp. admin_login.asp,MD5转换器,请在光盘压缩包里寻找 。