声明
本文仅是渗透测试技术研究,适用人群为:渗透测试人员,IT运维人员,以及Web开发人员,帮助我们在发现登录等容易发生SQL注入漏洞 。严禁用于非法用途,否则产生的一切后果由所观看文章的人自行承担,IT者说不承担任何责任 。个人能力有限 如有错误 ,欢迎指出
引言
文章插图
SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一 。黑客或者恶意攻击者,一旦注入成功可以使用万能密码绕过登录验证;获取管理员账号密码;列目录,读文件,写入文件;读、写、删除注册表;远程执行命令 。
什么是SQL注入SQL注入就是利用现有应用程序的特性,攻击者在Web表单、URL等可输入数据的地方,插入恶意SQL语句一并和原有的SQL语句被数据库一起执行 。SQL命令就是前端应用程序和后端数据库之间的接口 。简单来说,就是攻击者在一些正常输入数据的位置,插入特殊SQL语句,但这条语句被数据库正确的执行,从而造成安全事故 。
SQL注入原理
文章插图
上图展示用户访问网站的数据流程 。
具体如下:
- 用户通过浏览器想访问http://www.xxx.com/article.php?id=11,其中id为11的一篇文章,浏览器向Web服务器发送请求 。
- Web服务器根据id=11,动态构造SQL语句:SELECT * FROM article where id =11,向数据库发送请求 。
- 数据库在article表中查询出id=11的所有数据,并将所有查询的记录返回给Web服务器 。Web服务器将返回的请求进行处理,并生成html文件,返回给浏览器 。
- 浏览器将返回的HTML代码展示给用户 。
①修改参数值等数据请求给Web服务器;
②Web服务器未经审查和过滤,将修改的数据注入到SQL语句中,SQL语句原来的功能被修改;
③数据库将一些危险敏感的信息,返回给服务器;
④攻击者获取到重要信息 。
一般的SQL注入分类
文章插图
按Sql注入的输入参数,分为数字型和字符串型;按数据库返回结果分为显错注入和盲注 。当然也有专家将SQL注入分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,基本上都可以归入以上两种类型 。
总结SQL注入虽然危害极大,但还是可控可防的 。从以下几点可以避免SQL注入攻击
- 在设计应用程序时,完全使用参数化查询来设计数据访问功能 。
- 在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符) 。
- 如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符) 。
- 使用php开发,可写入html特殊函数,可正确阻挡XSS攻击 。
- 其他,使用其他更安全的方式连接SQL数据库 。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL 。
- 使用SQL防注入系统 。
- 增强WAF的防御力
【最古老、最危险的攻击方式!SQL注入】
推荐阅读
- 淘宝开店指导运营可信吗 开淘宝店最怕的是什么
- 一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项
- 人工智能产业发展深度报告:格局、潜力与展望
- Java整合微信支付、支付宝支付
- 最新百度信息流产品手册,带你全面了解百度产品
- 新手做淘宝应该怎么选品 淘宝新店选款最好方法
- 直通车最高溢价是什么意思 直通车溢价多少合适
- 心脏病有什么症状表现,三种信号最常见
- 做淘宝店铺最基础的运营技巧 网店运营需要哪些技能
- 做淘宝店铺最基础的运营技巧 零基础学淘宝运营