SQL注入简介
(一)什么是sql注入
- 通过把SQL命令插入到Web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
- 利用应用程序漏洞
- 恶意SQL命令注入到后台数据库引擎,并执行
注入流程 :
(二)SQL注入原理
- 程序命令和用户数据(即用户输入)之间没有做到泾渭分明
- 这使得攻击者有机会将程序命令当作用户输入的数据提交给Web程序,以发号施令,为所欲为
- 接受相关参数未经处理直接带入数据库查询操作
- 从而获得数据库的管理权限,然后提权至操作系统管理用户权限
- 最终控制服务器操作系统
经典OR漏洞原理解析:
输入 ‘or 1=1 – 发现输入任何密码都可以登录成功
(三)SQL注入方法–要确定的三件事情
-
确定Web应用程序所使用的技术
注入攻击对程序设计语言或者硬件关系密切 -
查询注入点
web应用的用户输入方式比较多
明显的输入:HTML表单
隐藏的输入:HTTp头部、cookics。甚至对用户不可见的后端AJax请求来跟Web应用进行交互。所有HTTP的GET和POST都应当作用户输入。为了找到一个Web应用所有可能的用户输入,我们可以求助于Web代理,例如Bp -
查找可用于注入的用户输入
输入方式进行筛选,找出其中可以注入命令的那些输入方式 -
手工注入
- 找到注入点,手工构造输入
-
利用工具进行注入
-
例如sqlmap
http:// www.. com/ .asp?id=x (ASP注入)
http:// www.. com/ .php?id=x (php注入).
http:// www.. com/ .jsp?id=x (jsp注入)
http:// www.. com/ .aspx?id=x (aspx注入)。
http:// www.. com/index.asp?id=8&page=99(注:注入的时候确认是id参数还是page 参数,工具默认只对后面page参数注入,所以要对工具进行配置或者手工调换)。
http:// www.****.com/index/new/id/8伪静态。
http:// www.**.com/index/new/php-8.html伪静态
(四)SQL注入的危害
- 数据库层面
- 非法读取、篡改、添加、删除数据库中数据
- 盗取用户的各类敏感信息,获取利益·
- 通过修改数据库修改网页上的内容
- 私自添加或者删除账号
- 操作系统层面
- 网页篡改
- 网络挂马
- 服务器远程控制