字符#引发的对url编码的思考
0x00前言:
本人在刷sql—lab靶场盲注部分的时候,自己手敲的payload报错,于是我翻相关资料博客,发现使用#注释掉sql语句部分,需要进行url编码,才能顺利注释成功。
我猜测,是不是因为#这个字符在url中被认为是资源定位符,从而并没有达到注释效果引发的报错。
0x01URL编码的作用
1、会引起歧义:例如 URL 参数字符串中使用 key=value 这样的键值对形式来传参,键值对之间以 & 符号分隔,如postid=5038412&t=1450591802326,服务器会根据参数串的 & 和 = 对参数进行解析,如果 value 字符串中包含了 = 或者 & ,如宝洁公司的简称为P&G,假设需要当做参数去传递,那么可能URL所带参数可能会是这样 ?name=P&G&t=1450591802326,因为参数中多了一个&势必会造成接收 URL 的服务器解析错误,因此必须将引起歧义的 & 和 = 符号进行转义, 也就是对其进行编码。
2、非法字符:又如,URL 的编码格式采用的是 ASCII 码,而不是 Unicode,这也就是说你不能在 URL 中包含任何非 ASCII 字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。
0x02总结:
思考,猜测,查资料,最后疑惑搞懂,真的很爽!
勤于思考!

浙公网安备 33010602011771号