目录 第1篇网络安全篇 第1章Web应用安全3 1.1环境搭建3 1.2SQL注入技术6 1.2.1SQL注入方式6 1.2.2SQL注入防护绕过技术12 1.2.3SQL注入防御手段15 1.3前端脚本安全16 1.3.1Web暴力破解16 1.3.2跨站脚本攻击21 1.3.3跨站请求伪造25 1.3.4防御手段27 1.4服务器端请求伪造攻击29 1.4.1SSRF协议利用29 1.4.2SSRF攻击方式30 1.4.3SSRF内网服务攻击31 1.4.4SSRF防御手段32 1.5文件操作攻击技术32 1.5.1不安全文件上传32 1.5.2不安全文件下载34 1.5.3任意文件包含漏洞35 1.6命令执行攻击技术37 1.6.1命令执行攻击方式37 1.6.2命令执行绕过技巧38 1.6.3命令执行防御手段39 1.7本章小结39 1.8课后练习40网络对抗演练目录第2章网络流量分析42 2.1网络协议分析基础42 2.1.1网络模型基础42 2.1.2IP地址和端口基础43 2.1.3HTTP协议基础46 2.2流量分析工具使用48 2.2.1信息统计48 2.2.2数据过滤49 2.2.3数据保存50 2.2.4数据搜索51 2.2.5数据还原51 2.2.6文件提取52 2.2.7内容提取53 2.3网络攻击流量取证53 2.3.1网络攻击流量的获取方式54 2.3.2网络攻击流量分析技巧54 2.4USB设备流量分析58 2.4.1键盘流量分析58 2.4.2鼠标流量分析61 2.5工控系统流量分析63 2.5.1Modbus协议分析63 2.5.2S7Comm协议分析64 2.5.3MMS协议分析67 2.6本章小结71 2.7课后练习71 第2篇系统安全篇 第3章逆向工程分析75 3.1逆向工程基础75 3.1.1逆向分析工具Ghidra75 3.1.2静态分析工具IDA Pro 80 3.1.3动态分析工具GDB83 3.2逆向脱壳分析90 3.2.1软件加壳原理90 3.2.2ESP定律脱壳法90 3.3逆向工程算法分析96 3.3.1逆向工程算法分析基础96 3.3.2逆向工程中的对称加密算法技术96 3.3.3逆向工程中的其他算法技术100 3.4二进制代码混淆102 3.5逆向工程高级技术实践 116 3.5.1约束求解简介及利用116 3.5.2符号执行122 3.5.3Hook技术简介及利用128 3.6本章小结130 3.7课后练习130 第4章移动应用安全131 4.1移动应用安全知识基础131 4.1.1APK文件结构131 4.1.2APK签名137 4.2移动安全工具简介138 4.2.1使用IDA Pro静态分析Android原生程序139 4.2.2程序入口分析法142 4.2.3信息反馈法146 4.2.4定位关键函数147 4.2.5使用JEB静态分析Android程序147 4.3动态分析150 4.3.1代码注入150 4.3.2调用栈追踪153 4.3.3使用JEB调试Android程序155 4.3.4使用IDA Pro调试Android原生程序157 4.4移动端中的Hook技术158 4.4.1Xposed Hook158 4.4.2Frida Hook163 4.4.3Fridatrace实践案例170 4.5移动端软件加固与脱壳172 4.5.1软件加固与脱壳实践——使用Frida175 4.5.2软件加固与脱壳实践——使用Xposed177 4.6本章小结180 4.7课后练习180 第5章软件漏洞挖掘181 5.1软件漏洞挖掘基本概念181 5.1.1程序内存分布及区段介绍181 5.1.2常用寄存器及其作用183 5.1.3常用工具命令介绍186 5.2栈溢出186 5.2.1栈的概念及特点186 5.2.2调用者规则187 5.2.3被调用者规则190 5.2.4栈溢出保护机制194 5.2.5栈溢出利用方式197 5.3格式化字符串204 5.3.1格式化字符串原理204 5.3.2格式化串漏洞读数据205 5.3.3格式化串漏洞写数据213 5.4堆溢出220 5.4.1堆内存管理概念220 5.4.2bins223 5.4.3堆分配策略226 5.4.4堆的利用方式229 5.5本章小结236 5.6课后练习236 第6章固件漏洞挖掘241 6.1常用工具和命令241 6.1.1常用工具241 6.1.2常用命令241 6.2固件常见提取方法242 6.2.1官网获取242 6.2.2更新流量抓取243 6.2.3转储固件 244 6.3文件系统及静态分析245 6.3.1文件系统提取245 6.3.2配置文件分析259 6.3.3静态分析文件260 6.4固件仿真及动态分析263 6.4.1仿真工具介绍263 6.4.2仿真环境搭建263 6.4.3动态分析固件264 6.5本章小结267 6.6课后练习267 第3篇密码学应用篇 第7章密码学应用基础271 7.1对称加密算法272 7.1.1一次性密码272 7.1.2序列密码274 7.1.3分组密码277 7.1.4哈希算法280 7.2公钥密码算法282 7.2.1公钥加密算法282 7.2.2密钥交换算法288 7.2.3签名算法291 7.2.4椭圆曲线算法293 7.3本章小结296 第8章区块链安全297 8.1智能合约环境搭建297 8.1.1Node.js环境安装298 8.1.2使用Hardhat部署智能合约299 8.1.3使用MetaMask管理账户301 8.2与智能合约交互304 8.2.1使用Solidity与合约交互305 8.2.2使用Python与合约交互311 8.2.3使用JavaScript与合约交互314 8.3智能合约常见攻击318 8.3.1整数溢出攻击318 8.3.2敏感信息泄露319 8.3.3委托调用漏洞321 8.3.4重入攻击322 8.3.5智能合约逆向324 8.4本章小结325 8.5课后练习325 第4篇应用安全篇 第9章隐写与隐写分析329 9.1隐写术介绍329 9.1.1隐写术概述329 9.1.2隐写术的应用场景329 9.1.3隐写术的分类330 9.2图片隐写331 9.2.1PNG隐写331 9.2.2JPG隐写337 9.2.3GIF隐写338 9.3音频隐写340 9.3.1MP3隐写340 9.3.2波形隐写341 9.3.3频谱隐写343 9.3.4LSB隐写344 9.4Office文件隐写344 9.4.1Word隐藏文字345 9.4.2Word/Excel隐藏文件345 9.4.3PDF隐写346 9.5压缩文件隐写348 9.5.1进制转换348 9.5.2图种349 9.5.3伪加密350 9.5.4暴力破解351 9.5.5明文攻击353 9.5.6CRC碰撞355 9.6本章小结355 9.7课后练习356 第10章攻击溯源技术357 10.1Windows日志分析358 10.1.1Windows日志审计类别358 10.1.2Windows常见日志事件358 10.1.3Windows日志审计方式363 10.2Linux日志分析365 10.2.1Linux常用日志365 10.2.2Linux日志分析工具365 10.2.3Linux日志审计方式365 10.3中间件日志分析368 10.3.1IIS日志分析368 10.3.2Apache日志分析369 10.3.3Nginx日志分析371 10.4数据库日志分析371 10.4.1MySQL错误日志371 10.4.2MySQL查询日志372 10.4.3MySQL二进制日志373 10.4.4MySQL暴力破解攻击日志分析373 10.5内存取证374 10.5.1数据提取374 10.5.2内存分析376 10.6本章小结378 10.7课后练习378 参考文献379