web应用程序对其数据采用几种不同的编码方案。
URL编码只允许使用US-ASCII字符集中的可打印字符。URL编码通常使用%为前缀,其后是两位十六进制ascii代码。渗透员需要对一些特别的字符进行编码,比如空格,%,&等。
Unicode编码是一种支持全世界所使用的各种编写系统而设计的字符编码标准,采用各种编码方案。编码通常用%u开头。
UTF-8同样使用%开头。需要注意的是,攻击web应用程序需要用到Unicode编码,主要在于用来破坏输入确认机制。如果输入过滤阻止了某些恶意表达式,但随后处理输入的组件识别Unicode编码就可以使用各种标准与Unicode编码避开过滤。
HTML编码是一种用于表示问题字符以其安全并入HTML文档的方案。通常使用&开头。
Base64编码通常用于与cookie类似的编码,一般使用64个字符表示,首先Base64编码会将输入数据转换成3个字节块,每块划分为4段,每段6个数据位。如果不能分为3段则补“=”,因此分辨此编码很容易。
十六进制编码是在许多二进制数据传送时使用的。
远程和序列化框架,主要作用在于通过这些API远程调用相关服务器端功能,对传送给上述功能的任何数据进行序列化。这些框架都让开发者在一定程度上忽略了web应用程序的分布式本质。后期也会分享一些这些框架带来的安全问题。
今日分享到此,下一次开始,将进入实战渗透。