SQL注入攻击零距离

来源:互联网 发布:淘宝延长收货对花呗 编辑:程序博客网 时间:2024/04/27 12:26

 

一次次的SQL注射入侵,一次次的网站被黑,总是那句话,漏洞在所难免,难道一点办法都没吗?这篇文章就是为大家解析下SQL注 射的原理,以及给出一些预防方法。
一:基础篇
分析下漏洞产生的原因,主要还是参数没完全过滤。
cntid = Request("cntid")
这样的语句就存在一个注入攻击,首先,没验证是否为整数
解决方法:
<% dim cntid
cntid =replace(request("cntid "),"","")
if (not isnumeric(cntid)) then
call error
response.end
end if
sub Error()
response.write " <table align=center width=300 border=0
cellpadding=4 cellspacing=0 >"
response.write " <tr > "
response.write " <td colspan=2 height=15> "
response.write " <div align=center>
操作: 参数错误!</div>"
response.write " </td>"
response.write " </tr>"
response.write " <tr> "
response.write " <td colspan=2 height=23> "
response.write " <div align=center><br><br>"
response.write " 参数错误!!!非法探测已经被记录 <br><br>"
response.write " <a href=javascript:onclick=history.go(-1)>返回</a>"
response.write " <br><br></div></td>"
response.write " </tr> </table></body></html>"
end sub
%>

这是一个最基础的过滤,如果提交非法参数效果如图1:


那么我们还需要注意什么?
用户名的注册,必须过滤掉一些特殊符号,继续刚才的话题,我们假设是username.
<% dim username
username =replace(request("username "),"","")
if Instr(username,"=")>0 or Instr(username,"%")>0 or Instr(username,chr(32))>0 or Instr(username,"?")>0 or Instr(username,"&")>0 or Instr(username,";")>0 or
Instr(username,",")>0 or Instr(username,"")>0 or Instr(username,",")>0 or Instr
(username,chr(34))>0 or Instr(username,chr(9))>0 or Instr(username," ")>0 or
Instr(username,">")>0 or Instr(username,"<")>0 or Instr(username,"$")>0 or Instr
(username,"#")>0 or Instr(username,"@")>0 then

call error
response.end
end if
sub Error()
response.write " <table align=center width=300 border=0
cellpadding=4 cellspacing=0 >"
response.write " <tr > "
response.write " <td colspan=2 height=15> "
response.write " <div align=center>操作: 参数错
误!</div>"
response.write " </td>"
response.write " </tr>"
response.write " <tr> "
response.write " <td colspan=2 height=23> "
response.write " <div align=center><br><br>"
response.write " 用户名中含有非法字符(“=”,“%”,
“?”,“&”,“;”,“,”,“”,” ”,“>”,“<”,“$”,“#”,“@”) <br><br>"
response.write " <a
href=javascript:onclick=history.go(-1)>返回</a>"
response.write " <br><br></div></td>"
response.write " </tr> </table></body></html>"
end sub
%>
利用这个原理,我们还能过滤一些可能存在cookies跨站脚本的地方:
只要过滤cookie,java这样的字眼,方法同上。需要注意的事,类似与用户登陆的地方,用户名一定要username =replace(request("username "),"",""),意思就是把’过滤成”,这样做的目的就是预防’ or ‘’=’这样的入侵。
可是如果类似www.xx.com/list.asp? action = search
我们可以这样过滤
<% action=request("action")
select case action
case "search"
call search()
case else
call search()
end select
sub search ()
这里是search的内容
end sub
%>
大家可以看到无论对错,都执行search。这样也可以预防SQL。
二:密码安全
采用不可逆加密是必须的选择,防止别人探测到密码后暴力破解,MD5用艿氖迪址浅<虻ィ姹闳フ腋鯩D5函数体,很多源代码都 带。
<!-- #include file=" md5.asp" --> 这里是引入MD5函数
<% dim username
username =md5(md5(replace(request("username "),"","")))
%>
这里就实现了2次MD5加密,一般2-3次就足够了,暴力破解比较困难:)
COOKIES欺骗问题很严重,所以一般后台管理员一定要session验证。实现方法
我们在登入成功后写入
session("btadmin")=rsadmin("admin")
建立一个验证函数cookies.asp
内容如下
<%
if session("btadmin")="" then
response.redirect "admin.asp"
end if
%>

