|
* s+ T& v6 n, `7 c; _2 `! d
声明本文仅是渗透测试技术研究,适用人群为:渗透测试人员,IT运维人员,以及Web开发人员,帮助我们在发现登录等容易发生SQL注入漏洞严禁用于非法用途,否则产生的一切后果由所观看文章的人自行承担,IT者说不承担任何责任。
. h" S; m" v3 K9 L 个人能力有限 如有错误 ,欢迎指出引言
' ?: h; x" ~( [: ]. W+ W) R SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一黑客或者恶意攻击者,一旦注入成功可以使用万能密码绕过登录验证;获取管理员账号密码;列目录,读文件,写入文件;读、写、删除注册表;远程执行命令。
2 |) B- \5 g4 P! U 什么是SQL注入SQL注入就是利用现有应用程序的特性,攻击者在Web表单、URL等可输入数据的地方,插入恶意SQL语句一并和原有的SQL语句被数据库一起执行SQL命令就是前端应用程序和后端数据库之间的接口。
7 `/ [5 D, q1 j 简单来说,就是攻击者在一些正常输入数据的位置,插入特殊SQL语句,但这条语句被数据库正确的执行,从而造成安全事故SQL注入原理
, k, d& {7 _8 F( I9 n 上图展示用户访问网站的数据流程具体如下:用户通过浏览器想访问http://www.xxx.com/article.php?id=11,其中id为11的一篇文章,浏览器向Web服务器发送请求Web服务器根据id=11,动态构造SQL语句:SELECT * FROM article where id =11,向数据库发送请求。 5 A' T1 N7 A- ^6 O1 U: A8 x
数据库在article表中查询出id=11的所有数据,并将所有查询的记录返回给Web服务器Web服务器将返回的请求进行处理,并生成HTML文件,返回给浏览器浏览器将返回的HTML代码展示给用户对照访问网站数据流程,SQL注入过程是。 i, t; ~5 u, v# s8 L4 I
①修改参数值等数据请求给Web服务器;②Web服务器未经审查和过滤,将修改的数据注入到SQL语句中,SQL语句原来的功能被修改;③数据库将一些危险敏感的信息,返回给服务器;④攻击者获取到重要信息一般的SQL注入分类。 4 A6 ^0 ~* P; L1 l1 y) i# x
按Sql注入的输入参数,分为数字型和字符串型;按数据库返回结果分为显错注入和盲注当然也有专家将SQL注入分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,基本上都可以归入以上两种类型。
" D9 M9 t+ s, N$ F9 f+ u. k 总结SQL注入虽然危害极大,但还是可控可防的从以下几点可以避免SQL注入攻击在设计应用程序时,完全使用参数化查询来设计数据访问功能在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符)。
3 N/ s# p& q, m L$ j* l( y 如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符)使用php开发,可写入html特殊函数,可正确阻挡XSS攻击其他,使用其他更安全的方式连接SQL数据库。 3 g. q! W; R- j$ w+ }( E: L% k% j
例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL使用SQL防注入系统。增强WAF的防御力 6 q. I \4 c: y6 R6 ?9 v
, N: n9 F8 s6 j2 G3 G
5 \/ \8 X) \8 S" I3 O& Q6 n/ h6 T
5 E/ K5 T" e3 b
5 H7 z& `. n! F8 k$ K9 R |