白帽子讲web安全-注入攻击

前言

一个安全设计原则:数据与代码分离原则。他就是专门为了解决注入攻击而产生的。

注入攻击的本质,是把用户输入的数据当做代码执行,有两个关键条件:第一个是用户能够控制输入,第二个是原本程序要执行的代码,拼接了用户输入的数据。

SQL注入

拼接过程很重要,正因此才导致了代码的注入。

在SQL注入的过程中,如果网站的web服务器开启了错误回显,则会为攻击者提供极大地便利。

1盲注

回显关闭后,攻击者必须找到一个方法来验证注入的SQL语句是否得到执行。

通过简单的条件语句,1=2,1=1,根据页面返回是否发生变化,来判断SQL语句是否得到执行,判断SQL注入漏洞是否存在。

2Timing Attack

利用BENCHMARK()函数,可以让同一函数执行很多次,使得结果返回时间比平时要长,通过时间长短的比较,可以判断注入语句是否得到执行成功。

----------找到了SQL注入漏洞,仅仅是一个开始,要发起一个完整的攻击,还有很多事情要做。

数据库攻击技巧

1常见的攻击技巧

猜测数据对应版本技巧,确认表名技巧,读写文件技巧,

2命令执行

在MySQL中,除了导出webshell间接地执行命令外,还可以利用用户自定义函数的技巧,即UDF来执行命令。

3攻击存储过程

在my sqlserver  中,存储过程xp_cmdshell可谓臭名昭著,无数黑客利用他在讲到注入sql server时都是使用它执行系统命令。

除了利用存储过程直接攻击之外,存储过程本身也可能存在注入漏洞。

4 编码问题

要解决这个问题就是要统一数据库,操作系统,web应用所使用的字符集,以避免各层对字符的理解存在差异,统一设置为UTF-8是一个很好的方法。

5SQL Column Truncation

正确的防御SQL注入

要做的就是两件事:

找到所有的SQL注入漏洞

修补这些漏洞。

像       使用预编译语句,绑定变量。

           使用存储过程,使用安全的存储过程来对抗注入。

           检查数据类型

           使用安全函数

 数据库自身角度。用该使用最小权限原则,避免web应用直接使用root,dbowner等高级权限账户连接数据库。

其他注入攻击

xml注入,代码注入,CRLF注入("\r","\n");

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 随着当今世界网络技术与信息技术高速发展,Web应用程序具有界面统一,使用简单,易于维护,扩展性好,共享度高等优先。...
    高美丽阅读 9,500评论 0 4
  • Web安全简史 在Web1.0时代,人们更多是关注服务器端动态脚本语言的安全问题,比如将一个可执行脚本(俗称Web...
    潘良虎阅读 9,332评论 3 72
  • 第1章 我的安全世界观 ==互联网本来是安全的,因为有了研究安全的人所以才会不安全。== Web安全简史 “黑客”...
    岁月波澜不惊阅读 6,802评论 0 5
  • [SQL注入攻击] SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式...
    James黄杰阅读 7,706评论 0 30
  • 公司最近来了个SR(security architecture),推荐我们看下入门级的web安全。再加上最近刚培训...
    jaymz明阅读 9,572评论 0 3