黑客攻防技术宝典web实战篇笔记3
Update date:
- &用于分隔URL查询字符串与消息主体中的参数。%26
- =用于分隔URL查询字符串与消息主体中每个参数的名称与值。 %3d
- ?用于标记URL查询字符串的其实位置。%3f
- 空格 用于再请求的第一行标记URL的结束位置,并可用于再cookie消息头中表示一个cookie值结束。 %20 或 +
- 因为 + 表示一个编码的空格,使用 %2b
- ; 用于再cookie消息头中分隔单个cookie。 %3b
- #用于再URL中标记片段标识符。如果浏览器URL中输入这个字符,它将会传送给服务器的URL阶段。 %23
- %在URL编码方案中作为前缀。 %25
- 空字节与换行符等非打印字符必须使用他的ASCII字符代码进行URL编码。%00 %0a
- 需要注意,再表单中输入URL编码的数据通常会导致浏览器执行另一层编码。
例如,再表单中提交 %00 可能会导致向服务器发送值%2500.为此,通常最好时再拦截代理服务器中查看最终请求。
|
|
SQL注入,包括所有的URL参数、cookie、POST数据项以及HTTP消息头。无论哪一种情况,相关参数名称与参数值的处理过车都可能存在漏洞。
注入字符串数据
1.提交一个单引号作为目标查询的数据。观察是否造成错误,或结果是否与原始结果不同。如果受到详细的错误消息,查阅9.2.13节
2.如果发现错误或其他异常行为,同时提交两个单引号,看会出现什么情况。数据库使用两个单引号作为转义序列,表示一个原义单引号(literal single quote),
因此这个序列被解释成引用字符串中的数据,而不是结束字符串的终止符。如果这个输入导致错误或异常行为消失,则应用程序可能易于受到SQL注入攻击。
3.为进一步核实漏洞是否存在,可以使用SQL连接符建立一个等同于“良性”输入的字符串。如果应用程序以与处理对应“良性”输入相同的方式处理专门设计的输入,
那么它很可能易于受到攻击。每种数据库使用的字符连接方法各不相同。在易受攻击的应用程序中,可以注入以下实例构建等同于FOO的输入:
Oracle: ‘||’FOO
MS-SQL: ‘+’FOO
MySQL: ‘空格’Foo
注入数字数据
1.尝试输入一个结果等于原始数字值的简单数学表达式。例如,如果原始值为2,尝试提交1+1 或3-1.如果应用程序做出相同的响应,则表示它易于受到攻击。
2.如果证实被修改的数据会对应用程序的行为造成明显影响,则前面描述的测试方法最为可靠。例如,如果应用程式使用数字化PageID参数指定应返回什么内容,
则用1+1代替2得到相同的结果明显表示存在SQL注入。但是,如果能够再数字化参数中插入任意输入,但