网站被sql注入的修复方法
程序员文章站
2024-01-26 14:41:28
近日,网站频频被黑。在网站里莫名其妙的多出一篇文 章,还有多出一组贴图。正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站... 12-09-28...
近日,网站频频被黑。在网站里莫名其妙的多出一篇文 章,还有多出一组贴图。正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站有漏洞,还说是他弄了我 的网站。不过还好,他给我详细说了黑我网站的方法,还提醒我好好修补修补,不然会被别人黑的。从他那得知,他用的是“啊d注入工具”,先找我的网站是否存 在可注入点,如果有,进行注入,能够破解得到后台密码。
当晚我把那个“啊d注入工具”下载下来研究,知道了他注入的原理,对网页进行了一些修改,但是用工具一查,还是存在注入点。小虾无能,只好上网搜索,找到了如下的方法,按如下修改后,再用“啊d注入工具”检测,果然不存在注入点了。
下面是修补方法:
用工具检测到网站存在sql注入点,那么如何进行修补呢?
1.新建一个asp文件,写入以下代码,保存文件名为checksql.asp。
<%
dim fy_url,fy_a,fy_x,fy_cs(),fy_cl,fy_ts,fy_zx
''''---定义部份 头------
fy_cl = 3 ''''处理方式:1=提示信息,2=转向页面,3=先提示再转向
fy_zx = "[color=red]输入你的网页地址[/color]" ''''出错时转向的页面
''''---定义部份 尾------
on error resume next
fy_url=request.servervariables("query_string")
fy_a=split(fy_url,"&")
redim fy_cs(ubound(fy_a))
on error resume next
for fy_x=0 to ubound(fy_a)
fy_cs(fy_x) = left(fy_a(fy_x),instr(fy_a(fy_x),"=")-1)
next
for fy_x=0 to ubound(fy_cs)
if fy_cs(fy_x)<>"" then
if instr(lcase(request(fy_cs(fy_x))),"''''")<>0 or instr(lcase(request(fy_cs(fy_x))),"and")<>0 or instr(lcase(request(fy_cs(fy_x))),"select")<>0 or instr(lcase(request(fy_cs(fy_x))),"update")<>0 or instr(lcase(request(fy_cs(fy_x))),"chr")<>0 or instr(lcase(request(fy_cs(fy_x))),"delete%20from")<>0 or instr(lcase(request(fy_cs(fy_x))),";")<>0 or instr(lcase(request(fy_cs(fy_x))),"insert")<>0 or instr(lcase(request(fy_cs(fy_x))),"mid")<>0 or instr(lcase(request(fy_cs(fy_x))),"master.")<>0 then
select case fy_cl
case "1"
response.write ""
case "2"
response.write ""
case "3"
response.write ""
end select
response.end
end if
end if
next
%>
然后把此文件放到网站目录上去,然后在被发现有注入点的文件里,找到以下代码,
注意,“***.***”为连接的文件,找到相关类似的代码即可,然后在后面添加一句
要注意checksql.asp所放在的路径,对应修改。完成后再用工具后在扫一次,确定不在被发现sql注入点后,问题解决。
知识补充:所谓sql注入,就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击
当晚我把那个“啊d注入工具”下载下来研究,知道了他注入的原理,对网页进行了一些修改,但是用工具一查,还是存在注入点。小虾无能,只好上网搜索,找到了如下的方法,按如下修改后,再用“啊d注入工具”检测,果然不存在注入点了。
下面是修补方法:
用工具检测到网站存在sql注入点,那么如何进行修补呢?
1.新建一个asp文件,写入以下代码,保存文件名为checksql.asp。
<%
dim fy_url,fy_a,fy_x,fy_cs(),fy_cl,fy_ts,fy_zx
''''---定义部份 头------
fy_cl = 3 ''''处理方式:1=提示信息,2=转向页面,3=先提示再转向
fy_zx = "[color=red]输入你的网页地址[/color]" ''''出错时转向的页面
''''---定义部份 尾------
on error resume next
fy_url=request.servervariables("query_string")
fy_a=split(fy_url,"&")
redim fy_cs(ubound(fy_a))
on error resume next
for fy_x=0 to ubound(fy_a)
fy_cs(fy_x) = left(fy_a(fy_x),instr(fy_a(fy_x),"=")-1)
next
for fy_x=0 to ubound(fy_cs)
if fy_cs(fy_x)<>"" then
if instr(lcase(request(fy_cs(fy_x))),"''''")<>0 or instr(lcase(request(fy_cs(fy_x))),"and")<>0 or instr(lcase(request(fy_cs(fy_x))),"select")<>0 or instr(lcase(request(fy_cs(fy_x))),"update")<>0 or instr(lcase(request(fy_cs(fy_x))),"chr")<>0 or instr(lcase(request(fy_cs(fy_x))),"delete%20from")<>0 or instr(lcase(request(fy_cs(fy_x))),";")<>0 or instr(lcase(request(fy_cs(fy_x))),"insert")<>0 or instr(lcase(request(fy_cs(fy_x))),"mid")<>0 or instr(lcase(request(fy_cs(fy_x))),"master.")<>0 then
select case fy_cl
case "1"
response.write ""
case "2"
response.write ""
case "3"
response.write ""
end select
response.end
end if
end if
next
%>
然后把此文件放到网站目录上去,然后在被发现有注入点的文件里,找到以下代码,
注意,“***.***”为连接的文件,找到相关类似的代码即可,然后在后面添加一句
要注意checksql.asp所放在的路径,对应修改。完成后再用工具后在扫一次,确定不在被发现sql注入点后,问题解决。
知识补充:所谓sql注入,就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击