首页 > 代码库 > 《白帽子讲WEB安全》学习笔记之第7章 注入攻击

《白帽子讲WEB安全》学习笔记之第7章 注入攻击

第7章 注入攻击

SQL注入的两个条件:1,用户可以控制输入;2,原本执行的SQL语句并接了用户输入的数据。

7.1 sql注入

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

盲注:

盲注是在服务器没错误回显时完成的注入攻击。服务器没有错误回显,对于攻击者而言缺少了非常重要的“调式信息”,所以攻击者需要找一个一个方法来验证注入的SQL是否已经执行。

盲注是根据多给条件进行判断,如果页面没有出错则表示存在注入点。

7.2 数据库攻击技巧

在网站中使用存储过程并不常见,虽然使用存储过程可以提高执行效率。但是会出现移植问题。

数据库字符需要统一编码,最好为UTF-8

7.3 正确地防御sql注入

防御方法:

q  使用预编译语句

q  使用存储过程

q  检查数据类型

q  使用安全函数

7.4 其他注入攻击

XML注入

Xml注入是通过改写xml的数据内容来实现。XML通常用于存储数据,如果用户提供的数据是以XML的方式进行存储,那么对攻击者来说,注入额外的、攻击者可能不能正常控制的XML是有可能的。

代码注入:

jseval()

jsp:include

CRLF注入:

就是回车(CR, ASCII13, \r) 换行(LF, ASCII10, \n)

换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lfline feed的概念,意思是一样的。

这两个ACSII字符不会在屏幕有任何输出,但在Windows中广泛使用来标识一行的结束。而在Linux/UNIX系统中只有换行符。

CRLF组合在一起即。

这中“CRLF”攻击可以在东方红项目中测试一下。

对于防御这种注入攻击,最好的办法就是“数据与代码分离”


本文出自 “梦朝思夕” 博客,请务必保留此出处http://qiangmzsx.blog.51cto.com/2052549/1859551

《白帽子讲WEB安全》学习笔记之第7章 注入攻击