初谈XSS和SQL注入

XSS(跨站脚本攻击)

原理

        通过精心构造的代码(JavaScript)注入到网页中,当用户访问被XSS脚本注入过的网页时,XSS脚本就会被提取出来,并由浏览器解释运行这段JS代码,达到恶意攻击的效果

类型

  • 反射型---非持久性XSS,参数型跨站脚本

    • 仅执行一次

  • 存储型
    • 一般发生在论坛、博客、留言板,通过把XSS攻击代码嵌入发帖,写入数据库,只要用户访问数据库,就会执行XSS代码。

  • DOM型

    • 通过JS代码操作DOM文档对象模型时触发的漏洞,一般不与服务端进行交互

危害

        获取用户身份信息,如cookie信息、浏览器信息、IP地址等

        后台增删改网站数据等操作 --- 可以配合CSRF漏洞,骗取用户点击,利用js攻击浏览器

        获取键盘使用记录

        钓鱼

        传XSS蠕虫,微博蠕虫、贴吧蠕虫

        植入广告链接、木马等

注入点

        由用户输入或与数据库交互的地方,如留言板、贴吧等

防御

  • 输入验证,对用户输入进行验证

    • 仅接受指定长度

    • 仅包含合法字符

    • 仅接受指定范文

    • 特殊格式

  • 输出编码(用来确保输入的字符被视为数据,而不是作为html被浏览器所解析)

  • 黑白名单策略

  • 开启httponly属性

绕过

  • 大小写绕过

  • 双写绕过

  • /代替空格

  • 引号

  • 使用HTML实体编码

  • 利用JavaScript事件

  • 利用URL编码

  • 使用不完整的HTML标签

  • 利用编码绕过

  • ...

SQL注入

原理

        由于没有对用户输入进行过滤,并直接将用户输入与SQL语句以字符串拼接的方式连接,导致用户的不安全输入被视作正常SQL语句来执行

类型

  • 字符型

  • 数字型

  • 区别:如果有报错回显,报错信息中含有输入的字符串,则为字符型,没有则为数字型

注入手法

  • 常见注入手法
    • 联合查询

    • 报错注入

    • 布尔盲注

    • 延时注入

    • 堆叠查询

    • 宽字节注入

  • 提交参数方式

    • GET注入

    • POST注入

    • Cookie注入

    • HTTP头部注入

  • 特殊注入方式

    • cookie注入

    • base64注入

    • User-Agent注入

    • Referer注入

危害

  • 对数据库增删改查

  • 脱库

  • 获取用户敏感信息(用户数据库账密等)

  • 提权

  • 植入网页木马,对网页进行篡改

注入点

        用户输入与数据库交互的地方,都有可能存在SQL注入的风险

防御

  • 不使用字符串拼接的方式构造SQL语句,使用预编译

  • 对用户输入进行过滤

  • 使用waf       

绕过

  • 空格过滤绕过

    • /**/绕过

    • 制表符绕过

    • 换行符绕过

    • 括号绕过

    • `反引号绕过

  • 内联注释绕过【常见waf!!!】

  • 大小写绕过

  • 双写关键字绕过

  • 编码绕过

    • 双重URL编码绕过

    • 十六进制编码绕过

    • Unicode编码绕过

    • ASCII编码绕过

  • 等价函数字符替换绕过

    • 用like或in代替=

    • 逗号过滤

    • 等价函数

  • 逻辑符号替换

  • 宽字节绕过

  • 正则表达式替换

  • ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值