安全技术经典译从 SQL Injection Attacks and Defense SQL注入I攻击与防御 (美)Justin Clarke等著 唯一一本关于SOL注入攻击与防御的专业书籍. 黄晓磊李化译 理解、发现、利用和防御SOL注入的最佳指导 见解精辟,丰富、精彩的SOL注入示例及防御策路 作者多年长期实践经验的总结 ELSEVI 清华大学出版社
目 录 第1章什么是SQL注入 第3章复查代码中的SQL注入……71 1.1概述…… 3.1概述 ……72 1.2理解Web应用的工作原理……2 3.2复查源代码中的SQL注入……72 1.2.1一种简单的应用架构……3 3.2.1危险的编码行为……74 1.2.2一种较复杂的架构-……4 3.2.2危险的函数……79 1.3理解SQL注入……5 3.2.3跟踪数据……82 1.4理解SQL注入的产生过程……10 3.2.4复查PL/SQL和T-SQL代码…88 1.4.1构造动态字符串……10 3.3自动复查源代码……94 1.4.2不安全的数据库配置……16 3.3.1 YASCA……96 1.5本章小结……18 3.3.2 Pixy 96 1.6快速解决方案……18 3.3.3 AppCodeSca.........................7 1.7常见问题解答……19 3.3.4 LAPSE-….97 第2章SQL注入测试……21 3.3.5 SWAAT-…97 2.1概述 3.3.6 Microsoft SQL注入 ……22 2.2寻找SQL注入……22 源代码分析器……98 2.2.1借助推理进行测试……22 3.3.7 CAT.NET…98 2.2.2数据库错误……29 3.3.8 商业源代码复查工具……98 2.2.3应用响应……38 3.3.9 Ounce……99 2.2.4SQL盲注……-42 3.3.10 Fortify源代码分析器……100 2.3确认SQL注入……45 3.3.11 CodeSecure……100 3.4本章小结……100 2.3.1区分数字和字符串……46 3.5 2.3.2内联SQL注入……46 快速解决方案……101 2.3.3终止式SQL注入……51 3.6常见问题解答……102 2.3.4时间延迟……59 第4章利用SQL注入……105 2.4自动寻找SQL注入……60 4.1概述 ……106 2.5本章小结……68 4.2理解常见的利用技术……107 2.6快速解决方案……68 4.3识别数据库……108 2.7常见问题解答……69 4.3.1非盲跟踪……109
IV SQL注入攻击与防御 4.3.2育跟踪… …112 5.2.3拆分与平衡……173 4.4使用UINON语句提取数据……113 5.2.4常见的SQL盲注场景……175 4.4.1匹配列……114 5.2.5SQL盲注技术……176 4.4.2匹配数据类型……115 5.3使用基于时间的技术……183 4.5使用条件语句 ….…-119 5.3.1延迟数据库查询……183 4.5.1方法1:基于时间……120 5.3.2基于时间推断的考虑……188 4.5.2方法2:基于错误……122 5.4使用基于响应的技术……189 4.53方法3:基于内容…………123 5.4.1 MySQL响应技术……189 4.5.4处理字符串-……123 5.4.2 SQL Server响应技术…191 4.5.5扩展攻击……125 5.4.3 Oracle响应技术……192 4.5.6利用SQL注入错误……126 5.4.4返回多位信息……194 4.5.7 Oracle中的错误消息…128 5.5使用非主流通道……195 4.6枚举数据库模式……131 5.5.1数据库连接……195 4.6.1 SQL Server…131 5.5.2DNS渗漏-.…196 4.6.2 MySQL-136 5.5.3E-mail渗漏……200 4.6.3 Oracle……139 5.5.4HTTP渗漏……200 4.7提升权限……142 5.6自动SQL盲注利用…202 4.7.1 SQL Server…142 5.6.1 Absinth..............................203 4.7.2 Oracle…147 5.6.2 BSQL Hacker.......................204 4.8窃取哈希口令……148 5.6.3 SQLBrute............................206 4.8.1 SQL Server……149 5.6.4 Sqlninja…207 4.8.2 MySQL…150 5.6.5 Squeeza…208 4.8.3 Oracle…151 5.7本章小结……209 4.9带外通信……154 5.8快速解决方案……209 4.9.1E-mail……154 5.9常见问题解答……210 4.9.2 HTTP/DN..........................157 4.9.3文件系统……158 第6章利用操作系统……213 4.10自动利用SOL注入……161 6.1概述… ……214 4.10.1 Sqlmap161 6.2访问文件系统……215 4.10.2 Bobcat……164 6.2.1读文件……215 4.10.3BSQL-…164 6.2.2写文件……229 4.10.4其他工具……166 6.3执行操作系统命令………237 4.11本章小结……166 6.4巩固访问 ++ .………-243 4.12快速解决方案……167 6.5本章小结 ………245 4.13常见问题解答……168 6.6快速解决方案……245 6.7常见问题解答……246 第5章SQL盲注利用……171 6.8尾注……247 5.1概述 ……172 5.2寻找并确认SQL盲注……173 第7章高级话题……249 5.2.1强制产生通用错误……173 7.1概述…250 5.2.2注入带副作用的查询……173 7.2避开输入过滤器……250
目录V 7.2.1使用大小写变种……250 8.6.5创建数据库Honeypot……292 7.2.2使用SQL注释……250 8.6.6附加的安全开发资源……293 7.2.3使用URL编码……251 8.7本章小结 ....…293 7.2.4使用动态的查询执行……253 8.8 快速解决方案…294 7.2.5使用空字节…254 8.9 常见问题解答……295 7.2.6嵌套剥离后的表达式……255 7.2.7利用截断……255 第9章平台层防御…… …297 7.2.8避开自定义过滤器……257 9.1概述 …298 7.2.9使用非标准入口点……257 9.2使用运行时保护……298 7.3利用二阶SQL注入……259 9.2.1Web应用防火墙……-299 7.4使用混合攻击 ........263 9.2.2截断过滤器……304 7.4.1修改捕获的数据……263 9.2.3不可编辑的输入保护与 7.4.2创建跨站脚本……263 可编辑的输入保护……308 7,4.3在Oracle上运行操作 9.2.4URL策略/页面层策略……308 系统命令………264 9.2.5面向方面编程……309 7.4.4利用验证过的漏洞……………265 9.2.6应用入侵检测系统……310 7.5本章小结……265 9.2.7数据库防火墙……310 7.6快速解决方案……266 9.3确保数据库安全……310 7.7常见问题解答……267 9.3.1锁定应用数据……311 第8章代码层防御……269 9.3.2锁定数据库服务器……314 8.1概述 ……-270 9.4额外的部署考虑……316 8.2使用参数化语句 …………270 9.4.1最小化不必要信息的泄露……317 8.2.1Java中的参数化语句……271 9.4.2提高Web服务器日志 8.2.2NET(C#)中的参数化语句……272 的元余 …320 8.2.3PHP中的参数化语句……274 9.4.3在独立主机上部署Web 8.2.4PL/SQL中的参数化语句……275 服务器和数据库服务器……320 8.3输入验证……275 9.4.4配置网络访问控制……321 8.3.1白名单……276 9.5本章小结 …-321 8.3.2黑名单……277 9.6快速解决方案……321 8.3.3Java中的输入验证……278 9.7常见问题解答……322 8.3.4NET中的输入验证…………279 第10章参考资料……325 8.3.5PHP中的输入验证……280 10.1概述……326 8.4编码输出 ……280 10.2 SQL入门……326 8.5 规范化 …286 10.3SQL注入快速参考……331 8.6通过设计来避免SQL 10.3.1识别数据库平台……331 注入的危险……289 10.3.2 Microsoft SQL Server 8.6.1使用存储过程……289 备忘单……333 8.6.2使用抽象层……290 10.3.3 MySQL备忘单……338 8.6.3处理敏感数据……290 8.6.4避免明显的对象名……291 10.3.4 Oracle备忘单……341
VI SQL注入攻击与防御 10.4避开输入验证过滤器……346 10.6.4 Ingres备忘单……356 10.4.1引号过滤器……346 10.6.5 Microsoft Access-357 10.4.2HTTP编码……347 10.7资源-…357 10.5排查SQL注入攻击……348 10.7.1SQL注入白皮书……357 10.6其他平台上的SQL注入…351 10.7.2SQL注入备忘单……357 10.6.1 PostgreSQL备忘单……351 10.7.3SQL注入利用工具……357 10.6.2DB2备忘单……353 10.7.4口令破解工具……358 10.6.3 Informix备忘单……354 10.8快速解决方案……358