什么是SQL注入?
攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后台数据库乃至整个应用系统的入侵。
SQL注入原理
SQL注入攻击的本质,服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当作SQL语句执行,从而影响数据库安全和平台安全。
SQL注入的本质
对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分执行。
两个条件
1.用户能够控制输入
2.原本程序要执行的SQL语句,拼接了用户输入的恶意数据
注入过程
1.攻击者访问有SQL注入漏洞的网站,寻找注入点
2.攻击者 构造注入语句,注入语句和程序中的SQL语句结合生成鑫的sql语句
3.新的sql语句被提交到数据库等待处理
4.数据库执行了新的sql语句,引发了sql注入攻击
危害
1.绕过登录验证:使用万能密码登录网站后台等
2.获取敏感数据:获取网站管理员账户密码等
3.文件系统操作:列目录,读取、写入文件等
4.注册表操作:读取、写入、删除注册表等
5.执行系统命令:远程执行命令
判断一个HTTP请求是否存在SQL注入的方式
经典:and 1=1 | and 2>1 | or 1=1
数据库函数:and sleep(4)=1 | and length(user())>3
特殊符号:单引号‘ 双引号 “
SQL注入分类
注入类型:
1.SQL注入
攻击者把sql命令插入到web表单的输入域或页面请求的查询字符串,欺骗数据库服务器执行恶意的sql命令
2.命令注入
后端未过滤掉恶意数据,代码当作系统命令执行。
3.代码注入
般出现在不安全的使用某些函数(例如文件包含、反序列化漏洞)
4.LDAP注入
ldap:轻量级目录访问协议
用于访问网络中的mu'lu服务,常用于active