黑客攻防技术宝典-Web实战篇——第三章、Web应用程序技术(编码方案)

第三章、Web应用程序技术(编码方案

书接上回
不同的编码方案的研发是为了安全处理数据。
但是许多情况下,攻击者可以控制编码方案,造成开发者无法预料的行为。

URL编码

URL中只允许使用US-ASCII码的可打印字符(0x20-0x7e)。
ASCAII可打印字符图来自https://blog.csdn.net/qq_38769551/article/details/101459811

由于在URL或者HTTP协议中,在这个可打印字符范围中,还有一些字符不能用在URL中。所以就用URL编码方案对其编码,使其通过HTTP安全传输。
URL编码一般以 “%” 为前缀,后面跟上这个字符的十六进制ASCAII码。
常见编码字符:

  • %3d =
  • %25 %
  • %20 空格
  • %0a 新行
  • %00 空字节

当渗透人员提交HTTP请求时,必须对参数中的以上字符进行URL编码。

Unicode编码

是为支持全世界使用的字符编写系统,而设计的字符编码标准。

  • UTF-16:以 “%u” 作为前缀,后面跟上这个字符的十六进制Unicode码点
  • UTF-8:是一种长度可变的编码标准,它使用一个或者几个字节表示一个字符。以 **“%”**作为前缀,后面用十六进制表示每个字节。

攻击时利用Unicode编码来破坏确认机制。

HTML编码

HTML编码用于表示问题字符安全并入HTML文档的方案。 许多特殊字符用于定义文档结构而非内容,为了安全使用,所以对其进行HTML编码。
HTML编码定义了大量HTML实体来表示字面量字符,例如:

"  "
'  '
&   &
&lt;    <
&gt;    >

此外,任何字符都可以用十六进制与十进制的ASCII码进行HTML编码,例如

//十进制
&#34;     "
&#39;     '

//十六进制
&#x34;     "
&#x39;     '

HTML编码用于探查跨站点脚本攻击

Base64编码

仅用可打印的ASCII码就可表示任何二进制数据。
用于对邮件的附件编码,还可以用于用户验证机制中用户证书编码。
Base64将输入的数据转换为3个字节块,每个块被划分为4段,每段6个数据位。2^6=64,所以每段有64种排列组合。因此每一段可以用一组64个字符表示。
如果输入数据块最后不能构成3段,就用一个或者两个“=”号补足。
在这里插入图片描述

十六进制编码

许多程序传输二进制数据时直接使用十六进制编码。用ASCII字符表示十六进制数据块。

最后想要编码解码的话百度有很多,自行搜索。

下一章

之前的文章对web应用程序基础进行学习,下面开始研究如何渗透攻击
下一章要学习目标应用程序的内容,功能,工作原理,防御机制及其使用的技术。
解析应用程序

发布了8 篇原创文章 · 获赞 11 · 访问量 4846

猜你喜欢

转载自blog.csdn.net/wwwmeymar/article/details/104117023