demo说明
初始请求:
url/?f=etc/passwd
在这里,我尝试通过URL参数f访问/etc/passwd文件,但服务器返回了403状态码,表示访问被禁止。这是因为Web应用防火墙(WAF)检测到请求试图访问敏感文件,因此拦截了该请求
Base64编码:为了绕过WAF的检测,我们对字符串/etc/passwd
进行了Base64编码。
url/?f=L2V0Yy9wYXNzd2Q=
该请求成功返回了200状态码,表明服务器已成功处理了该请求。
/etc/passwd的Base64编码结果是L2V0Yy9wYXNzd2Q=。
完整的请求变为:
详细解释
当直接请求 url/?f=etc/passwd 时,服务器检测到请求路径中包含敏感关键词(如etc/passwd),触发了WAF规则,返回403状态码,表示访问被禁止。这是WAF的一种常见防御措施,旨在阻止未经授权的文件访问。
Base64编码绕过技巧:
Base64是一种常用的编码方法,可以将二进制数据转换为ASCII字符串。由于WAF主要检测的是明文中的敏感关键词,Base64编码通常不会被WAF识别。
将/etc/passwd编码为Base64后的字符串是L2V0Yy9wYXNzd2Q=。
当使用Base64编码后的字符串发送请求时,WAF未能检测到敏感关键词,因此没有阻止该请求,服务器返回了200状态码。
举一反三,有些开发人员利用这个base64编码方式用在了URI上面,比如说挖SQL注入漏洞
的时候,可以尝试把一长串payload用base64编码,会有不一样的效果。