首页 > 代码库 > sql注入攻击与防御第二版读书笔记二——SQL注入测试

sql注入攻击与防御第二版读书笔记二——SQL注入测试

寻找SQL注入

该阶段的主要目标是识别服务器响应中的异常并确定是否由SQL注入漏洞产生,随后确定在服务器端运行的SQL查询的类型(select,update,insert或delete),以及将攻击代码注入查询中的位置(比如from,where或者order by等)

我们需要关注:get,post,cookie,host,referer,useragent。

理解并利用SQL注入漏洞所涉及的主要技术包括:在心里重建开发人员在Web应用中编写的代码以及设想远程SQL代码的内容。如果能想象出服务器正在执行的代码,就可以很明确的知道在哪里终止单引号以及从哪里开始添加单引号。

操纵参数

将参数改为应用未预料的值

添加单引号(‘)

将字符串或数字等价替换 例如:mysql中:bike 与 bi‘ ‘ke等价 在SQL Server中 bike与bi‘+‘ke等价 数字则用大数减小数 如果结果一样 就可能有注入

将字符串改成数字,或者反之

用and,or进行进一步确认

数据库错误

当用户请求触发数据库错误时,可能有以下几种反应

将SQL错误显示在页面上,它对Web浏览器用户可见。

将SQL错误隐藏在Web页面源代码中以便调试

检测到错误时跳转到另一个页面

返回HTTP错误代码500(内部服务器错误)或者HTTP重定向代码302

应用适当的处理错误但不显示结果,可能会显示一个通用的错误页面

SQL盲注

攻击者可以操纵SQL语句,应用会针对真假条件返回不同的值,但是攻击者无法检索查询结果。

内联SQL注入

数字或字符串等价替换

用 and or 测试

终止式SQL注入

注释字符

SQL Server ,Oracle,PostgreSQL  --(单行注释) /* */(多行注释)

MySQL -- (后接空格 单行注释)  #(单行注释) /* */(多行注释)

 

执行多条语句

SQL Server 6.0后的所有版本支持且允许执行下列语句:

select foo from bar; select foo2 from bar2;

MySQL4.1后也引入了该功能,但它在默认情况下并不支持该功能。

Oracle不支持多条语句。

时间延迟

SQL Server  ;waitfor delay ‘0:0:5‘;--

MySQL benchmark(1000000,encode(‘hello‘,‘mom‘))

 

sql注入攻击与防御第二版读书笔记二——SQL注入测试