最古老、最危险的攻击方式!SQL注入

声明
本文仅是渗透测试技术研究,适用人群为:渗透测试人员,IT运维人员,以及Web开发人员,帮助我们在发现登录等容易发生SQL注入漏洞 。严禁用于非法用途,否则产生的一切后果由所观看文章的人自行承担,IT者说不承担任何责任 。个人能力有限 如有错误 ,欢迎指出
引言

最古老、最危险的攻击方式!SQL注入

文章插图
 
SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一 。黑客或者恶意攻击者,一旦注入成功可以使用万能密码绕过登录验证;获取管理员账号密码;列目录,读文件,写入文件;读、写、删除注册表;远程执行命令 。
什么是SQL注入SQL注入就是利用现有应用程序的特性,攻击者在Web表单、URL等可输入数据的地方,插入恶意SQL语句一并和原有的SQL语句被数据库一起执行 。SQL命令就是前端应用程序和后端数据库之间的接口 。简单来说,就是攻击者在一些正常输入数据的位置,插入特殊SQL语句,但这条语句被数据库正确的执行,从而造成安全事故 。
SQL注入原理
最古老、最危险的攻击方式!SQL注入

文章插图
 
上图展示用户访问网站的数据流程 。
具体如下:
  1. 用户通过浏览器想访问http://www.xxx.com/article.php?id=11,其中id为11的一篇文章,浏览器向Web服务器发送请求 。
  2. Web服务器根据id=11,动态构造SQL语句:SELECT * FROM article where id =11,向数据库发送请求 。
  3. 数据库在article表中查询出id=11的所有数据,并将所有查询的记录返回给Web服务器 。Web服务器将返回的请求进行处理,并生成html文件,返回给浏览器 。
  4. 浏览器将返回的HTML代码展示给用户 。
对照访问网站数据流程,SQL注入过程是
①修改参数值等数据请求给Web服务器;
②Web服务器未经审查和过滤,将修改的数据注入到SQL语句中,SQL语句原来的功能被修改;
③数据库将一些危险敏感的信息,返回给服务器;
④攻击者获取到重要信息 。
一般的SQL注入分类
最古老、最危险的攻击方式!SQL注入

文章插图
 
按Sql注入的输入参数,分为数字型和字符串型;按数据库返回结果分为显错注入和盲注 。当然也有专家将SQL注入分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,基本上都可以归入以上两种类型 。
总结SQL注入虽然危害极大,但还是可控可防的 。从以下几点可以避免SQL注入攻击
  1. 在设计应用程序时,完全使用参数化查询来设计数据访问功能 。
  2. 在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符) 。
  3. 如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符) 。
  4. 使用php开发,可写入html特殊函数,可正确阻挡XSS攻击 。
  5. 其他,使用其他更安全的方式连接SQL数据库 。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL 。
  6. 使用SQL防注入系统 。
  7. 增强WAF的防御力

【最古老、最危险的攻击方式!SQL注入】


    推荐阅读