第1章什么是SQL注入
1.1概述
1.2理解Web应用的工作原理
1.2.1一种简单的应用架构
1.2.2一种较复杂的架构
1.3理解SQL注入
1.4理解SQL注入的产生过程
1.4.1构造动态字符串
1.4.2不安全的数据库配置
1.5本章小结
1.6快速解决方案
1.7常见问题解答
第2章SQL注入测试
2.1概述
2.2寻找SQL注入
2.2.1借助推理进行测试
2.2.2数据库错误
2.2.3应用程序的响应
2.2.4SQL盲注
2.3确认SQL注入
2.3.1区分数字和字符串
2.3.2内联SQL注入
2.3.3终止式SQL注入
2.3.4时间延迟
2.4自动寻找SQL注入
2.5本章小结
2.6快速解决方案
2.7常见问题解答
第3章复查代码中的SQL注入
3.1概述
3.2复查源代码中的SQL注入
3.2.1危险的编码行为
3.2.2危险的函数
3.2.3跟踪数据
3.2.4复查Android应用程序代码
3.2.5复查PL/SQL和T-SQL代碣
3.3自动复查源代码
3.3.1Graudit
3.3.2YASCA
3.3.3Pixy
3.3.4AppCodeScan
3.3.50WASPLAPSE+项目
3.3.6MicrosofiSQL注入源代码分析器
3.3.7CAT.NET
3.3.8RIPS-PHP脚本漏洞的静态源代码分析器
3.3.9CodeProAnalytiX
3.3.10TeachableStaticAnalysisWbrkbench
3.3.11商业源代码复查工具
3.3.12Fortify源代码分析器
3.3.13RationaIAppScanSourceEdition
3.3.14CodeSecure
3.3.15KlocworkSolo
3.4本章小结
3.5快速解决方案
3.6常见问题解答
第4章利用SQL注入
4.1概述
4.2理解常见的漏洞利用技术
4.2.1使用堆叠查询
4.2.2在Web应用程序中利用Oracle漏洞
4.3识别数据库
4.3.1非盲跟踪
4.3.2盲跟踪
4.4使用UINON语句提取数据
4.4.1匹配列
4.4.2匹配数据类型
4.5使用条件语句
4.5.1方法1:基于时间
4.5.2方法2:基于错误
4.5.3方法3:基于内容
4.5.4处理字符串
4.5.5扩展攻击
4.5.6利用SQL注入错误
4.5.70racle中的错误消息
4.6枚举数据库模式
4.6.1SQLServer
4.6.2MySQL
4.6.3PostgreSQL
4.6.40raCle
4.7在INSERT查询中实施注入攻击
4.7.1第一种情形:插入用户规定的数据
4.7.2第二种情形:生成INSERT错误
4.7.3其他情形
4.8提升权限
4.8.1SQLServer
4.8.2在未打补丁的服务器上提升权限
4.8.3SYS.DBMS_CDC_PUBLISH
4.9窃取哈希口令
4.9.1SQLServer
4.9.2MySQL
4.9.3PostgreSQL
4.9.40mCle
4.10带外通信
4.10.1e.mail
4.10.2HTTP/DNS
4.10.3文件系统
4.11自动利用SQL注入
4.11.1Sqlmap
4.11.2BobCat
4.11.3BSQL
4.11.4其他工具
4.12本章小结
4.13快速解决方案
4.14常见问题解答
第5章SQL盲注利用
5.1概述
5.2寻找并确认SQL盲注
5.2.1强制产生通用错误
5.2.2注入带副作用的查询
5.2.3拆分与平衡
5.2.4常见的SQL盲注场景
5.2.5SQL盲注技术
5.3使用基于时间的技术
5.3.1延迟数据库查询
5.3.2基于时间的推断应考虑的问题
5.4使用基于响应的技术
5.4.1MySQL响应技术
5.4.2PostgreSQL响应技术
5.4.3SQLServer响应技术
5.4.4Oracle响应技术
5.4.5返回多位信息
5.5使用非主流通道
5.5.1数据库连接
5.5.2DNS渗漏
5.5.3e-mail渗漏
5.5.4HTTP渗漏
5.5.5ICMP渗漏
5.6自动SQL盲注利用
5.6.1AbSintlle
5.6.2BSQLHacker
5.6.3SQLBrute
5.6.4Sqlmap
5.6.5Sqlninja
5.6.6Squeeza
5.7本章小结
5.8快速解决方案
5.9常见问题解答
第6章利用操作系统
第7章高级话题
第8章代码层防御
第9章平台层防御
第10章确认并从SQL注入攻击中恢复
第11章参考资料