1、什么是sql注入:
sql注入是一种利用程序中的漏洞,通过恶意构造的sql语句来实现攻击的方法。在web应用程序中,输入表单的数据往往会被传递到服务器,服务器再通过sql语句对数据库进行操作。如果应用程序对用户输入的数据没有进行充分的验证和过滤,攻击者就可以在输入框中输入恶意代码,从而实现sql注入攻击。
简单来说:前后端进行数据交互,在前端往后端传数据的时候,携带恶意的sql语句,如果后端没有充分的验证和过滤的话,就会执行那些恶意的sql语句,从而造成sql注入攻击。
2、sql注入的几种类型:
1.报错注入
2.bool注入
3.延时注入
4.宽字节注入
3、什么是二次注入:
假如有一个网站管理员的用户名为:root 密码为:123456789 ,攻击者注册了一个账号 : root'-- 密码为:123因为账号当中有特殊字符,网站对于特殊字符进行了转义,一次注入在这就行不通了。虽然账号被转义了,但是他在数据库当中任然是以 root'-- 的方式被储存的。现在攻击者开始实施正真的攻击了,他开始对账号修改密码。普通网站修改密码的过程为:先判断用户是否存在------》确认用户以前的密码是否正确--------》获取要修改的密码---------》修改密码成功。 在数据库中 -- 表示注释的意思,后面的语句不会执行,而root后面的那个单引号又与前面的 ' 闭合,而原本后面的那个单引号因为是在 -- 之后,所以就被注释掉了,所以他修改的其实是 root 的密码。
4、如何拿到网站的webshell:
1.文件上传
2.后台编辑模板
3.sql注入写文件
4.命令执行
5.代码执行
6.一些已经爆出来的cms漏洞
5、owasp漏洞有哪些:
-
sql注入
-
失效的身份认证和会话管理
-
跨站脚本攻击XSS
-
直接引用不安全的对象
-
安全配置错误
-
敏感信息泄露
-
缺少功能及的访问控制
-
跨站请求伪造 CSRF
-
使用含有已知漏洞的组件
-
未验证的重定向和转发
6、sql注入防护方法:
1.对输入的字符进行转义处理
2.对客户端输入进行控制,不允许输入sql注入相关的特殊字符
3.服务端在提交数据库进行sql查询前,对特殊字符进行过滤,转义,替换,删除。
7、如何绕waf:
-
大小写转换法
-
干扰字符
-
/ * ! * /
-
base64编码
-
unicode
-
hex
-
url
-
ascll
-
复参数
8、为什么参数化查询可以防止sql注入:
原理:
使用参数化查询数据库服务器不会把参数的内容仿作sql指令的一部分来执行,是在数据库完成sql执行编译后才套用参数运行。
简单来说:参数化能防止注入的原因在于,语句是语句,参数是参数,参数的值并不一定是语句的一部分,数据库只按语句的语义跑。
9、代替空格的方法:
%0a、%0b、%a0等 /**/ 等 注释符<>
10、mysql网站注入,5.0以上和5.0一下有什么区别:
5.0以下没有information_schema 这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操作