var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2010年08月31日

    预防SQL注入(2)

    分类:

    修改Get/Post请求数据工具:

    1.浏览器修改插件

    Firefox插件Web DeveloperTamper DataSQL Inject Me

    2.本地代理服务

    FoxyProxyFiddlerBurp Suite

     

    对于SQL Server而言,如果http://www.victim.com/showproducts.aspx?category=bikes' and 1=0/@@version;--能暴露出数据库错误,那么数据库内任何变量都可暴露,如http:/ /www.victim.com/showproducts.aspx?category=bikes' and 1=0/user;--。如果想暴露数据库语句执行信息,可用having 1=1,如http://www.victim.com/showproducts.aspx?category=bikes' having 1'='1having常同group by一起使用,如http://www.victim.com/showproducts.aspx?category=bikes' GROUP BY productid having '1'='1,出错后数据库错误信息显示第一列。文SQL Injection Attack and Defense给出了一个示例。

     

    SELECT * FROM products WHERE category='bikes' OR '1'='1'会返回所有结果,如果数据量过大则会出现问题,解决方法1OR '1'='2';方案2AND ‘1’=’2,这样即可知晓是否存在SQL注入可能。

     

    微软SQL Serverxp_cmdshell允许管理员执行操作系统命令并且输出行返回的结果集。

     

    SQL漏洞自动化扫描工具:

    1.    免费Scrawlr(仅GET参数)Microsoft Source Code Analyzer for SQL InjectionUrlScan,SQLiXPerl程序,不解析HTML表单,自动发Post请求)和Paros ProxyGETPOST请求)

    2.    商用HP WebInspectIBM Rational AppScan