在每个管理员操作文件的开头加上
<!--#include file="cookies.asp" -->
这样就可以预防非法登陆了:)
我们经常看到验证码这样的东西,这样做是为了预防暴力破解。
实现方法,假设登入为login.asp
我们在开头加:
<%
dim p
randomize ‘对随机数生成器做初始化的动作
p = Int((8999 * Rnd) + 1000)
session("cntcode")=p %>

插入验证代码的表格
<tr>
<td valign=middle>请输入验证码</td>
<td valign=middle>
<INPUT name=yanzhen type=text>
在左边框输入: <%=session("cntcode")%></td></tr>

最后验证程序:
<%
if request("yanzhen")="" or trim(session("cntcode"))
<>trim(replace(request("yanzhen"),"","")) then
response.write " 请正确输入您的验证码。"
response.end
else
%>
程序运行效果如图2:

三:数据库安全
爆库的方法越来越多,我们来看下:如图3

按X档案以前文章一位大侠说的,将/替换为 %5c,确实很多网站都存在这样的漏洞。大家可以清楚的看到数据库地址。
偶什么方法可以预防呢?
。。。(代码见杂志)。。。。。。。。。。。

这是一个数据库连接文件,大部分为conn.asp
关键在与on error resume next出错了也执行下一句
我们看下他的运行效果。


除了图片显示不正常外,没暴露数据库:)
其实浪心建议用WIN2003做服务器,当你用%5c 来替换的时候
_blank>http://127.0.0.1/fourm.asp?cntid=4
自动换成%5cfourm.asp/多个/
_blank>http://127.0.0.1%5cfourm.asp/?cntid=4
找不到服务器,唯一的结果,更厉害:)
还有一种方法就是不让对方下载数据库
方法是
新建一个notdown表,字段为nodown, 数据类型为ole 如图4

保存为mdb.mdb
OK,我们写个nodown.asp
代码如下
。。。(代码见杂志)。。。。。。。。。。。
把他同数据库一同上传到你的空间,或者本地做个IIS,运行nodown.asp
提示添加记录成功。
OK,把数据库重新命名为mdb.asp
直接在浏览器里输入数据库地址:提示
Active Server Pages 错误 ASP 0116
丢失脚本关闭分隔符
/bbs/cntlovebbs.asp,行 44042
Script 块缺少脚本关闭标记(%>)。
用快车下载提示HTTP 500错误
OK到这里数据库安全也过去了:)下面说下浪心新的思维:)没任何技术难度,会VB的都会写:)
四:安全的后台登入
。。。(代码见杂志)。。。。。。。。。。。

OK了:)程序简单的出奇,他的功能可不小哦:)你的网站可以比以前安全许多。

 

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 索尼手机忘记开机密码怎么办 索尼笔记本开机密码忘了怎么办 手机的开机密码忘了怎么办 联想手机开机密码忘了怎么办 红米note3忘记开机密码怎么办 小米2忘了密码怎么办 小米笔记本电脑忘记开机密码怎么办 小米笔记本忘记开机密码怎么办 小米手机儿童模式忘记密码怎么办 小米应用锁密码忘了怎么办 小米air密码忘了怎么办 小米4密码忘了怎么办 小米手机开机密码忘了怎么办? 小米笔记本电脑开机密码忘了怎么办 小米笔记本开机密码忘了怎么办 htc手机忘记解锁图案怎么办 红米手机屏幕锁定怎么解锁怎么办 小米5s有id怎么办 手机密码找不回来了怎么办? 手机密码图案忘了怎么办 手机屏幕图案锁忘了怎么办 捡到苹果7有id锁怎么办 魅族什么都忘了怎么办 海信电视百事通登陆失败怎么办 去哪儿换号了怎么办 ipan充不进去电怎么办 安卓数据线松了怎么办 索尼z5耳机掉漆怎么办 索尼z5无限重启怎么办 苹果8基带坏了怎么办 oppo手机忘记图案密码怎么办 电池充不进去电怎么办 电脑充不进去电怎么办 苹果5c白苹果怎么办 港行不支持电信卡怎么办 安卓导航不开机怎么办 鞭炮放一半不响怎么办 禁止鸣笛的地方鸣笛了怎么办 手被炮仗炸了怎么办 手被猴子抓伤了怎么办 炸东西剩的油怎么办